Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Функции для работы с индексами H3

индекс H3

H3 — это система географической индексации, в которой поверхность Земли разбита на сетку из одинаковых шестиугольных ячеек. Эта система иерархична, то есть каждый шестиугольник верхнего уровня (parent) может быть разделён на семь таких же, но меньших (children), и так далее.

Уровень иерархии называется resolution и может принимать значения от 0 до 15, где 0 — это уровень base с самыми большими и самыми грубыми ячейками.

Пару широты и долготы можно преобразовать в 64-битный индекс H3, который идентифицирует ячейку сетки.

Индекс H3 в основном используется для группировки местоположений по бакетам и других геопространственных преобразований.

Полное описание системы H3 доступно на сайте Uber Engineering.

h3IsValid

Проверяет, является ли число корректным индексом H3.

Синтаксис

h3IsValid(h3index)

Параметр

  • h3index — Номер шестиугольного индекса. UInt64.

Возвращаемые значения

  • 1 — Число является корректным индексом H3. UInt8.
  • 0 — Число не является корректным индексом H3. UInt8.

Пример

Querysql
SELECT h3IsValid(630814730351855103) AS h3IsValid;
Responsetext
┌─h3IsValid─┐
│         1 │
└───────────┘

h3GetResolution

Определяет разрешение для указанного H3-индекса.

Синтаксис

h3GetResolution(h3index)

Параметр

  • h3index — номер шестиугольного индекса. UInt64.

Возвращаемые значения

  • Разрешение индекса. Диапазон: [0, 15]. UInt8.
  • Если индекс некорректен, функция возвращает случайное значение. Используйте h3IsValid, чтобы проверить индекс. UInt8.

Пример

Querysql
SELECT h3GetResolution(639821929606596015) AS resolution;
Responsetext
┌─resolution─┐
│         14 │
└────────────┘

h3EdgeAngle

Вычисляет среднюю длину ребра H3-шестиугольника в градах.

Синтаксис

h3EdgeAngle(resolution)

Параметр

  • resolution — разрешение индекса. UInt8. Диапазон: [0, 15].

Возвращаемые значения

  • Средняя длина ребра шестиугольника H3 в градах. Float64.

Пример

Querysql
SELECT h3EdgeAngle(10) AS edgeAngle;
Responsetext
┌───────h3EdgeAngle(10)─┐
│ 0.0005927224846720883 │
└───────────────────────┘

h3EdgeLengthM

Вычисляет среднюю длину ребра шестиугольника H3 в метрах.

Синтаксис

h3EdgeLengthM(resolution)

Параметр

  • resolution — разрешение индекса. UInt8. Диапазон: [0, 15].

Возвращаемые значения

  • Средняя длина ребра H3-шестиугольника в метрах. Float64.

Пример

Querysql
SELECT h3EdgeLengthM(15) AS edgeLengthM;
Responsetext
┌─edgeLengthM─┐
│ 0.509713273 │
└─────────────┘

h3EdgeLengthKm

Вычисляет среднюю длину ребра шестиугольника H3 в километрах.

Синтаксис

h3EdgeLengthKm(resolution)

Параметр

  • resolution — разрешение индекса. UInt8. Диапазон: [0, 15].

Возвращаемые значения

  • Средняя длина ребра шестиугольника H3 в километрах. Float64.

Пример

Querysql
SELECT h3EdgeLengthKm(15) AS edgeLengthKm;
Responsetext
┌─edgeLengthKm─┐
│  0.000509713 │
└──────────────┘

geoToH3

Возвращает индекс точки H3 (lat, lon) с указанным разрешением.

Синтаксис

geoToH3(lat, lon, resolution)

Аргументы

  • lat — Широта. Float64.
  • lon — Долгота. Float64.
  • resolution — Разрешение индекса. Диапазон: [0, 15]. UInt8.

Возвращаемые значения

  • Номер шестиугольного индекса. UInt64.
  • 0 в случае ошибки. UInt64.

Примечание: в ClickHouse v25.4 и более ранних версиях geoToH3() принимает значения в порядке (lon, lat). Начиная с ClickHouse v25.5, входные значения принимаются в порядке (lat, lon). Предыдущее поведение можно восстановить с помощью настройки geotoh3_argument_order = 'lon_lat'.

