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


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

Область применения:отмечено Databricks SQL отмечено Databricks Runtime

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

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

Подробнее о решениях H3 и происхождении H3.

См. также:

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

H3 поддерживает общий шаблон обработки и анализа пространственных данных. Начните с индексирования геопространственных данных из стандартных форматов (широта и долгота, хорошо известный текст (WKT), хорошо известный двоичный формат (WKB), или 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 Runtime)

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

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

Питон

from pyspark.databricks.sql import functions as dbf

язык программирования Scala

import com.databricks.sql.functions._

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

Импорт

Функция Описание
h3_coverash3(geographyExpr, resolutionExpr) Возвращает массив идентификаторов ячеек H3 (представленных как BIGINT), соответствующих минимальному набору шестиугольников или пентагонов, которые полностью охватывают входную линейную или ареальную географию.
h3_coverash3string(geographyExpr, resolutionExpr) Возвращает массив идентификаторов ячеек H3 (представленных как STRING), соответствующий минимальному набору шестиугольников или пентагонов заданного разрешения, которые полностью охватывают входную линейную или площадную географию.
h3_longlatash3(долгота, широта, разрешение) Возвращает идентификатор ячейки H3 (как BIGINT), соответствующий указанной широте и долготе в указанном разрешении.
h3_longlatash3string(долготаExpr, широтаExpr, разрешениеExpr) Возвращает идентификатор ячейки 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_coverash3(geographyExpr, resolutionExpr) Возвращает массив идентификаторов ячеек H3 (представленных как BIGINT), соответствующий минимальному набору шестиугольников или пентагонов заданного разрешения, которые полностью покрывают входную линейную или ареальную географию, или NULL, если первый аргумент недопустим.
h3_try_coverash3string(geographyExpr, resolutionExpr) Возвращает массив идентификаторов ячеек H3 (представленных как STRING), соответствующий минимальному набору шестнадцатеугольников или пентагонов, заданного разрешения, который полностью охватывает входную линейную или географию или значение NULL, если первый аргумент недопустим.
h3_try_polyfillash3(geographyExpr, resolutionExpr) Возвращает массив идентификаторов ячеек H3 (представленных как BIGINT), соответствующих шестиугольникам или пентагонам указанного разрешения, которые содержатся входной групповой географией.
h3_try_polyfillash3string(geographyExpr, resolutionExpr) Возвращает массив идентификаторов ячеек H3 (представленных как STRING), соответствующих шестиугольникам или пятиугольникам указанного разрешения, которые содержатся в заданной географической области.
h3_try_tessellateaswkb(geographyExpr, resolutionExpr) Возвращает тесселяцию входной географии с помощью ячеек H3 в указанном разрешении или результат NULL, если первый аргумент недопустим или функция не смогла вычислить тесселяцию.

Экспорт (Export)

Функция Описание
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.

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

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

Предикаты

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

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

Функция Описание
h3_isvalid(expr) Возвращает значение true, если входной объект BIGINT или STRING является допустимым идентификатором ячейки H3.
h3_try_validate(h3CellIdExpr) Возвращает входное значение типа BIGINT или STRING, если оно соответствует допустимому идентификатору ячейки H3 или NULL в противном случае.
h3_validate(h3CellIdExpr) Возвращает входное значение типа BIGINT или STRING, если оно соответствует допустимому идентификатору ячейки H3, в противном случае возвращает ошибку.
Функция Описание
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, если расстояние не определено.

Обхода

Функция Описание
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 на указанном разрешении.

Сжатие

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