H3 Index
H3 é um sistema de indexação geográfica em que a superfície da Terra é dividida em uma grade de células hexagonais uniformes. Esse sistema é hierárquico, ou seja, cada hexágono no nível superior ("pai") pode ser dividido em sete outros hexágonos uniformes, porém menores ("filhos"), e assim por diante.
O nível da hierarquia é chamado de resolution e pode assumir um valor de 0 a 15, em que 0 é o nível base, com as células maiores e menos detalhadas.
Um par de latitude e longitude pode ser transformado em um índice H3 de 64 bits, que identifica uma célula da grade.
O índice H3 é usado principalmente para agrupar localizações e realizar outras manipulações geoespaciais.
A descrição completa do sistema H3 está disponível no site de Engenharia da Uber.
h3IsValid
Verifica se o número é um índice H3 válido.
Sintaxe
h3IsValid(h3index)Parâmetro
h3index— Número do índice hexagonal. UInt64.
Valores retornados
Exemplo
SELECT h3IsValid(630814730351855103) AS h3IsValid;┌─h3IsValid─┐
│ 1 │
└───────────┘h3GetResolution
Define a resolução do índice H3 informado.
Sintaxe
h3GetResolution(h3index)Parâmetro
h3index— Número do índice hexagonal. UInt64.
Valores retornados
- Resolução do índice. Intervalo:
[0, 15]. UInt8. - Se o índice não for válido, a função retornará um valor aleatório. Use h3IsValid para verificar o índice. UInt8.
Exemplo
SELECT h3GetResolution(639821929606596015) AS resolution;┌─resolution─┐
│ 14 │
└────────────┘h3EdgeAngle
Calcula o comprimento médio de uma aresta de um hexágono H3, em graus.
Sintaxe
h3EdgeAngle(resolution)Parâmetro
resolution— Resolução do índice. UInt8. Intervalo:[0, 15].
Valores retornados
Exemplo
SELECT h3EdgeAngle(10) AS edgeAngle;┌───────h3EdgeAngle(10)─┐
│ 0.0005927224846720883 │
└───────────────────────┘h3EdgeLengthM
Calcula o comprimento médio da aresta de um hexágono H3, em metros.
Sintaxe
h3EdgeLengthM(resolution)Parâmetro
resolution— Resolução do índice. UInt8. Intervalo:[0, 15].
Valores retornados
Exemplo
SELECT h3EdgeLengthM(15) AS edgeLengthM;┌─edgeLengthM─┐
│ 0.509713273 │
└─────────────┘h3EdgeLengthKm
Calcula o comprimento médio da aresta de um hexágono H3, em quilômetros.
Sintaxe
h3EdgeLengthKm(resolution)Parâmetro
resolution— Resolução do índice. UInt8. Intervalo:[0, 15].
Valores retornados
Exemplo
SELECT h3EdgeLengthKm(15) AS edgeLengthKm;┌─edgeLengthKm─┐
│ 0.000509713 │
└──────────────┘geoToH3
Retorna H3 o índice do ponto (lat, lon) com a resolução especificada.
Sintaxe
geoToH3(lat, lon, resolution)Argumentos
lat— Latitude. Float64.lon— Longitude. Float64.resolution— Resolução do índice. Intervalo:[0, 15]. UInt8.
Valores retornados
Observação: no ClickHouse v25.4 ou anterior, geoToH3() recebe os valores na ordem (lon, lat). A partir do ClickHouse v25.5, os valores de entrada seguem a ordem (lat, lon). O comportamento anterior pode ser restaurado usando a configuração geotoh3_argument_order = 'lon_lat'.
Exemplo
SELECT geoToH3(55.71290588, 37.79506683, 15) AS h3Index;┌────────────h3Index─┐
│ 644325524701193974 │
└────────────────────┘h3ToGeo
Retorna a latitude e a longitude do centróide correspondentes ao índice H3 informado.
Sintaxe
h3ToGeo(h3Index)Argumentos
h3Index— índice H3. UInt64.
Valores retornados
- Uma tupla composta por dois valores:
tuple(lat,lon).lat— Latitude. Float64.lon— Longitude. Float64.
Observação: no ClickHouse v24.12 ou anterior, h3ToGeo() retorna os valores na ordem (lon, lat). A partir do ClickHouse v25.1, os valores retornados ficam na ordem (lat, lon). O comportamento anterior pode ser restaurado usando a configuração h3togeo_lon_lat_result_order = true.
Exemplo
SELECT h3ToGeo(644325524701193974) AS coordinates;┌─coordinates───────────────────────────┐
│ (55.71290243145668,37.79506616830252) │
└───────────────────────────────────────┘h3ToGeoBoundary
Retorna um array de pares (lat, lon), que correspondem ao contorno do índice H3 fornecido.
Sintaxe
h3ToGeoBoundary(h3Index)Argumentos
h3Index— índice H3. UInt64.
Valores retornados
Exemplo
SELECT h3ToGeoBoundary(644325524701193974) AS coordinates;┌─h3ToGeoBoundary(599686042433355775)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [(37.2713558667319,-121.91508032705622),(37.353926450852256,-121.8622232890249),(37.42834118609435,-121.92354999630156),(37.42012867767779,-122.03773496427027),(37.33755608435299,-122.090428929044),(37.26319797461824,-122.02910130919001)] │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘h3kRing
Lista todos os hexágonos H3 em um raio de k do hexágono fornecido, em ordem aleatória.
Sintaxe
h3kRing(h3index, k)Argumentos
Valores retornados
Exemplo
SELECT arrayJoin(h3kRing(644325529233966508, 1)) AS h3index;┌────────────h3index─┐
│ 644325529233966508 │
│ 644325529233966497 │
│ 644325529233966510 │
│ 644325529233966504 │
│ 644325529233966509 │
│ 644325529233966355 │
│ 644325529233966354 │
└────────────────────┘h3PolygonToCells
Retorna os hexágonos (na resolução especificada) contidos na geometria fornecida, seja um ring ou um (multi-)polygon.
Sintaxe
h3PolygonToCells(geometry, resolution)Argumentos
geometrypode ser um dos seguintes Tipos de dados Geo ou seus tipos primitivos subjacentes:resolution— Resolução do índice. Intervalo:[0, 15]. UInt8.
Valores retornados
Exemplo
SELECT h3PolygonToCells([(-122.4089866999972145,37.813318999983238),(-122.3544736999993603,37.7198061999978478),(-122.4798767000009008,37.8151571999998453)], 7) AS h3index;┌────────────h3index─┐
│ 608692970769612799 │
│ 608692971927240703 │
│ 608692970585063423 │
│ 608692970819944447 │
│ 608692970719281151 │
│ 608692970752835583 │
│ 608692972027903999 │
└────────────────────┘h3PolygonToCellsWithContainment
Retorna os hexágonos (na resolução especificada) que cobrem a geometria fornecida, seja um anel ou um (multi)polígono, usando os modos experimentais de contenção do H3.
Esta função associa as flags aos modos de contenção do H3:
0—CONTAINMENT_CENTER1—CONTAINMENT_FULL2—CONTAINMENT_OVERLAPPING3—CONTAINMENT_OVERLAPPING_BBOX
Sintaxe
h3PolygonToCellsWithContainment(geometry, resolution, flags)Argumentos
geometrypode ser um dos seguintes Tipos de Dados Geo ou seus respectivos tipos primitivos:resolution— Resolução do índice. Intervalo:[0, 15]. UInt8.flags— Modo de contenção. Intervalo:[0, 3]. Use literais inteiros como0,1,2e3, ou valores UInt32 (por exemplo,toUInt32(2)). Os valores são passados para a API H3 comoUInt32. Outros tipos inteiros nativos são convertidos com exatidão.
Valores retornados
Exemplo
SELECT
h3PolygonToCellsWithContainment([(-122.4089866999972145, 37.813318999983238), (-122.3544736999993603, 37.7198061999978478), (-122.4798767000009008, 37.8151571999998453)], 7, 0) AS center_cells,
h3PolygonToCellsWithContainment([(-122.4089866999972145, 37.813318999983238), (-122.3544736999993603, 37.7198061999978478), (-122.4798767000009008, 37.8151571999998453)], 7, 2) AS overlap_cells; ┌─center_cells───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─overlap_cells──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
1. │ [608692970585063423,608692970719281151,608692970752835583,608692970769612799,608692970819944447,608692971927240703,608692972027903999] │ [608692970249519103,608692970266296319,608692970585063423,608692970601840639,608692970635395071,608692970685726719,608692970719281151,608692970736058367,608692970752835583,608692970769612799,608692970786390015,608692970819944447,608692971927240703,608692971994349567,608692972027903999] │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘h3GetBaseCell
Retorna o número da célula-base do índice H3.
Sintaxe
h3GetBaseCell(index)Parâmetro
index— número do índice hexagonal. UInt64.
Valor retornado
- Número da célula-base do hexágono. UInt8.
Exemplo
SELECT h3GetBaseCell(612916788725809151) AS basecell;┌─basecell─┐
│ 12 │
└──────────┘h3HexAreaM2
Retorna a área média do hexágono em metros quadrados na resolução informada.
Sintaxe
h3HexAreaM2(resolution)Parâmetro
resolution— Resolução do índice. Intervalo:[0, 15]. UInt8.
Valor retornado
- Área em metros quadrados. Float64.
Exemplo
SELECT h3HexAreaM2(13) AS area;┌─area─┐
│ 43.9 │
└──────┘h3HexAreaKm2
Retorna a área média de um hexágono em quilômetros quadrados na resolução especificada.
Sintaxe
h3HexAreaKm2(resolution)Parâmetro
resolution— Resolução do índice. Faixa:[0, 15]. UInt8.
Valor retornado
- Área em quilômetros quadrados. Float64.
Exemplo
SELECT h3HexAreaKm2(13) AS area;┌──────area─┐
│ 0.0000439 │
└───────────┘h3IndexesAreNeighbors
Retorna se os H3 índices fornecidos são vizinhos.
Sintaxe
h3IndexesAreNeighbors(index1, index2)Argumentos
Valor retornado
Exemplo
SELECT h3IndexesAreNeighbors(617420388351344639, 617420388352655359) AS n;┌─n─┐
│ 1 │
└───┘h3ToChildren
Retorna um array com os índices filhos do índice H3 informado.
Sintaxe
h3ToChildren(index, resolution)Argumentos
index— Número do índice hexagonal. UInt64.resolution— Resolução do índice. Intervalo:[0, 15]. UInt8.
Valores retornados
Exemplo
SELECT h3ToChildren(599405990164561919, 6) AS children;┌─children───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [603909588852408319,603909588986626047,603909589120843775,603909589255061503,603909589389279231,603909589523496959,603909589657714687] │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘h3ToParent
Retorna o índice pai (de resolução mais baixa) que contém o índice H3 informado.
Sintaxe
h3ToParent(index, resolution)Argumentos
index— número do índice hexagonal. UInt64.resolution— Resolução do índice. Intervalo:[0, 15]. UInt8.
Valor retornado
- Índice H3 pai. UInt64.
Exemplo
SELECT h3ToParent(599405990164561919, 3) AS parent;┌─────────────parent─┐
│ 590398848891879423 │
└────────────────────┘h3ToString
Converte a representação H3Index do índice em sua representação textual.
h3ToString(index)Parâmetro
index— Número do índice hexagonal. UInt64.
Valor retornado
- Representação textual do índice H3. String.
Exemplo
SELECT h3ToString(617420388352917503) AS h3_string;┌─h3_string───────┐
│ 89184926cdbffff │
└─────────────────┘stringToH3
Converte a representação textual em H3Index (UInt64).
Sintaxe
stringToH3(index_str)Parâmetro
index_str— Representação textual do índice H3. String.
Valor retornado
- Número do índice hexagonal. Retorna 0 em caso de erro. UInt64.
Exemplo
SELECT stringToH3('89184926cc3ffff') AS index;┌──────────────index─┐
│ 617420388351344639 │
└────────────────────┘h3GetResolution
Retorna a resolução do índice H3.
Sintaxe
h3GetResolution(index)Parâmetro
index— Número do índice hexagonal. UInt64.
Valor retornado
- Resolução do índice. Intervalo:
[0, 15]. UInt8.
Exemplo
SELECT h3GetResolution(617420388352917503) AS res;┌─res─┐
│ 9 │
└─────┘h3IsResClassIII
Retorna se o índice H3 tem uma resolução de orientação Classe III.
Sintaxe
h3IsResClassIII(index)Parâmetro
index— Número do índice hexagonal. UInt64.
Valor retornado
1— O índice tem resolução com orientação de Classe III. UInt8.0— O índice não tem resolução com orientação de Classe III. UInt8.
Exemplo
SELECT h3IsResClassIII(617420388352917503) AS res;┌─res─┐
│ 1 │
└─────┘h3IsPentagon
Retorna se este índice H3 corresponde a uma célula pentagonal.
Sintaxe
h3IsPentagon(index)Parâmetro
index— Número do índice hexagonal. UInt64.
Valor retornado
1— O índice representa uma célula pentagonal. UInt8.0— O índice não representa uma célula pentagonal. UInt8.
Exemplo
SELECT h3IsPentagon(644721767722457330) AS pentagon;┌─pentagon─┐
│ 0 │
└──────────┘h3GetFaces
Retorna as faces do icosaedro que são intersectadas por um determinado índice H3.
Sintaxe
h3GetFaces(index)Parâmetro
index— Número do índice do hexágono. UInt64.
Valores retornados
- Array contendo as faces do icosaedro que têm interseção com um determinado índice H3. Array(UInt64).
Exemplo
SELECT h3GetFaces(599686042433355775) AS faces;┌─faces─┐
│ [7] │
└───────┘h3CellAreaM2
Retorna a área exata, em metros quadrados, de uma célula específica correspondente ao índice H3 informado.
Sintaxe
h3CellAreaM2(index)Parâmetro
index— Número do índice do hexágono. UInt64.
Valor retornado
- Área da célula em metros quadrados. Float64.
Exemplo
SELECT h3CellAreaM2(579205133326352383) AS area;┌───────────────area─┐
│ 4106166334463.9233 │
└────────────────────┘h3CellAreaRads2
Retorna a área exata de uma célula específica em radianos quadrados correspondente ao índice H3 informado.
Sintaxe
h3CellAreaRads2(index)Parâmetro
index— Número do índice do hexágono. UInt64.
Valor retornado
- Área da célula em radianos ao quadrado. Float64.
Exemplo
SELECT h3CellAreaRads2(579205133326352383) AS area;┌────────────────area─┐
│ 0.10116268528089567 │
└─────────────────────┘h3ToCenterChild
Retorna o índice H3 filho central (mais refinado) contido no H3 especificado, na resolução informada.
Sintaxe
h3ToCenterChild(index, resolution)Parâmetro
index— Número do índice do hexágono. UInt64.resolution— Resolução do índice. Intervalo:[0, 15]. UInt8.
Valores retornados
Exemplo
SELECT h3ToCenterChild(577023702256844799,1) AS centerToChild;┌──────centerToChild─┐
│ 581496515558637567 │
└────────────────────┘h3ExactEdgeLengthM
Retorna o comprimento exato da aresta unidirecional representada pelo índice H3 de entrada, em metros.
Sintaxe
h3ExactEdgeLengthM(index)Parâmetro
index— Número do índice do hexágono. UInt64.
Valor retornado
- Comprimento exato da aresta em metros. Float64.
Exemplo
SELECT round(h3ExactEdgeLengthM(1310277011704381439), 6) AS exactEdgeLengthM;┌─exactEdgeLengthM─┐
│ 195449.631634 │
└──────────────────┘h3ExactEdgeLengthKm
Retorna o comprimento exato da aresta unidirecional representada pelo índice H3 informado, em quilômetros.
Sintaxe
h3ExactEdgeLengthKm(index)Parâmetro
index— Número do índice do hexágono. UInt64.
Valor retornado
- Comprimento exato da aresta em quilômetros. Float64.
Exemplo
SELECT round(h3ExactEdgeLengthKm(1310277011704381439), 8) AS exactEdgeLengthKm;┌─exactEdgeLengthKm─┐
│ 195.44963163 │
└───────────────────┘h3ExactEdgeLengthRads
Retorna o comprimento exato da aresta unidirecional representada pelo índice H3 informado, em radianos.
Sintaxe
h3ExactEdgeLengthRads(index)Parâmetro
index— Número do índice do hexágono. UInt64.
Valor de retorno
- Comprimento exato da aresta, em radianos. Float64.
Exemplo
SELECT round(h3ExactEdgeLengthRads(1310277011704381439), 12) AS exactEdgeLengthRads;┌─exactEdgeLengthRads─┐
│ 0.030677980119 │
└─────────────────────┘h3NumHexagons
Retorna o número de índices H3 únicos na resolução especificada.
Sintaxe
h3NumHexagons(resolution)Parâmetro
resolution— Resolução do índice. Intervalo:[0, 15]. UInt8.
Valor retornado
- Número de índices H3. Int64.
Exemplo
SELECT h3NumHexagons(3) AS numHexagons;┌─numHexagons─┐
│ 41162 │
└─────────────┘h3PointDistM
Retorna a distância de "grande círculo" ou "haversine" entre pares de pontos GeoCoord (latitude/longitude), em metros.
Sintaxe
h3PointDistM(lat1, lon1, lat2, lon2)Argumentos
lat1,lon1— Latitude e longitude do ponto 1 em graus. Float64.lat2,lon2— Latitude e longitude do ponto 2 em graus. Float64.
Valores retornados
- Distância haversine, ou de grande círculo, em metros.Float64.
Exemplo
SELECT h3PointDistM(-10.0 ,0.0, 10.0, 0.0) AS h3PointDistM;┌───────h3PointDistM─┐
│ 2223901.0395045886 │
└────────────────────┘h3PointDistKm
Retorna a distância de "grande círculo" ou "haversine" entre pares de pontos GeoCoord (latitude/longitude), em quilômetros.
Sintaxe
h3PointDistKm(lat1, lon1, lat2, lon2)Argumentos
lat1,lon1— Latitude e longitude do ponto 1, em graus. Float64.lat2,lon2— Latitude e longitude do ponto 2, em graus. Float64.
Valores retornados
- Distância de Haversine ou de grande círculo, em quilômetros. Float64.
Exemplo
SELECT h3PointDistKm(-10.0 ,0.0, 10.0, 0.0) AS h3PointDistKm;┌──────h3PointDistKm─┐
│ 2223.9010395045884 │
└────────────────────┘h3PointDistRads
Retorna a distância de "grande círculo" ou "haversine" entre pares de pontos GeoCoord (latitude/longitude), em radianos.
Sintaxe
h3PointDistRads(lat1, lon1, lat2, lon2)Argumentos
lat1,lon1— Latitude e longitude do ponto 1 em graus. Float64.lat2,lon2— Latitude e longitude do ponto 2 em graus. Float64.
Valores retornados
- Distância haversine ou de grande círculo em radianos. Float64.
Exemplo
SELECT h3PointDistRads(-10.0 ,0.0, 10.0, 0.0) AS h3PointDistRads;┌────h3PointDistRads─┐
│ 0.3490658503988659 │
└────────────────────┘h3GetRes0Indexes
Retorna um array com todos os índices H3 de resolução 0.
Sintaxe
h3GetRes0Indexes()Valores retornados
Exemplo
SELECT h3GetRes0Indexes AS indexes ;┌─indexes─────────────────────────────────────┐
│ [576495936675512319,576531121047601151,....]│
└─────────────────────────────────────────────┘h3GetPentagonIndexes
Retorna todos os índices H3 pentagonais na resolução especificada.
Sintaxe
h3GetPentagonIndexes(resolution)Parâmetro
resolution— Resolução do índice. Intervalo:[0, 15]. UInt8.
Valor retornado
Exemplo
SELECT h3GetPentagonIndexes(3) AS indexes;┌─indexes────────────────────────────────────────────────────────┐
│ [590112357393367039,590464201114255359,590816044835143679,...] │
└────────────────────────────────────────────────────────────────┘h3Line
Retorna a linha de índices entre os dois índices informados.
Sintaxe
h3Line(start,end)Parâmetro
start— Número do índice H3 que representa um ponto inicial. UInt64.end— Número do índice H3 que representa um ponto final. UInt64.
Valor retornado
Array de índices H3 que representa a linha de índices entre os dois índices fornecidos. Array(UInt64).
Exemplo
SELECT h3Line(590080540275638271,590103561300344831) AS indexes;┌─indexes────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [590080540275638271,590080471556161535,590080883873021951,590106516237844479,590104385934065663,590103630019821567,590103561300344831] │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘h3Distance
Retorna a distância em células de grade entre os dois índices fornecidos.
Sintaxe
h3Distance(start,end)Parâmetro
start— Número do índice do hexágono que representa o ponto inicial. UInt64.end— Número do índice do hexágono que representa o ponto final. UInt64.
Valor retornado
- Número de células da grade. Int64.
Retorna um número negativo se o cálculo da distância falhar.
Exemplo
SELECT h3Distance(590080540275638271,590103561300344831) AS distance;┌─distance─┐
│ 6 │
└──────────┘h3HexRing
Retorna os índices do anel hexagonal centrado no h3Index de origem fornecido, com comprimento k.
Retorna 0 se não houver distorção pentagonal.
Sintaxe
h3HexRing(index, k)Parâmetro
Valores retornados
Exemplo
SELECT h3HexRing(590080540275638271, toUInt16(1)) AS hexRing;┌─hexRing─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [590080815153545215,590080471556161535,590080677714591743,590077585338138623,590077447899185151,590079509483487231] │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘h3GetUnidirectionalEdge
Retorna um índice H3 de aresta unidirecional para dois índices de células H3 adjacentes (origem e destino). Lança uma exceção se uma das entradas não for uma célula H3 válida (controlado pela configuração functions_h3_default_if_invalid). Para células válidas que não são vizinhas (incluindo a mesma célula duas vezes), retorna 0.
Sintaxe
h3GetUnidirectionalEdge(originIndex, destinationIndex)Parâmetro
originIndex— Número do índice do hexágono de origem. UInt64.destinationIndex— Número do índice do hexágono de destino. UInt64.
Valor retornado
- Número do índice do hexágono da aresta unidirecional. UInt64.
Exemplo
SELECT h3GetUnidirectionalEdge(599686042433355775, 599686043507097599) AS edge;┌────────────────edge─┐
│ 1248204388774707199 │
└─────────────────────┘h3UnidirectionalEdgeIsValid
Determina se o H3Index fornecido é um índice de aresta unidirecional válido. Retorna 1 se for uma aresta unidirecional e 0 caso contrário.
Sintaxe
h3UnidirectionalEdgeIsValid(index)Parâmetro
index— Número de índice do hexágono. UInt64.
Valor retornado
- 1 — O índice H3 é uma aresta unidirecional válida. UInt8.
- 0 — O índice H3 não é uma aresta unidirecional válida. UInt8.
Exemplo
SELECT h3UnidirectionalEdgeIsValid(1248204388774707199) AS validOrNot;┌─validOrNot─┐
│ 1 │
└────────────┘h3GetOriginIndexFromUnidirectionalEdge
Retorna o índice do hexágono de origem da aresta unidirecional H3Index. Lança uma exceção se a entrada não for uma aresta direcionada válida (conforme controlado pela configuração functions_h3_default_if_invalid); retorna 0 somente quando essa configuração estiver habilitada.
Sintaxe
h3GetOriginIndexFromUnidirectionalEdge(edge)Parâmetro
edge— Número do índice do hexágono que representa uma aresta unidirecional. UInt64.
Valor retornado
- Número do índice do hexágono de origem. UInt64.
- Lança
INCORRECT_DATApara arestas direcionadas inválidas por padrão; retorna0quandofunctions_h3_default_if_invalid = 1.
Exemplo
SELECT h3GetOriginIndexFromUnidirectionalEdge(1248204388774707199) AS origin;┌─────────────origin─┐
│ 599686042433355775 │
└────────────────────┘h3GetDestinationIndexFromUnidirectionalEdge
Retorna o índice do hexágono de destino da aresta unidirecional H3Index. Lança uma exceção se a entrada não for uma aresta direcionada válida (controlado pela configuração functions_h3_default_if_invalid); retorna 0 somente quando essa configuração estiver habilitada.
Sintaxe
h3GetDestinationIndexFromUnidirectionalEdge(edge)Parâmetro
edge— Número do índice do hexágono que representa uma aresta unidirecional. UInt64.
Valor retornado
- Número do índice do hexágono de destino. UInt64.
- Lança
INCORRECT_DATApara arestas direcionadas inválidas por padrão; retorna0quandofunctions_h3_default_if_invalid = 1.
Exemplo
SELECT h3GetDestinationIndexFromUnidirectionalEdge(1248204388774707199) AS destination;┌────────destination─┐
│ 599686043507097599 │
└────────────────────┘h3GetIndexesFromUnidirectionalEdge
Retorna os índices dos hexágonos de origem e de destino a partir da aresta unidirecional H3Index fornecida.
Sintaxe
h3GetIndexesFromUnidirectionalEdge(edge)Parâmetro
edge— Número do índice do hexágono que representa uma aresta unidirecional. UInt64.
Valor retornado
Uma tupla composta por dois valores tuple(origin,destination):
origin— Número do índice do hexágono de origem. UInt64.destination— Número do índice do hexágono de destino. UInt64.
Lança uma exceção se a entrada fornecida não for uma aresta direcionada válida (conforme controlado pela configuração functions_h3_default_if_invalid); retorna (0,0) somente quando essa configuração está habilitada.
Exemplo
SELECT h3GetIndexesFromUnidirectionalEdge(1248204388774707199) AS indexes;┌─indexes─────────────────────────────────┐
│ (599686042433355775,599686043507097599) │
└─────────────────────────────────────────┘h3GetUnidirectionalEdgesFromHexagon
Retorna todas as arestas unidirecionais do H3Index fornecido. Lança uma exceção se a entrada não for uma célula H3 válida (controlado pela configuração functions_h3_default_if_invalid); retorna um array vazio somente quando essa configuração está habilitada.
Sintaxe
h3GetUnidirectionalEdgesFromHexagon(index)Parâmetro
index— Número do índice do hexágono que representa uma célula. UInt64.
Valor retornado
- Array de índices H3 que representam cada aresta unidirecional. Array(UInt64).
- Lança
INCORRECT_DATApara células inválidas por padrão; retorna[]quandofunctions_h3_default_if_invalid = 1.
Exemplo
SELECT h3GetUnidirectionalEdgesFromHexagon(599686042433355775) AS edges;┌─edges─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [1248204388774707199,1320261982812635135,1392319576850563071,1464377170888491007,1536434764926418943,1608492358964346879] │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘h3GetUnidirectionalEdgeBoundary
Retorna as coordenadas que definem a aresta unidirecional. Lança uma exceção se a entrada não for uma aresta direcionada válida (conforme controlado pela configuração functions_h3_default_if_invalid); retorna um array vazio apenas quando essa configuração está habilitada.
Sintaxe
h3GetUnidirectionalEdgeBoundary(index)Parâmetro
index— Número do índice do hexágono que representa uma aresta unidirecional. UInt64.
Valor retornado
- Array de pares '(lat, lon)'. Array(Float64, Float64).
- Lança
INCORRECT_DATApara arestas direcionadas inválidas por padrão; retorna[]quandofunctions_h3_default_if_invalid = 1.
Exemplo
SELECT h3GetUnidirectionalEdgeBoundary(1248204388774707199) AS boundary;┌─boundary────────────────────────────────────────────────────────────────────────┐
│ [(37.42012867767779,-122.03773496427027),(37.33755608435299,-122.090428929044)] │
└─────────────────────────────────────────────────────────────────────────────────┘