Пример

Querysql
SELECT geoToH3(55.71290588, 37.79506683, 15) AS h3Index;
Responsetext
┌────────────h3Index─┐
│ 644325524701193974 │
└────────────────────┘

h3ToGeo

Возвращает широту и долготу центра, соответствующие указанному индексу H3.

Синтаксис

h3ToGeo(h3Index)

Аргументы

  • h3Index — индекс H3. UInt64.

Возвращаемые значения

  • Кортеж из двух значений: tuple(lat,lon). lat — широта. Float64. lon — долгота. Float64.

Примечание: в ClickHouse v24.12 и более ранних версиях h3ToGeo() возвращает значения в порядке (lon, lat). Начиная с ClickHouse v25.1, возвращаемые значения идут в порядке (lat, lon). Предыдущее поведение можно восстановить с помощью настройки h3togeo_lon_lat_result_order = true.

Пример

Querysql
SELECT h3ToGeo(644325524701193974) AS coordinates;
Responsetext
┌─coordinates───────────────────────────┐
│ (55.71290243145668,37.79506616830252) │
└───────────────────────────────────────┘

h3ToGeoBoundary

Возвращает массив пар (lat, lon), соответствующий границе указанного индекса H3.

Синтаксис

h3ToGeoBoundary(h3Index)

Аргументы

  • h3Index — индекс H3. UInt64.

Возвращаемые значения

Пример

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

Перечисляет все H3 шестиугольники, расположенные в радиусе k от заданного шестиугольника, в случайном порядке.

Синтаксис

h3kRing(h3index, k)

Аргументы

  • h3index — номер шестиугольного индекса. UInt64.
  • k — радиус. integer

Возвращаемые значения

Пример

Querysql
SELECT arrayJoin(h3kRing(644325529233966508, 1)) AS h3index;
Responsetext
┌────────────h3index─┐
│ 644325529233966508 │
│ 644325529233966497 │
│ 644325529233966510 │
│ 644325529233966504 │
│ 644325529233966509 │
│ 644325529233966355 │
│ 644325529233966354 │
└────────────────────┘

h3PolygonToCells

Возвращает шестиугольники (с указанным разрешением), содержащиеся в заданной геометрии: ring или (multi-)polygon.

Синтаксис

h3PolygonToCells(geometry, resolution)

Аргументы

Возвращаемые значения

  • Массив содержащихся индексов H3. Array(UInt64).

Пример

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

Возвращает шестиугольники (с указанным разрешением), покрывающие переданную геометрию — Ring или (multi-)polygon, — с использованием экспериментальных режимов покрытия H3.

Эта функция сопоставляет flags с режимами покрытия H3:

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

Синтаксис

h3PolygonToCellsWithContainment(geometry, resolution, flags)

Аргументы

  • geometry может быть одним из следующих гео-типов данных или их базовых примитивных типов:
  • resolution — разрешение индекса. Диапазон: [0, 15]. UInt8.
  • flags — режим покрытия. Диапазон: [0, 3]. Используйте целочисленные литералы, такие как 0, 1, 2 и 3, или значения UInt32 (например, toUInt32(2)). Значения передаются в H3 API как UInt32. Другие встроенные целочисленные типы преобразуются с помощью точного приведения типов.

Возвращаемые значения

  • Массив индексов H3 в соответствии с выбранным режимом покрытия. Array(UInt64).

Пример

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

Возвращает номер базовой ячейки индекса H3.

Синтаксис

h3GetBaseCell(index)

Параметр

  • index — номер шестиугольного индекса. UInt64.

Возвращаемое значение

  • Номер базовой ячейки шестиугольника. UInt8.

Пример

Querysql
SELECT h3GetBaseCell(612916788725809151) AS basecell;
Responsetext
┌─basecell─┐
│       12 │
└──────────┘

h3HexAreaM2

Возвращает среднюю площадь шестиугольника в квадратных метрах для заданного разрешения.

Синтаксис

h3HexAreaM2(resolution)

Параметр

  • resolution — Разрешение индекса. Диапазон: [0, 15]. UInt8.

