Геопространственные функции H3

Область применения:check marked yes Databricks SQL check marked yes Databricks Runtime

H3 — это глобальная система индексирования сетки. Системы сетки используют фигуру, например прямоугольники или треугольники, для тесселлате поверхность, которая в данном случае является поверхностью Земли. Система H3 была разработана для использования шестнадцатеричных (и нескольких пентагонов) и предлагает 16 уровней разрешения в своей иерархии. При более высоких разрешениях тесселатированные фигуры меньше.

Выражения H3 поддерживаются только в кластерах с поддержкой Photon и хранилищах SQL Databricks на уровнях Databricks SQL pro и бессерверных уровней.

Дополнительные сведения о разрешениях H3 и источниках H3.

См. также:

H3 для геопространственной аналитики

H3 поддерживает общий шаблон обработки и анализа пространственных данных. Начните с индексирования геопространственных данных из стандартных форматов (широты и долготы, хорошо известный текст (WKT),известный двоичный (W КБ)или GeoJSON на идентификаторы ячеек H3. С помощью одного набора данных можно агрегировать по идентификатору ячейки, чтобы ответить на вопросы, управляемые расположением. С помощью нескольких индексированных наборов данных их можно объединить с помощью идентификаторов ячеек, показывая, как разнородные наборы данных связаны друг с другом. Это присоединение наборов данных семантически является пространственным соединением, но без необходимости в пространственном предикате.

Каковы преимущества использования H3 в Databricks?

Используйте функции Delta Lake для эффективного хранения и макета индексированных данных H3. Операция Delta Lake OPTIMIZE с Упорядочением Z (на идентификаторах ячеек H3) позволяет пространственно находить данные. Кроме того, алгоритмы пропускания данных Delta Lake используют совместное расположение для интеллектуального уменьшения объема данных, которые необходимо считывать.

У вас есть гибкость в работе с данными. Вы можете работать с идентификаторами ячеек H3, хранящимися в виде больших целых чисел или строк. Для оптимальной производительности с помощью идентификаторов ячеек H3 используйте большое целочисленное представление. Подробные сведения об использовании выражений H3 см. в руководстве по SQL.

Примечание.

Не нужно устанавливать библиотеку H3. Она включается в качестве видимой зависимости в Databricks Runtime, начиная с Databricks Runtime 11.2, используя версию 3.7.0 библиотеки Java H3.

Импорт функций Databricks для получения H3 (Среда выполнения Databricks)

Импорт не требуется для Databricks SQL и Spark SQL.

Чтобы импортировать функции H3 для Python или Scala в записных книжках, используйте следующие команды:

Python

from pyspark.databricks.sql import functions as dbf

Scala

import com.databricks.sql.functions._

Список геопространственных функций H3 (Databricks SQL)

Import

Function Description
h3_coverash3(geographyExpr, resolutionExpr) Возвращает массив идентификаторов ячеек H3 (представленных как BIGINT), соответствующий минимальному набору шестнадцатеугольников или пентагонов, которые полностью охватывают входную линейную или географию.
h3_coverash3string(geographyExpr, resolutionExpr) Возвращает массив идентификаторов ячеек H3 (представленных как STRING), соответствующий минимальному набору шестнадцатеугольников или пентагонов, которые полностью охватывают входную линейную или географию.
h3_longlatash3(longitudeExpr, latitudeExpr, resolutionExpr) Возвращает идентификатор ячейки H3 (как BIGINT), соответствующий указанной широте и долготе в указанном разрешении.
h3_longlatash3string(longitudeExpr, latitudeExpr, resolutionExpr) Возвращает идентификатор ячейки H3 (в виде шестнадцатеричной строки), соответствующий заданной долготе и широте в указанном разрешении.
h3_pointash3(geographyExpr, resolutionExpr) Возвращает идентификатор ячейки H3 (как BIGINT), соответствующий предоставленной точке в указанном разрешении.
h3_pointash3string(geographyExpr, resolutionExpr) Возвращает идентификатор ячейки H3 (в виде СТРОКИ), соответствующий предоставленной точке в указанном разрешении.
h3_polyfillash3(geographyExpr, resolutionExpr) Возвращает идентификаторы ячеек H3 (представленные как BIGINT), соответствующие шестнадцатеричным или пентагонам, указанного разрешения, которые содержатся входными данными— география.
h3_polyfillash3string(geographyExpr, resolutionExpr) Возвращает массив идентификаторов ячеек H3 (представленных как STRING), соответствующих шестнадцатеричным или пентагонам, указанного разрешения, которые содержатся входными данными являются географическими.
h3_tessellateaswkb(geographyExpr, resolutionExpr) Возвращает тесселлирование входной географической области с помощью ячеек H3 в указанном разрешении.
h3_try_polyfillash3(geographyExpr, resolutionExpr) Возвращает идентификаторы ячеек H3 (представленные как BIGINT), соответствующие шестнадцатеричным или пентагонам, указанного разрешения, которые содержатся входными данными— география.
h3_try_polyfillash3string(geographyExpr, resolutionExpr) Возвращает массив идентификаторов ячеек H3 (представленных как STRING), соответствующих шестнадцатеричным или пентагонам, указанного разрешения, которые содержатся входными данными являются географическими.

Экспорт (Export)

Function Description
h3_boundaryasgeojson(h3CellIdExpr) Возвращает многоугольную границу входной ячейки H3 в формате GeoJSON.
h3_boundaryaswkb(h3CellIdExpr) Возвращает многоугольную границу входной ячейки H3 в формате WKB.
h3_boundaryaswkt(h3CellIdExpr) Возвращает многоугольную границу входной ячейки H3 в формате WKT.
h3_centerasgeojson(h3CellIdExpr) Возвращает центр входной ячейки H3 в виде точки в формате GeoJSON.
h3_centeraswkb(h3CellIdExpr) Возвращает центр входной ячейки H3 в виде точки в формате WKB.
h3_centeraswkt(h3CellIdExpr) Возвращает центр входной ячейки H3 в виде точки в формате WKT.

Преобразования

Function Description
h3_h3tostring(h3CellIdExpr) Преобразует идентификатор входной ячейки H3 в эквивалентное шестнадцатеричное строковое представление.
h3_stringtoh3(h3CellIdStringExpr) Преобразует входную строку, которая, как ожидается, будет шестнадцатеричной строкой, представляющей идентификатор ячейки H3, в соответствующее представление BIGINT идентификатора ячейки H3.

Предикаты

Function Description
h3_ischildof(h3CellId1Expr, h3CellId2Expr) Возвращает значение true, если первый идентификатор ячейки H3 равен или дочерний элемент второго идентификатора ячейки H3.
h3_ispentagon(h3CellIdExpr) Возвращает значение true, в зависимости от того, соответствует входной объект BIGINT или шестнадцатеричная строка пятиугольной ячейке H3 или нет.

Срок действия

Function Description
h3_isvalid(expr) Возвращает значение true, если входной объект BIGINT или STRING является допустимым идентификатором ячейки H3.
h3_try_validate(h3CellIdExpr) Возвращает входное значение типа BIGINT или STRING, если оно соответствует допустимому идентификатору ячейки H3 или NULL в противном случае.
h3_validate(h3CellIdExpr) Возвращает входное значение типа BIGINT или STRING, если оно соответствует допустимому идентификатору ячейки H3, в противном случае возвращает ошибку.
Function Description
h3_distance(h3CellId1Expr, h3CellId2Expr) Возвращает расстояние сетки двух входных идентификаторов ячеек H3.
h3_hexring(h3CellIdExpr, kExpr) Возвращает массив идентификаторов ячеек H3, которые образуют пустое шестнадцатеричное кольцо, центрированное в исходной ячейке H3 и на k расстоянии сетки от исходной ячейки H3.
h3_kring(h3CellIdExpr, kExpr) Возвращает идентификаторы ячеек H3, которые находятся в пределах (сетки) от k идентификатора исходной ячейки.
h3_kringdistances(h3CellIdExpr, kExpr) Возвращает все идентификаторы ячеек H3 (представленные в виде целых чисел или строк) в пределах расстояния k от идентификатора ячейки H3 источника, а также их расстояние от идентификатора ячейки H3 источника.
h3_try_distance(h3CellId1Expr, h3CellId2Expr) Возвращает расстояние сетки двух входных идентификаторов ячеек H3 одного разрешения или NULL, если расстояние не определено.

Обхода

Function Description
h3_maxchild(h3CellIdExpr, resolutionExpr) Возвращает дочерний элемент максимального значения входной ячейки H3 в указанном разрешении.
h3_minchild(h3CellIdExpr, resolutionExpr) Возвращает дочерний элемент минимального значения входной ячейки H3 в указанном разрешении.
h3_resolution(h3CellIdExpr) Возвращает разрешение входного идентификатора ячейки H3.
h3_tochildren(h3CellIdExpr, resolutionExpr) Возвращает массив дочерних идентификаторов ячеек H3 входного идентификатора ячейки H3 по указанному разрешению.
h3_toparent(h3CellIdExpr, resolutionExpr) Возвращает родительский идентификатор ячейки H3 входной ячейки H3 по указанному разрешению.

Сжатие

Function Description
h3_compact(h3CellIdsExpr) Сжимает входной набор идентификаторов ячеек H3 как можно лучше.
h3_uncompact(h3CellIdsExpr, resolutionExpr) Не компактирует входной набор идентификаторов ячеек H3 к указанному разрешению.