Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Funções para trabalhar com índices H3

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

  • 1 — O número é um índice H3 válido. UInt8.
  • 0 — O número não é um índice H3 válido. UInt8.

Exemplo

Querysql
SELECT h3IsValid(630814730351855103) AS h3IsValid;
Responsetext
┌─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

Querysql
SELECT h3GetResolution(639821929606596015) AS resolution;
Responsetext
┌─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

  • O comprimento médio da aresta de um hexágono H3, em graus. Float64.

Exemplo

Querysql
SELECT h3EdgeAngle(10) AS edgeAngle;
Responsetext
┌───────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

  • O comprimento médio da aresta de um hexágono H3, em metros. Float64.

Exemplo

Querysql
SELECT h3EdgeLengthM(15) AS edgeLengthM;
Responsetext
┌─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

  • O comprimento médio da aresta de um hexágono H3, em quilômetros. Float64.

Exemplo

Querysql
SELECT h3EdgeLengthKm(15) AS edgeLengthKm;
Responsetext
┌─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

  • Número do índice hexagonal. UInt64.
  • 0 em caso de erro. UInt64.

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

Querysql
SELECT geoToH3(55.71290588, 37.79506683, 15) AS h3Index;
Responsetext
┌────────────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

Querysql
SELECT h3ToGeo(644325524701193974) AS coordinates;
Responsetext
┌─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

Querysql
SELECT h3ToGeoBoundary(644325524701193974) AS coordinates;
Responsetext
┌─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

  • h3index — Número do índice hexagonal. UInt64.
  • k — Raio. inteiro

Valores retornados

Exemplo

Querysql
SELECT arrayJoin(h3kRing(644325529233966508, 1)) AS h3index;
Responsetext
┌────────────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

Valores retornados

Exemplo

Querysql
SELECT h3PolygonToCells([(-122.4089866999972145,37.813318999983238),(-122.3544736999993603,37.7198061999978478),(-122.4798767000009008,37.8151571999998453)], 7) AS h3index;
Responsetext
┌────────────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:

  • 0CONTAINMENT_CENTER
  • 1CONTAINMENT_FULL
  • 2CONTAINMENT_OVERLAPPING
  • 3CONTAINMENT_OVERLAPPING_BBOX

Sintaxe

h3PolygonToCellsWithContainment(geometry, resolution, flags)

Argumentos

  • geometry pode 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 como 0, 1, 2 e 3, ou valores UInt32 (por exemplo, toUInt32(2)). Os valores são passados para a API H3 como UInt32. Outros tipos inteiros nativos são convertidos com exatidão.

Valores retornados

  • Array de índices H3 de acordo com o modo de contenção selecionado. Array(UInt64).

Exemplo

Querysql
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;
Responsetext
   ┌─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

Querysql
SELECT h3GetBaseCell(612916788725809151) AS basecell;
Responsetext
┌─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

Querysql
SELECT h3HexAreaM2(13) AS area;
Responsetext
┌─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

Querysql
SELECT h3HexAreaKm2(13) AS area;
Responsetext
┌──────area─┐
│ 0.0000439 │
└───────────┘

h3IndexesAreNeighbors

Retorna se os H3 índices fornecidos são vizinhos.

Sintaxe

h3IndexesAreNeighbors(index1, index2)

Argumentos

  • index1 — Número do índice hexagonal. UInt64.
  • index2 — Número do índice hexagonal. UInt64.

Valor retornado

  • 1 — Os índices são vizinhos. UInt8.
  • 0 — Os índices não são vizinhos. UInt8.

Exemplo

Querysql
SELECT h3IndexesAreNeighbors(617420388351344639, 617420388352655359) AS n;
Responsetext
┌─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

Querysql
SELECT h3ToChildren(599405990164561919, 6) AS children;
Responsetext
┌─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

Exemplo

Querysql
SELECT h3ToParent(599405990164561919, 3) AS parent;
Responsetext
┌─────────────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

Querysql
SELECT h3ToString(617420388352917503) AS h3_string;
Responsetext
┌─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

Querysql
SELECT stringToH3('89184926cc3ffff') AS index;
Responsetext
┌──────────────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

Querysql
SELECT h3GetResolution(617420388352917503) AS res;
Responsetext
┌─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

Querysql
SELECT h3IsResClassIII(617420388352917503) AS res;
Responsetext
┌─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

Querysql
SELECT h3IsPentagon(644721767722457330) AS pentagon;
Responsetext
┌─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