Возвращаемое значение

  • Площадь в квадратных метрах. Float64.

Пример

Querysql
SELECT h3HexAreaM2(13) AS area;
Responsetext
┌─area─┐
│ 43.9 │
└──────┘

h3HexAreaKm2

Возвращает среднюю площадь шестиугольника в квадратных километрах для заданного разрешения.

Синтаксис

h3HexAreaKm2(resolution)

Параметр

  • resolution — разрешение индекса. Диапазон: [0, 15]. UInt8.

Возвращаемое значение

  • Площадь в квадратных километрах. Float64.

Пример

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

h3IndexesAreNeighbors

Возвращает, являются ли указанные индексы H3 соседними.

Синтаксис

h3IndexesAreNeighbors(index1, index2)

Аргументы

  • index1 — Номер шестиугольного индекса. UInt64.
  • index2 — Номер шестиугольного индекса. UInt64.

Возвращаемое значение

  • 1 — Индексы являются соседями. UInt8.
  • 0 — Индексы не являются соседями. UInt8.

Пример

Querysql
SELECT h3IndexesAreNeighbors(617420388351344639, 617420388352655359) AS n;
Responsetext
┌─n─┐
│ 1 │
└───┘

h3ToChildren

Возвращает массив дочерних индексов для заданного индекса H3.

Синтаксис

h3ToChildren(index, resolution)

Аргументы

  • index — Номер шестиугольного индекса. UInt64.
  • resolution — Разрешение индекса. Диапазон: [0, 15]. UInt8.

Возвращаемые значения

  • Массив дочерних H3-индексов. Array(UInt64).

Пример

Querysql
SELECT h3ToChildren(599405990164561919, 6) AS children;
Responsetext
┌─children───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [603909588852408319,603909588986626047,603909589120843775,603909589255061503,603909589389279231,603909589523496959,603909589657714687] │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

h3ToParent

Возвращает родительский индекс более общего уровня, содержащий указанный индекс H3.

Синтаксис

h3ToParent(index, resolution)

Аргументы

  • index — Номер шестиугольного индекса. UInt64.
  • resolution — Разрешение индекса. Диапазон: [0, 15]. UInt8.

Возвращаемое значение

  • Родительский индекс H3. UInt64.

Пример

Querysql
SELECT h3ToParent(599405990164561919, 3) AS parent;
Responsetext
┌─────────────parent─┐
│ 590398848891879423 │
└────────────────────┘

h3ToString

Преобразует представление индекса H3Index в строковое представление.

h3ToString(index)

Параметр

  • index — номер шестиугольного индекса. UInt64.

Возвращаемое значение

  • Строковое представление индекса H3. String.

Пример

Querysql
SELECT h3ToString(617420388352917503) AS h3_string;
Responsetext
┌─h3_string───────┐
│ 89184926cdbffff │
└─────────────────┘

stringToH3

Преобразует строковое представление в формат H3Index (UInt64).

Синтаксис

stringToH3(index_str)

Параметр

  • index_str — Строковое представление индекса H3. String.

Возвращаемое значение

  • Номер шестиугольного индекса. При ошибке возвращает 0. UInt64.

Пример

Querysql
SELECT stringToH3('89184926cc3ffff') AS index;
Responsetext
┌──────────────index─┐
│ 617420388351344639 │
└────────────────────┘

h3GetResolution

Возвращает разрешение индекса H3.

Синтаксис

h3GetResolution(index)

Параметр

  • index — номер шестиугольного индекса. UInt64.

Возвращаемое значение

  • Разрешение индекса. Диапазон: [0, 15]. UInt8.

Пример

Querysql
SELECT h3GetResolution(617420388352917503) AS res;
Responsetext
┌─res─┐
│   9 │
└─────┘

h3IsResClassIII

Возвращает, имеет ли H3 индекс разрешение с ориентацией класса III.

Синтаксис

h3IsResClassIII(index)

Параметр

  • index — номер шестиугольного индекса. UInt64.

Возвращаемое значение

  • 1 — индекс относится к разрешению с ориентацией Class III. UInt8.
  • 0 — индекс не относится к разрешению с ориентацией Class III. UInt8.

