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


Геопространственные функции 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. Операция OPTIMIZE Delta Lake с 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 в записных книжках, используйте следующие команды:

Python

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(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_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 или нет.

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

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

Сжатие

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