индекс 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.
Пример
SELECT h3IsValid(630814730351855103) AS h3IsValid;┌─h3IsValid─┐
│ 1 │
└───────────┘h3GetResolution
Определяет разрешение для указанного H3-индекса.
Синтаксис
h3GetResolution(h3index)Параметр
h3index— номер шестиугольного индекса. UInt64.
Возвращаемые значения
- Разрешение индекса. Диапазон:
[0, 15]. UInt8. - Если индекс некорректен, функция возвращает случайное значение. Используйте h3IsValid, чтобы проверить индекс. UInt8.
Пример
SELECT h3GetResolution(639821929606596015) AS resolution;┌─resolution─┐
│ 14 │
└────────────┘h3EdgeAngle
Вычисляет среднюю длину ребра H3-шестиугольника в градах.
Синтаксис
h3EdgeAngle(resolution)Параметр
resolution— разрешение индекса. UInt8. Диапазон:[0, 15].
Возвращаемые значения
Пример
SELECT h3EdgeAngle(10) AS edgeAngle;┌───────h3EdgeAngle(10)─┐
│ 0.0005927224846720883 │
└───────────────────────┘h3EdgeLengthM
Вычисляет среднюю длину ребра шестиугольника H3 в метрах.
Синтаксис
h3EdgeLengthM(resolution)Параметр
resolution— разрешение индекса. UInt8. Диапазон:[0, 15].
Возвращаемые значения
Пример
SELECT h3EdgeLengthM(15) AS edgeLengthM;┌─edgeLengthM─┐
│ 0.509713273 │
└─────────────┘h3EdgeLengthKm
Вычисляет среднюю длину ребра шестиугольника H3 в километрах.
Синтаксис
h3EdgeLengthKm(resolution)Параметр
resolution— разрешение индекса. UInt8. Диапазон:[0, 15].
Возвращаемые значения
Пример
SELECT h3EdgeLengthKm(15) AS edgeLengthKm;┌─edgeLengthKm─┐
│ 0.000509713 │
└──────────────┘geoToH3
Возвращает индекс точки H3 (lat, lon) с указанным разрешением.
Синтаксис
geoToH3(lat, lon, resolution)Аргументы
lat— Широта. Float64.lon— Долгота. Float64.resolution— Разрешение индекса. Диапазон:[0, 15]. UInt8.
Возвращаемые значения
Примечание: в ClickHouse v25.4 и более ранних версиях geoToH3() принимает значения в порядке (lon, lat). Начиная с ClickHouse v25.5, входные значения принимаются в порядке (lat, lon). Предыдущее поведение можно восстановить с помощью настройки geotoh3_argument_order = 'lon_lat'.
Пример
SELECT geoToH3(55.71290588, 37.79506683, 15) AS h3Index;┌────────────h3Index─┐
│ 644325524701193974 │
└────────────────────┘h3ToGeo
Возвращает широту и долготу центра, соответствующие указанному индексу H3.
Синтаксис
h3ToGeo(h3Index)Аргументы
h3Index— индекс H3. UInt64.
Возвращаемые значения
Примечание: в ClickHouse v24.12 и более ранних версиях h3ToGeo() возвращает значения в порядке (lon, lat). Начиная с ClickHouse v25.1, возвращаемые значения идут в порядке (lat, lon). Предыдущее поведение можно восстановить с помощью настройки h3togeo_lon_lat_result_order = true.
Пример
SELECT h3ToGeo(644325524701193974) AS coordinates;┌─coordinates───────────────────────────┐
│ (55.71290243145668,37.79506616830252) │
└───────────────────────────────────────┘h3ToGeoBoundary
Возвращает массив пар (lat, lon), соответствующий границе указанного индекса H3.
Синтаксис
h3ToGeoBoundary(h3Index)Аргументы
h3Index— индекс H3. UInt64.
Возвращаемые значения
Пример
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
Перечисляет все H3 шестиугольники, расположенные в радиусе k от заданного шестиугольника, в случайном порядке.
Синтаксис
h3kRing(h3index, k)Аргументы
Возвращаемые значения
Пример
SELECT arrayJoin(h3kRing(644325529233966508, 1)) AS h3index;┌────────────h3index─┐
│ 644325529233966508 │
│ 644325529233966497 │
│ 644325529233966510 │
│ 644325529233966504 │
│ 644325529233966509 │
│ 644325529233966355 │
│ 644325529233966354 │
└────────────────────┘h3PolygonToCells
Возвращает шестиугольники (с указанным разрешением), содержащиеся в заданной геометрии: ring или (multi-)polygon.
Синтаксис
h3PolygonToCells(geometry, resolution)Аргументы
geometryможет быть одним из следующих гео-типов данных или соответствующих примитивных типов:resolution— разрешение индекса. Диапазон:[0, 15]. UInt8.
Возвращаемые значения
Пример
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
Возвращает шестиугольники (с указанным разрешением), покрывающие переданную геометрию — Ring или (multi-)polygon, — с использованием экспериментальных режимов покрытия H3.
Эта функция сопоставляет flags с режимами покрытия H3:
0—CONTAINMENT_CENTER1—CONTAINMENT_FULL2—CONTAINMENT_OVERLAPPING3—CONTAINMENT_OVERLAPPING_BBOX
Синтаксис
h3PolygonToCellsWithContainment(geometry, resolution, flags)Аргументы
geometryможет быть одним из следующих гео-типов данных или их базовых примитивных типов:resolution— разрешение индекса. Диапазон:[0, 15]. UInt8.flags— режим покрытия. Диапазон:[0, 3]. Используйте целочисленные литералы, такие как0,1,2и3, или значения UInt32 (например,toUInt32(2)). Значения передаются в H3 API какUInt32. Другие встроенные целочисленные типы преобразуются с помощью точного приведения типов.
Возвращаемые значения
Пример
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
Возвращает номер базовой ячейки индекса H3.
Синтаксис
h3GetBaseCell(index)Параметр
index— номер шестиугольного индекса. UInt64.
Возвращаемое значение
- Номер базовой ячейки шестиугольника. UInt8.
Пример
SELECT h3GetBaseCell(612916788725809151) AS basecell;┌─basecell─┐
│ 12 │
└──────────┘h3HexAreaM2
Возвращает среднюю площадь шестиугольника в квадратных метрах для заданного разрешения.
Синтаксис
h3HexAreaM2(resolution)Параметр
resolution— Разрешение индекса. Диапазон:[0, 15]. UInt8.
Возвращаемое значение
- Площадь в квадратных метрах. Float64.
Пример
SELECT h3HexAreaM2(13) AS area;┌─area─┐
│ 43.9 │
└──────┘h3HexAreaKm2
Возвращает среднюю площадь шестиугольника в квадратных километрах для заданного разрешения.
Синтаксис
h3HexAreaKm2(resolution)Параметр
resolution— разрешение индекса. Диапазон:[0, 15]. UInt8.
Возвращаемое значение
- Площадь в квадратных километрах. Float64.
Пример
SELECT h3HexAreaKm2(13) AS area;┌──────area─┐
│ 0.0000439 │
└───────────┘h3IndexesAreNeighbors
Возвращает, являются ли указанные индексы H3 соседними.
Синтаксис
h3IndexesAreNeighbors(index1, index2)Аргументы
Возвращаемое значение
Пример
SELECT h3IndexesAreNeighbors(617420388351344639, 617420388352655359) AS n;┌─n─┐
│ 1 │
└───┘h3ToChildren
Возвращает массив дочерних индексов для заданного индекса H3.
Синтаксис
h3ToChildren(index, resolution)Аргументы
index— Номер шестиугольного индекса. UInt64.resolution— Разрешение индекса. Диапазон:[0, 15]. UInt8.
Возвращаемые значения
Пример
SELECT h3ToChildren(599405990164561919, 6) AS children;┌─children───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [603909588852408319,603909588986626047,603909589120843775,603909589255061503,603909589389279231,603909589523496959,603909589657714687] │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘h3ToParent
Возвращает родительский индекс более общего уровня, содержащий указанный индекс H3.
Синтаксис
h3ToParent(index, resolution)Аргументы
index— Номер шестиугольного индекса. UInt64.resolution— Разрешение индекса. Диапазон:[0, 15]. UInt8.
Возвращаемое значение
- Родительский индекс H3. UInt64.
Пример
SELECT h3ToParent(599405990164561919, 3) AS parent;┌─────────────parent─┐
│ 590398848891879423 │
└────────────────────┘h3ToString
Преобразует представление индекса H3Index в строковое представление.
h3ToString(index)Параметр
index— номер шестиугольного индекса. UInt64.
Возвращаемое значение
- Строковое представление индекса H3. String.
Пример
SELECT h3ToString(617420388352917503) AS h3_string;┌─h3_string───────┐
│ 89184926cdbffff │
└─────────────────┘stringToH3
Преобразует строковое представление в формат H3Index (UInt64).
Синтаксис
stringToH3(index_str)Параметр
index_str— Строковое представление индекса H3. String.
Возвращаемое значение
- Номер шестиугольного индекса. При ошибке возвращает 0. UInt64.
Пример
SELECT stringToH3('89184926cc3ffff') AS index;┌──────────────index─┐
│ 617420388351344639 │
└────────────────────┘h3GetResolution
Возвращает разрешение индекса H3.
Синтаксис
h3GetResolution(index)Параметр
index— номер шестиугольного индекса. UInt64.
Возвращаемое значение
- Разрешение индекса. Диапазон:
[0, 15]. UInt8.
Пример
SELECT h3GetResolution(617420388352917503) AS res;┌─res─┐
│ 9 │
└─────┘h3IsResClassIII
Возвращает, имеет ли H3 индекс разрешение с ориентацией класса III.
Синтаксис
h3IsResClassIII(index)Параметр
index— номер шестиугольного индекса. UInt64.
Возвращаемое значение
1— индекс относится к разрешению с ориентацией Class III. UInt8.0— индекс не относится к разрешению с ориентацией Class III. UInt8.
Пример
SELECT h3IsResClassIII(617420388352917503) AS res;┌─res─┐
│ 1 │
└─────┘h3IsPentagon
Возвращает, является ли этот индекс H3 пятиугольной ячейкой.
Синтаксис
h3IsPentagon(index)Параметр
index— номер шестиугольного индекса. UInt64.
Возвращаемое значение
1— индекс соответствует пятиугольной ячейке. UInt8.0— индекс не соответствует пятиугольной ячейке. UInt8.
Пример
SELECT h3IsPentagon(644721767722457330) AS pentagon;┌─pentagon─┐
│ 0 │
└──────────┘h3GetFaces
Возвращает грани икосаэдра, с которыми пересекается указанный индекс H3.
Синтаксис
h3GetFaces(index)Параметр
index— номер шестиугольного индекса. UInt64.
Возвращаемые значения
Пример
SELECT h3GetFaces(599686042433355775) AS faces;┌─faces─┐
│ [7] │
└───────┘h3CellAreaM2
Возвращает точную площадь конкретной ячейки в квадратных метрах для указанного индекса H3.
Синтаксис
h3CellAreaM2(index)Параметр
index— номер шестиугольного индекса. UInt64.
Возвращаемое значение
- Площадь ячейки в квадратных метрах. Float64.
Пример
SELECT h3CellAreaM2(579205133326352383) AS area;┌───────────────area─┐
│ 4106166334463.9233 │
└────────────────────┘h3CellAreaRads2
Возвращает точную площадь заданной ячейки в квадратных радианах для указанного индекса H3.
Синтаксис
h3CellAreaRads2(index)Параметр
index— номер шестиугольного индекса. UInt64.
Возвращаемое значение
- Площадь ячейки в квадратных радианах. Float64.
Пример
SELECT h3CellAreaRads2(579205133326352383) AS area;┌────────────────area─┐
│ 0.10116268528089567 │
└─────────────────────┘h3ToCenterChild
Возвращает центральный дочерний (более детализированный) H3 индекс, входящий в заданный H3, на указанном разрешении.
Синтаксис
h3ToCenterChild(index, resolution)Параметры
index— номер шестиугольного индекса. UInt64.resolution— разрешение индекса. Диапазон:[0, 15]. UInt8.
Возвращаемые значения
- Индекс H3 центральной дочерней ячейки, содержащейся в указанном индексе H3 при заданном разрешении. UInt64.
Пример
SELECT h3ToCenterChild(577023702256844799,1) AS centerToChild;┌──────centerToChild─┐
│ 581496515558637567 │
└────────────────────┘h3ExactEdgeLengthM
Возвращает точную длину однонаправленного ребра, представленного входным индексом H3, в метрах.
Синтаксис
h3ExactEdgeLengthM(index)Параметр
index— номер шестиугольного индекса. UInt64.
Возвращаемое значение
- Точная длина ребра в метрах. Float64.
Пример
SELECT round(h3ExactEdgeLengthM(1310277011704381439), 6) AS exactEdgeLengthM;┌─exactEdgeLengthM─┐
│ 195449.631634 │
└──────────────────┘h3ExactEdgeLengthKm
Возвращает точную длину однонаправленного ребра, представленного переданным индексом H3, в километрах.
Синтаксис
h3ExactEdgeLengthKm(index)Параметр
index— Номер шестиугольного индекса. UInt64.
Возвращаемое значение
- Точная длина ребра в километрах. Float64.
Пример
SELECT round(h3ExactEdgeLengthKm(1310277011704381439), 8) AS exactEdgeLengthKm;┌─exactEdgeLengthKm─┐
│ 195.44963163 │
└───────────────────┘h3ExactEdgeLengthRads
Возвращает точную длину однонаправленного ребра, представленного входным индексом H3, в радианах.
Синтаксис
h3ExactEdgeLengthRads(index)Параметр
index— номер шестиугольного индекса. UInt64.
Возвращаемое значение
- Точная длина ребра в радианах. Float64.
Пример
SELECT round(h3ExactEdgeLengthRads(1310277011704381439), 12) AS exactEdgeLengthRads;┌─exactEdgeLengthRads─┐
│ 0.030677980119 │
└─────────────────────┘h3NumHexagons
Возвращает количество уникальных индексов H3 для заданного разрешения.
Синтаксис
h3NumHexagons(resolution)Параметр
resolution— разрешение индекса. Диапазон:[0, 15]. UInt8.
Возвращаемое значение
- Количество индексов H3. Int64.
Пример
SELECT h3NumHexagons(3) AS numHexagons;┌─numHexagons─┐
│ 41162 │
└─────────────┘h3PointDistM
Возвращает расстояние в метрах по "дуге большого круга" или по формуле "гаверсинуса" между парами точек GeoCoord (широта/долгота).
Синтаксис
h3PointDistM(lat1, lon1, lat2, lon2)Аргументы
lat1,lon1— широта и долгота точки 1 в градусах. Float64.lat2,lon2— широта и долгота точки 2 в градусах. Float64.
Возвращаемые значения
- Расстояние по гаверсинусу или расстояние по дуге большого круга в метрах. Float64.
Пример
SELECT h3PointDistM(-10.0 ,0.0, 10.0, 0.0) AS h3PointDistM;┌───────h3PointDistM─┐
│ 2223901.0395045886 │
└────────────────────┘h3PointDistKm
Возвращает расстояние в километрах между парами точек GeoCoord (широта/долгота), вычисленное по "дуге большого круга" или по формуле "гаверсинуса".
Синтаксис
h3PointDistKm(lat1, lon1, lat2, lon2)Аргументы
lat1,lon1— широта и долгота точки 1 в градусах. Float64.lat2,lon2— широта и долгота точки 2 в градусах. Float64.
Возвращаемые значения
- Расстояние, вычисленное по гаверсинусу или по дуге большого круга, в километрах. Float64.
Пример
SELECT h3PointDistKm(-10.0 ,0.0, 10.0, 0.0) AS h3PointDistKm;┌──────h3PointDistKm─┐
│ 2223.9010395045884 │
└────────────────────┘h3PointDistRads
Возвращает расстояние между парами точек GeoCoord (широта/долгота), вычисленное по дуге большого круга или по формуле гаверсинуса, в радианах.
Синтаксис
h3PointDistRads(lat1, lon1, lat2, lon2)Аргументы
lat1,lon1— широта и долгота точки 1 в градусах. Float64.lat2,lon2— широта и долгота точки 2 в градусах. Float64.
Возвращаемые значения
- Расстояние по формуле гаверсинуса или длина дуги большого круга в радианах. Float64.
Пример
SELECT h3PointDistRads(-10.0 ,0.0, 10.0, 0.0) AS h3PointDistRads;┌────h3PointDistRads─┐
│ 0.3490658503988659 │
└────────────────────┘h3GetRes0Indexes
Возвращает массив всех индексов H3 нулевого разрешения.
Синтаксис
h3GetRes0Indexes()Возвращаемые значения
Пример
SELECT h3GetRes0Indexes AS indexes ;┌─indexes─────────────────────────────────────┐
│ [576495936675512319,576531121047601151,....]│
└─────────────────────────────────────────────┘h3GetPentagonIndexes
Возвращает все пятиугольные индексы H3 при указанном разрешении.
Синтаксис
h3GetPentagonIndexes(resolution)Параметр
resolution— разрешение индекса. Диапазон:[0, 15]. UInt8.
Возвращаемое значение
Пример
SELECT h3GetPentagonIndexes(3) AS indexes;┌─indexes────────────────────────────────────────────────────────┐
│ [590112357393367039,590464201114255359,590816044835143679,...] │
└────────────────────────────────────────────────────────────────┘h3Line
Возвращает линию, соединяющую два указанных индекса.
Синтаксис
h3Line(start,end)Параметры
start— Номер шестиугольного индекса, представляющий начальную точку. UInt64.end— Номер шестиугольного индекса, представляющий конечную точку. UInt64.
Возвращаемое значение
Массив индексов H3, представляющих линию между двумя указанными индексами. Array(UInt64).
Пример
SELECT h3Line(590080540275638271,590103561300344831) AS indexes;┌─indexes────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [590080540275638271,590080471556161535,590080883873021951,590106516237844479,590104385934065663,590103630019821567,590103561300344831] │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘h3Distance
Возвращает расстояние между двумя указанными индексами в ячейках сетки.
Синтаксис
h3Distance(start,end)Параметр
start— номер шестиугольного индекса, обозначающий начальную точку. UInt64.end— номер шестиугольного индекса, обозначающий конечную точку. UInt64.
Возвращаемое значение
- Количество ячеек сетки. Int64.
Возвращает отрицательное число, если определить расстояние не удаётся.
Пример
SELECT h3Distance(590080540275638271,590103561300344831) AS distance;┌─distance─┐
│ 6 │
└──────────┘h3HexRing
Возвращает индексы шестиугольного кольца длины k с центром в указанном исходном h3Index.
Возвращает 0, если пентагональных искажений не обнаружено.
Синтаксис
h3HexRing(index, k)Параметр
index— Номер шестиугольного индекса, представляющий исходную ячейку. UInt64.k— Расстояние. UInt64.
Возвращаемые значения
Пример
SELECT h3HexRing(590080540275638271, toUInt16(1)) AS hexRing;┌─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.
Пример
SELECT h3GetUnidirectionalEdge(599686042433355775, 599686043507097599) AS edge;┌────────────────edge─┐
│ 1248204388774707199 │
└─────────────────────┘h3UnidirectionalEdgeIsValid
Проверяет, является ли указанный H3Index корректным индексом однонаправленного ребра. Возвращает 1, если это однонаправленное ребро, и 0 в противном случае.
Синтаксис
h3UnidirectionalEdgeIsValid(index)Параметр
index— Номер шестиугольного индекса. UInt64.
Возвращаемое значение
- 1 — Индекс H3 является валидным однонаправленным ребром. UInt8.
- 0 — Индекс H3 не является валидным однонаправленным ребром. UInt8.
Пример
SELECT h3UnidirectionalEdgeIsValid(1248204388774707199) AS validOrNot;┌─validOrNot─┐
│ 1 │
└────────────┘h3GetOriginIndexFromUnidirectionalEdge
Возвращает индекс исходного шестиугольника по H3Index однонаправленного ребра. Генерирует исключение, если входное значение не является допустимым направленным ребром (управляется настройкой functions_h3_default_if_invalid); возвращает 0, только если эта настройка включена.
Синтаксис
h3GetOriginIndexFromUnidirectionalEdge(edge)Параметр
edge— номер шестиугольного индекса, представляющего однонаправленное ребро. UInt64.
Возвращаемое значение
- Номер шестиугольного индекса исходной ячейки. UInt64.
- По умолчанию генерирует исключение
INCORRECT_DATAдля недопустимых направленных рёбер; возвращает0, еслиfunctions_h3_default_if_invalid = 1.
Пример
SELECT h3GetOriginIndexFromUnidirectionalEdge(1248204388774707199) AS origin;┌─────────────origin─┐
│ 599686042433355775 │
└────────────────────┘h3GetDestinationIndexFromUnidirectionalEdge
Возвращает индекс шестиугольника пункта назначения по однонаправленному ребру H3Index. Генерирует исключение, если входное значение не является допустимым ориентированным ребром (поведение определяется настройкой functions_h3_default_if_invalid); возвращает 0, только если эта настройка включена.
Синтаксис
h3GetDestinationIndexFromUnidirectionalEdge(edge)Параметр
edge— номер шестиугольного индекса, представляющего однонаправленное ребро. UInt64.
Возвращаемое значение
- Номер шестиугольного индекса целевой ячейки. UInt64.
- По умолчанию генерирует исключение
INCORRECT_DATAдля недопустимых направленных рёбер; возвращает0, еслиfunctions_h3_default_if_invalid = 1.
Пример
SELECT h3GetDestinationIndexFromUnidirectionalEdge(1248204388774707199) AS destination;┌────────destination─┐
│ 599686043507097599 │
└────────────────────┘h3GetIndexesFromUnidirectionalEdge
Возвращает индексы исходного шестиугольника и шестиугольника в пункте назначения для указанного H3Index однонаправленного ребра.
Синтаксис
h3GetIndexesFromUnidirectionalEdge(edge)Параметр
edge— номер шестиугольного индекса, который представляет однонаправленное ребро. UInt64.
Возвращаемое значение
Кортеж, состоящий из двух значений tuple(origin,destination):
origin— номер шестиугольного индекса исходной ячейки. UInt64.destination— номер шестиугольного индекса целевой ячейки. UInt64.
Генерирует исключение, если переданное значение не является допустимым направленным ребром (это регулируется настройкой functions_h3_default_if_invalid); возвращает (0,0) только при включённой этой настройке.
Пример
SELECT h3GetIndexesFromUnidirectionalEdge(1248204388774707199) AS indexes;┌─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.
Пример
SELECT h3GetUnidirectionalEdgesFromHexagon(599686042433355775) AS edges;┌─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.
Пример
SELECT h3GetUnidirectionalEdgeBoundary(1248204388774707199) AS boundary;┌─boundary────────────────────────────────────────────────────────────────────────┐
│ [(37.42012867767779,-122.03773496427027),(37.33755608435299,-122.090428929044)] │
└─────────────────────────────────────────────────────────────────────────────────┘