Пример

Querysql
SELECT h3IsResClassIII(617420388352917503) AS res;
Responsetext
┌─res─┐
│   1 │
└─────┘

h3IsPentagon

Возвращает, является ли этот индекс H3 пятиугольной ячейкой.

Синтаксис

h3IsPentagon(index)

Параметр

  • index — номер шестиугольного индекса. UInt64.

Возвращаемое значение

  • 1 — индекс соответствует пятиугольной ячейке. UInt8.
  • 0 — индекс не соответствует пятиугольной ячейке. UInt8.

Пример

Querysql
SELECT h3IsPentagon(644721767722457330) AS pentagon;
Responsetext
┌─pentagon─┐
│        0 │
└──────────┘

h3GetFaces

Возвращает грани икосаэдра, с которыми пересекается указанный индекс H3.

Синтаксис

h3GetFaces(index)

Параметр

  • index — номер шестиугольного индекса. UInt64.

Возвращаемые значения

  • Array(UInt64) — массив граней икосаэдра, с которыми пересекается указанный индекс H3.

Пример

Querysql
SELECT h3GetFaces(599686042433355775) AS faces;
Responsetext
┌─faces─┐
│ [7]   │
└───────┘

h3CellAreaM2

Возвращает точную площадь конкретной ячейки в квадратных метрах для указанного индекса H3.

Синтаксис

h3CellAreaM2(index)

Параметр

  • index — номер шестиугольного индекса. UInt64.

Возвращаемое значение

  • Площадь ячейки в квадратных метрах. Float64.

Пример

Querysql
SELECT h3CellAreaM2(579205133326352383) AS area;
Responsetext
┌───────────────area─┐
│ 4106166334463.9233 │
└────────────────────┘

h3CellAreaRads2

Возвращает точную площадь заданной ячейки в квадратных радианах для указанного индекса H3.

Синтаксис

h3CellAreaRads2(index)

Параметр

  • index — номер шестиугольного индекса. UInt64.

Возвращаемое значение

  • Площадь ячейки в квадратных радианах. Float64.

Пример

Querysql
SELECT h3CellAreaRads2(579205133326352383) AS area;
Responsetext
┌────────────────area─┐
│ 0.10116268528089567 │
└─────────────────────┘

h3ToCenterChild

Возвращает центральный дочерний (более детализированный) H3 индекс, входящий в заданный H3, на указанном разрешении.

Синтаксис

h3ToCenterChild(index, resolution)

Параметры

  • index — номер шестиугольного индекса. UInt64.
  • resolution — разрешение индекса. Диапазон: [0, 15]. UInt8.

Возвращаемые значения

  • Индекс H3 центральной дочерней ячейки, содержащейся в указанном индексе H3 при заданном разрешении. UInt64.

Пример

Querysql
SELECT h3ToCenterChild(577023702256844799,1) AS centerToChild;
Responsetext
┌──────centerToChild─┐
│ 581496515558637567 │
└────────────────────┘

h3ExactEdgeLengthM

Возвращает точную длину однонаправленного ребра, представленного входным индексом H3, в метрах.

Синтаксис

h3ExactEdgeLengthM(index)

Параметр

  • index — номер шестиугольного индекса. UInt64.

Возвращаемое значение

  • Точная длина ребра в метрах. Float64.

Пример

Querysql
SELECT round(h3ExactEdgeLengthM(1310277011704381439), 6) AS exactEdgeLengthM;
Responsetext
┌─exactEdgeLengthM─┐
│    195449.631634 │
└──────────────────┘

h3ExactEdgeLengthKm

Возвращает точную длину однонаправленного ребра, представленного переданным индексом H3, в километрах.

Синтаксис

h3ExactEdgeLengthKm(index)

Параметр

  • index — Номер шестиугольного индекса. UInt64.

Возвращаемое значение

  • Точная длина ребра в километрах. Float64.

Пример

Querysql
SELECT round(h3ExactEdgeLengthKm(1310277011704381439), 8) AS exactEdgeLengthKm;
Responsetext
┌─exactEdgeLengthKm─┐
│      195.44963163 │
└───────────────────┘

