Функция h3_tessellateaswkb
Область применения: Databricks SQL Databricks Runtime 14.2 и более поздних версий
Возвращает тесселлирование входной географической области с помощью ячеек H3 в указанном разрешении. Тесселлация представлена массивом структур, каждый из которых представляет элемент тесселяции. Каждый элемент тесселяции состоит из идентификатора ячейки H3 (представленного как длинное целое число), логическое значение, указывающее, полностью ли входная география охватывает ячейку, и двоичное значение, соответствующее описанию WKB пересечения входного географического региона с ячейкой H3.
Возвращаемые ячейки H3 коллективно образуют минимальный набор шестнадцатеричных или пятиугольников, в указанном разрешении, которые полностью охватывают входную географию. Географии, возвращаемые (через их представления WKB ), образуют тесселлирование входной географии.
Синтаксис
h3_tessellateaswkb ( geographyExpr, resolutionExpr )
Аргументы
-
geographyExpr
: двоичное или строковое выражение, представляющее географию в формате WKB, WKT или GeoJSON. Ожидается, что география будет иметь координаты долготы и широты в градусах в системе координат WGS84. -
resolutionExpr
: выражение INT с значением между0
и15
включающими, указывая разрешение идентификаторов ячеек H3.
Возвраты
Массив именованных структур с тремя полями типа BIGINT, BOOLEAN и BINARY, именованнымcellid
core
, и chip
соответственно, представляющий тесселяции входного географического региона с ячейками H3 в указанном разрешении.
Первое поле структуры — это идентификатор ячейки H3 (представленный в виде длинного целого числа). Второе поле в структуре — логическое значение, указывающее, является ли ячейка H3 основной ячейкой, в этом случае значение поля имеет true
значение или нет, в этом случае это значение false
поля. Основная ячейка — это ячейка H3, которая полностью охватывается входной географией (то есть ее пересечение с входной географией — это сама ячейка). Третье поле — это двоичное значение, представляющее описание WKB географии, которая является пересечением входного географического региона и ячейки H3. Возвращаемые ячейки H3 вместе образуют минимальный набор покрытия входного географического региона. Географические области, соответствующие возвращаемым описаниям WKB, вместе образуют тесселлацию (декомпозицию) входной географической области.
Функция возвращается NULL
, если какой-либо из входных выражений имеет значение NULL
.
Если первый входной аргумент имеет тип BINARY, входное значение должно быть описанием точки, строки, многоугольника, многоточия, многострочного или многоугольника.
Если первый входной аргумент имеет тип STRING, входное значение, как ожидается, будет либо WKT , либо описание GeoJSON точки, линии, многоугольника, многоточия, многострочного или многоугольника.
Измерение области ввода может быть 2D, 3DZ, 3DM или 4D.
Условия ошибок
- Если
geographyExpr
имеет тип BINARY и значение является недопустимым WKB или представляет коллекцию геометрии, функция возвращает WKB_PARSE_ERROR. - Если
geographyExpr
имеет тип STRING и значение является недопустимым WKT или представляет коллекцию геометрии, функция возвращает WKT_PARSE_ERROR. - Если
geographyExpr
имеет тип STRING и значение является недопустимым GeoJSON или представляет коллекцию геометрии, функция возвращает GEOJSON_PARSE_ERROR. - Если значение
resolutionExpr
меньше0
или больше15
, функция возвращает H3_INVALID_RESOLUTION_VALUE.
Примеры
> SELECT h3_h3tostring(cellid), core, hex(chip) FROM (SELECT inline(h3_tessellateaswkb('MULTIPOINT(20 0,20 10,40 30)', 0))) ORDER BY 1
802dfffffffffff false 010100000000000000000044400000000000003E40
806bfffffffffff false 010400000002000000010100000000000000000034400000000000000000010100000000000000000034400000000000002440
-- Feeding an empty geometry collection in GeoJSON format (geometry collections are not supported).
> SELECT h3_tessellateaswkb('{"type":"GeometryCollection","geometries":[]}', 2)
[GEOJSON_PARSE_ERROR] Error parsing GeoJSON: Invalid or unsupported type '"GeometryCollection"' at position 9 SQLSTATE: 22023
-- Feeding an invalid WKB (invalid endianness value)
> SELECT h3_tessellateaswkb(unhex('020700000000'), 2)
[WKB_PARSE_ERROR] Error parsing WKB: Invalid byte order 2 at position 1 SQLSTATE: 22023
-- Feeding an invalid polygon in WKT (polygon is not closed)
> SELECT h3_tessellateaswkb('POLYGON((-122.4194 37.7749,-118.2437 34.0522,-74.0060 40.7128,-74.0060 40.7128))', 2)
[WKT_PARSE_ERROR] Error parsing WKT: Found non-closed ring at position 80 SQLSTATE: 22023
-- Resolution is out of range.
> SELECT h3_tessellateaswkb('POLYGON((-122.4194 37.7749,-118.2437 34.0522,-74.0060 40.7128,-122.4194 37.7749))', 16)
[H3_INVALID_RESOLUTION_VALUE] H3 resolution 16 must be between 0 and 15, inclusive SQLSTATE: 22023