Querysql
SELECT h3GetFaces(599686042433355775) AS faces;
Responsetext
┌─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

Querysql
SELECT h3CellAreaM2(579205133326352383) AS area;
Responsetext
┌───────────────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

Querysql
SELECT h3CellAreaRads2(579205133326352383) AS area;
Responsetext
┌────────────────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

  • índice H3 do filho central contido no H3 fornecido, na resolução especificada. UInt64.

Exemplo

Querysql
SELECT h3ToCenterChild(577023702256844799,1) AS centerToChild;
Responsetext
┌──────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

Querysql
SELECT round(h3ExactEdgeLengthM(1310277011704381439), 6) AS exactEdgeLengthM;
Responsetext
┌─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

Querysql
SELECT round(h3ExactEdgeLengthKm(1310277011704381439), 8) AS exactEdgeLengthKm;
Responsetext
┌─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

Querysql
SELECT round(h3ExactEdgeLengthRads(1310277011704381439), 12) AS exactEdgeLengthRads;
Responsetext
┌─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

Querysql
SELECT h3NumHexagons(3) AS numHexagons;
Responsetext
┌─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

Querysql
SELECT h3PointDistM(-10.0 ,0.0, 10.0, 0.0) AS h3PointDistM;
Responsetext
┌───────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

Querysql
SELECT h3PointDistKm(-10.0 ,0.0, 10.0, 0.0) AS h3PointDistKm;
Responsetext
┌──────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

Querysql
SELECT h3PointDistRads(-10.0 ,0.0, 10.0, 0.0) AS h3PointDistRads;
Responsetext
┌────h3PointDistRads─┐
│ 0.3490658503988659 │
└────────────────────┘

h3GetRes0Indexes

Retorna um array com todos os índices H3 de resolução 0.

Sintaxe

h3GetRes0Indexes()

Valores retornados

  • Array com todos os índices H3 de resolução 0. Array(UInt64).

Exemplo

Querysql
SELECT h3GetRes0Indexes AS indexes ;
Responsetext
┌─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

  • Array com todos os índices H3 de pentágono. Array(UInt64).

Exemplo

Querysql
SELECT h3GetPentagonIndexes(3) AS indexes;
Responsetext
┌─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

Querysql
 SELECT h3Line(590080540275638271,590103561300344831) AS indexes;
Responsetext
┌─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

Querysql
 SELECT h3Distance(590080540275638271,590103561300344831) AS distance;
Responsetext
┌─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

  • index — Número do índice do hexágono que representa a origem. UInt64.
  • k — Distância. UInt64.

Valores retornados

Exemplo

Querysql
 SELECT h3HexRing(590080540275638271, toUInt16(1)) AS hexRing;
Responsetext
┌─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

Querysql
 SELECT h3GetUnidirectionalEdge(599686042433355775, 599686043507097599) AS edge;
Responsetext
┌────────────────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

Querysql
 SELECT h3UnidirectionalEdgeIsValid(1248204388774707199) AS validOrNot;
Responsetext
┌─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_DATA para arestas direcionadas inválidas por padrão; retorna 0 quando functions_h3_default_if_invalid = 1.

Exemplo

Querysql
 SELECT h3GetOriginIndexFromUnidirectionalEdge(1248204388774707199) AS origin;
Responsetext
┌─────────────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_DATA para arestas direcionadas inválidas por padrão; retorna 0 quando functions_h3_default_if_invalid = 1.

Exemplo

Querysql
 SELECT h3GetDestinationIndexFromUnidirectionalEdge(1248204388774707199) AS destination;
Responsetext
┌────────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

Querysql
 SELECT h3GetIndexesFromUnidirectionalEdge(1248204388774707199) AS indexes;
Responsetext
┌─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_DATA para células inválidas por padrão; retorna [] quando functions_h3_default_if_invalid = 1.

Exemplo

Querysql
 SELECT h3GetUnidirectionalEdgesFromHexagon(599686042433355775) AS edges;
Responsetext
┌─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_DATA para arestas direcionadas inválidas por padrão; retorna [] quando functions_h3_default_if_invalid = 1.

Exemplo

Querysql
 SELECT h3GetUnidirectionalEdgeBoundary(1248204388774707199) AS boundary;
Responsetext
┌─boundary────────────────────────────────────────────────────────────────────────┐
│ [(37.42012867767779,-122.03773496427027),(37.33755608435299,-122.090428929044)] │
└─────────────────────────────────────────────────────────────────────────────────┘
Navigation