h3ExactEdgeLengthRads

Возвращает точную длину однонаправленного ребра, представленного входным индексом H3, в радианах.

Синтаксис

h3ExactEdgeLengthRads(index)

Параметр

  • index — номер шестиугольного индекса. UInt64.

Возвращаемое значение

  • Точная длина ребра в радианах. Float64.

Пример

Querysql
SELECT round(h3ExactEdgeLengthRads(1310277011704381439), 12) AS exactEdgeLengthRads;
Responsetext
┌─exactEdgeLengthRads─┐
│      0.030677980119 │
└─────────────────────┘

h3NumHexagons

Возвращает количество уникальных индексов H3 для заданного разрешения.

Синтаксис

h3NumHexagons(resolution)

Параметр

  • resolution — разрешение индекса. Диапазон: [0, 15]. UInt8.

Возвращаемое значение

  • Количество индексов H3. Int64.

Пример

Querysql
SELECT h3NumHexagons(3) AS numHexagons;
Responsetext
┌─numHexagons─┐
│       41162 │
└─────────────┘

h3PointDistM

Возвращает расстояние в метрах по "дуге большого круга" или по формуле "гаверсинуса" между парами точек GeoCoord (широта/долгота).

Синтаксис

h3PointDistM(lat1, lon1, lat2, lon2)

Аргументы

  • lat1, lon1 — широта и долгота точки 1 в градусах. Float64.
  • lat2, lon2 — широта и долгота точки 2 в градусах. Float64.

Возвращаемые значения

  • Расстояние по гаверсинусу или расстояние по дуге большого круга в метрах. Float64.

Пример

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

h3PointDistKm

Возвращает расстояние в километрах между парами точек GeoCoord (широта/долгота), вычисленное по "дуге большого круга" или по формуле "гаверсинуса".

Синтаксис

h3PointDistKm(lat1, lon1, lat2, lon2)

Аргументы

  • lat1, lon1 — широта и долгота точки 1 в градусах. Float64.
  • lat2, lon2 — широта и долгота точки 2 в градусах. Float64.

Возвращаемые значения

  • Расстояние, вычисленное по гаверсинусу или по дуге большого круга, в километрах. Float64.

Пример

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

h3PointDistRads

Возвращает расстояние между парами точек GeoCoord (широта/долгота), вычисленное по дуге большого круга или по формуле гаверсинуса, в радианах.

Синтаксис

h3PointDistRads(lat1, lon1, lat2, lon2)

Аргументы

  • lat1, lon1 — широта и долгота точки 1 в градусах. Float64.
  • lat2, lon2 — широта и долгота точки 2 в градусах. Float64.

Возвращаемые значения

  • Расстояние по формуле гаверсинуса или длина дуги большого круга в радианах. Float64.

Пример

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

h3GetRes0Indexes

Возвращает массив всех индексов H3 нулевого разрешения.

Синтаксис

h3GetRes0Indexes()

Возвращаемые значения

  • Массив всех индексов H3 с разрешением 0. Array(UInt64).

Пример

Querysql
SELECT h3GetRes0Indexes AS indexes ;
Responsetext
┌─indexes─────────────────────────────────────┐
│ [576495936675512319,576531121047601151,....]│
└─────────────────────────────────────────────┘

h3GetPentagonIndexes

Возвращает все пятиугольные индексы H3 при указанном разрешении.

Синтаксис

h3GetPentagonIndexes(resolution)

Параметр

  • resolution — разрешение индекса. Диапазон: [0, 15]. UInt8.

Возвращаемое значение

  • Массив всех пятиугольных индексов H3. Array(UInt64).

Пример

Querysql
SELECT h3GetPentagonIndexes(3) AS indexes;
Responsetext
┌─indexes────────────────────────────────────────────────────────┐
│ [590112357393367039,590464201114255359,590816044835143679,...] │
└────────────────────────────────────────────────────────────────┘

h3Line

Возвращает линию, соединяющую два указанных индекса.

Синтаксис

h3Line(start,end)

Параметры

  • start — Номер шестиугольного индекса, представляющий начальную точку. UInt64.
  • end — Номер шестиугольного индекса, представляющий конечную точку. UInt64.

