Поделиться через


Функция h3_hexring

Область применения: флажок Databricks SQL флажок Databricks Runtime 11.3 LTS и выше

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

Синтаксис

h3_hexring ( h3CellIdExpr, kExpr )

Аргументы

  • h3CellIdExpr: выражение BIGINT или шестнадцатеричное строковое выражение, представляющее идентификатор ячейки H3.
  • kExpr: выражение INTEGER, представляющее расстояние сетки. Значение kExpr не должно быть отрицательным.

Возвраты

Массив значений того же типа, что и тип выражения h3CellIdExpr, соответствующий идентификаторам ячеек H3, которые имеют то же разрешение, что и входная ячейка H3, и образуют пустое кольцо с центром в исходной ячейке H3 на расстоянии k, где k — это значение kExpr.

Функция возвращает значение NULL, если любое из входных выражений равно NULL. Функция выполняет частичную проверку, является ли входной аргумент действительным идентификатором ячейки H3. Необходимое, но недостаточное условие для допустимого идентификатора H3 заключается в том, что его значение находится в диапазоне от 0x08001fffffffffff до 0x08ff3b6db6db6db6. Поведение функции не определено, если идентификатор входной ячейки не является допустимым идентификатором ячейки. Если значение расстояния сетки равно нулю, возвращаемый массив содержит одно значение, равное идентификатору входной ячейки H3.

Условия ошибок

  • Если h3CellIdExpr — это строка, которая не может быть преобразована в BIGINT или соответствует значению BIGINT, которое меньше 0x08001fffffffffff или больше 0x08ff3b6db6db6db6, функция возвращает H3_INVALID_CELL_ID.
  • Если значение kExpr отрицательное, функция возвращает H3_INVALID_GRID_DISTANCE_VALUE.
  • Если в кольце k исходной ячейки есть пятиугольник, функция возвращает H3_PENTAGON_ENCOUNTERED_ERROR.

Примеры

-- Simple example where the first argument is a BIGINT.
> SELECT h3_hexring(599686042433355775, 1)
  [599686014516068351,599686030622195711,599686044580839423,599686038138388479,599686043507097599,599686015589810175]

-- Simple example where the first argument is a STRING.
> SELECT h3_hexring('85283473fffffff', 1)
  [8528340bfffffff,85283447fffffff,8528347bfffffff,85283463fffffff,85283477fffffff,8528340ffffffff]

-- First input is an invalid H3 cell ID.
> SELECT h3_hexring(0, 0)
  [H3_INVALID_CELL_ID] 0 is not a valid H3 cell ID

-- Second input is an invalid grid distance value.
> SELECT h3_hexring('85283473fffffff', -1)
  [H3_INVALID_GRID_DISTANCE_VALUE] H3 grid distance -1 must be non-negative

-- The input cell is a hexagonal cell adjacent to a pentagonal cell (the 2-ring of the hexagonal cell contains the pentagon).
> SELECT H3_HexRing('8007fffffffffff', 2)
  [H3_PENTAGON_ENCOUNTERED_ERROR] A pentagon was encountered while computing the hex ring of '8007fffffffffff' with grid distance 2