Возвращаемое значение

Массив индексов H3, представляющих линию между двумя указанными индексами. Array(UInt64).

Пример

Querysql
 SELECT h3Line(590080540275638271,590103561300344831) AS indexes;
Responsetext
┌─indexes────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [590080540275638271,590080471556161535,590080883873021951,590106516237844479,590104385934065663,590103630019821567,590103561300344831] │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

h3Distance

Возвращает расстояние между двумя указанными индексами в ячейках сетки.

Синтаксис

h3Distance(start,end)

Параметр

  • start — номер шестиугольного индекса, обозначающий начальную точку. UInt64.
  • end — номер шестиугольного индекса, обозначающий конечную точку. UInt64.

Возвращаемое значение

  • Количество ячеек сетки. Int64.

Возвращает отрицательное число, если определить расстояние не удаётся.

Пример

Querysql
 SELECT h3Distance(590080540275638271,590103561300344831) AS distance;
Responsetext
┌─distance─┐
│        6 │
└──────────┘

h3HexRing

Возвращает индексы шестиугольного кольца длины k с центром в указанном исходном h3Index.

Возвращает 0, если пентагональных искажений не обнаружено.

Синтаксис

h3HexRing(index, k)

Параметр

  • index — Номер шестиугольного индекса, представляющий исходную ячейку. UInt64.
  • k — Расстояние. UInt64.

Возвращаемые значения

Пример

Querysql
 SELECT h3HexRing(590080540275638271, toUInt16(1)) AS hexRing;
Responsetext
┌─hexRing─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [590080815153545215,590080471556161535,590080677714591743,590077585338138623,590077447899185151,590079509483487231] │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

h3GetUnidirectionalEdge

Возвращает индекс H3 однонаправленного ребра для двух соседних индексов ячеек H3 (исходной и целевой). Генерирует исключение, если хотя бы один из входных индексов не является допустимой ячейкой H3 (это поведение регулируется настройкой functions_h3_default_if_invalid). Для допустимых ячеек H3, не являющихся соседними (в том числе при указании одной и той же ячейки дважды), возвращает 0.

Синтаксис

h3GetUnidirectionalEdge(originIndex, destinationIndex)

Параметр

  • originIndex — Номер шестиугольного индекса исходной ячейки. UInt64.
  • destinationIndex — Номер шестиугольного индекса целевой ячейки. UInt64.

Возвращаемое значение

  • Номер шестиугольного индекса однонаправленного ребра. UInt64.

Пример

Querysql
 SELECT h3GetUnidirectionalEdge(599686042433355775, 599686043507097599) AS edge;
Responsetext
┌────────────────edge─┐
│ 1248204388774707199 │
└─────────────────────┘

h3UnidirectionalEdgeIsValid

Проверяет, является ли указанный H3Index корректным индексом однонаправленного ребра. Возвращает 1, если это однонаправленное ребро, и 0 в противном случае.

Синтаксис

h3UnidirectionalEdgeIsValid(index)

Параметр

  • index — Номер шестиугольного индекса. UInt64.

Возвращаемое значение

  • 1 — Индекс H3 является валидным однонаправленным ребром. UInt8.
  • 0 — Индекс H3 не является валидным однонаправленным ребром. UInt8.

Пример

Querysql
 SELECT h3UnidirectionalEdgeIsValid(1248204388774707199) AS validOrNot;
Responsetext
┌─validOrNot─┐
│          1 │
└────────────┘

h3GetOriginIndexFromUnidirectionalEdge

Возвращает индекс исходного шестиугольника по H3Index однонаправленного ребра. Генерирует исключение, если входное значение не является допустимым направленным ребром (управляется настройкой functions_h3_default_if_invalid); возвращает 0, только если эта настройка включена.

Синтаксис

h3GetOriginIndexFromUnidirectionalEdge(edge)

Параметр

  • edge — номер шестиугольного индекса, представляющего однонаправленное ребро. UInt64.

Возвращаемое значение

  • Номер шестиугольного индекса исходной ячейки. UInt64.
  • По умолчанию генерирует исключение INCORRECT_DATA для недопустимых направленных рёбер; возвращает 0, если functions_h3_default_if_invalid = 1.

Пример

Querysql
 SELECT h3GetOriginIndexFromUnidirectionalEdge(1248204388774707199) AS origin;
Responsetext
┌─────────────origin─┐
│ 599686042433355775 │
└────────────────────┘

h3GetDestinationIndexFromUnidirectionalEdge

Возвращает индекс шестиугольника пункта назначения по однонаправленному ребру H3Index. Генерирует исключение, если входное значение не является допустимым ориентированным ребром (поведение определяется настройкой functions_h3_default_if_invalid); возвращает 0, только если эта настройка включена.

Синтаксис

h3GetDestinationIndexFromUnidirectionalEdge(edge)

Параметр

  • edge — номер шестиугольного индекса, представляющего однонаправленное ребро. UInt64.

Возвращаемое значение

  • Номер шестиугольного индекса целевой ячейки. UInt64.
  • По умолчанию генерирует исключение INCORRECT_DATA для недопустимых направленных рёбер; возвращает 0, если functions_h3_default_if_invalid = 1.

Пример

Querysql
 SELECT h3GetDestinationIndexFromUnidirectionalEdge(1248204388774707199) AS destination;
Responsetext
┌────────destination─┐
│ 599686043507097599 │
└────────────────────┘

h3GetIndexesFromUnidirectionalEdge

Возвращает индексы исходного шестиугольника и шестиугольника в пункте назначения для указанного H3Index однонаправленного ребра.

Синтаксис

h3GetIndexesFromUnidirectionalEdge(edge)

Параметр

  • edge — номер шестиугольного индекса, который представляет однонаправленное ребро. UInt64.

Возвращаемое значение

Кортеж, состоящий из двух значений tuple(origin,destination):

  • origin — номер шестиугольного индекса исходной ячейки. UInt64.
  • destination — номер шестиугольного индекса целевой ячейки. UInt64.

Генерирует исключение, если переданное значение не является допустимым направленным ребром (это регулируется настройкой functions_h3_default_if_invalid); возвращает (0,0) только при включённой этой настройке.

Пример

Querysql
 SELECT h3GetIndexesFromUnidirectionalEdge(1248204388774707199) AS indexes;
Responsetext
┌─indexes─────────────────────────────────┐
│ (599686042433355775,599686043507097599) │
└─────────────────────────────────────────┘

h3GetUnidirectionalEdgesFromHexagon

Возвращает все однонаправленные рёбра для указанного H3Index. Генерирует исключение, если входное значение не является допустимой ячейкой H3 (это регулируется настройкой functions_h3_default_if_invalid); возвращает пустой массив только при включённой настройке.

Синтаксис

h3GetUnidirectionalEdgesFromHexagon(index)

Параметр

  • index — номер шестиугольного индекса, соответствующий ячейке. UInt64.

Возвращаемое значение

  • Массив индексов H3, представляющих каждое однонаправленное ребро. Array(UInt64).
  • По умолчанию генерирует исключение INCORRECT_DATA для недопустимых ячеек; возвращает [], когда functions_h3_default_if_invalid = 1.

Пример

Querysql
 SELECT h3GetUnidirectionalEdgesFromHexagon(599686042433355775) AS edges;
Responsetext
┌─edges─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [1248204388774707199,1320261982812635135,1392319576850563071,1464377170888491007,1536434764926418943,1608492358964346879] │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

h3GetUnidirectionalEdgeBoundary

Возвращает координаты, задающие однонаправленное ребро. Генерирует исключение, если входное значение не является допустимым направленным ребром (это регулируется настройкой functions_h3_default_if_invalid); возвращает пустой массив только при включённой настройке.

Синтаксис

h3GetUnidirectionalEdgeBoundary(index)

Параметр

  • index — номер шестиугольного индекса, представляющий однонаправленное ребро. UInt64.

Возвращаемое значение

  • Массив пар '(lat, lon)'. Array(Float64, Float64).
  • По умолчанию генерирует исключение INCORRECT_DATA для недопустимых направленных рёбер; возвращает [], когда functions_h3_default_if_invalid = 1.

Пример

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