H3 地理空間の関数
適用対象: Databricks SQL Databricks Runtime
H3 はグローバル グリッド インデックス作成システムです。 グリッド システムでは四角形や三角形などの図形を使用して、サーフェス (ここでは地球のサーフェス) をテッセレーションします。 H3 システムは六角形 (およびいくつかの五角形) を使用するように設計されており、その階層内で 16 レベルの解像度が提供されます。 解像度が高いほど、テッセレーションされた図形は小さくなります。
H3 式は、Photon 対応クラスターと、Databricks SQL Pro またはサーバーレス レベルの Databricks SQL ウェアハウスでのみサポートされています。
関連項目:
地理空間分析の H3
H3 では、空間データを処理および分析するための一般的なパターンがサポートされています。 まず、標準形式 (緯度と経度、Well-known text (WKT)、Well-known binary (WKB)、または GeoJSON から H3 セル ID への地理空間データのインデックスを作成します。 単一のデータセットを使用すると、セル ID で集計して、場所に基づく質問に回答できます。 複数のインデックス付きデータセットを使用すると、セル ID を使ってそれらを組み合わせ、異なるデータセットが相互にどのように関連しているかを明らかにできます。 データセットのこの結合は意味的には空間結合ですが、空間述語は必要ありません。
Databricks 内で H3 を使用する利点とは
Delta Lake の機能を利用して、H3 インデックス付きデータの効率的なストレージとレイアウトを実現します。 Z オーダー (H3 セル ID で) を使用した Delta Lake の OPTIMIZE 操作では、データを空間的に併置できます。 さらに、Delta Lake のデータ スキップ アルゴリズムでは併置を使用して、読み取る必要があるデータの量をインテリジェントに減らします。
データの操作方法が柔軟になります。 大きな整数または文字列として格納されている H3 セル ID を操作することを選択できます。 H3 セル ID を使用して最適なパフォーマンスを得るには、大きな整数表現を使用します。 H3 式の詳細な使用については、SQL リファレンス ガイドを参照してください。
注意
H3 ライブラリをインストールする必要はありません。 これは、バージョン 3.7.0 の H3 Java ライブラリを使用する、Databricks Runtime 11.2 以降の Databricks Runtime に表示される依存関係として含まれています。
Databricks 関数をインポートして H3 を取得する (Databricks Runtime)
Databricks SQL と Spark SQL ではインポートは必要ありません。
Python または Scala 用の H3 関数をノートブックにインポートするには、次のコマンドを使用します。
Python
from pyspark.databricks.sql import functions as dbf
Scala
import com.databricks.sql.functions._
H3 地理空間関数の一覧 (Databricks SQL)
[インポート]
Function | 説明 |
---|---|
h3_coverash3(geographyExpr, resolutionExpr) | 入力された線形または面状の地理的な場所を完全にカバーする、指定した解像度の六角形または五角形の最小セットに対応する H3 セル ID (BIGINT として表されます) の ARRAY を返します。 |
h3_coverash3string(geographyExpr, resolutionExpr) | 入力された線形または面状の地理的な場所を完全にカバーする、指定した解像度の六角形または五角形の最小セットに対応する H3 セル ID (STRING として表されます) の ARRAY を返します。 |
h3_longlatash3(longitudeExpr, latitudeExpr, resolutionExpr) | 指定した解像度で指定された経度と緯度に対応する H3 セル ID (BIGINT として) を返します。 |
h3_longlatash3string(longitudeExpr, latitudeExpr, resolutionExpr) | 指定した解像度で指定された経度と緯度に対応する H3 セル ID (16 進数の STRING) を返します。 |
h3_pointash3(geographyExpr, resolutionExpr) | 指定した解像度で指定されたポイントに対応する H3 セル ID (BIGINT として) を返します。 |
h3_pointash3string(geographyExpr, resolutionExpr) | 指定した解像度で指定されたポイントに対応する H3 セル ID (STRING として) を返します。 |
h3_polyfillash3(geographyExpr, resolutionExpr) | 入力された面状の地理的な場所に含まれているもので、指定した解像度の六角形または五角形に対応する H3 セル ID (BIGINT として表されます) の ARRAY を返します。 |
h3_polyfillash3string(geographyExpr, resolutionExpr) | 入力された面状の地理的な場所に含まれているもので、指定した解像度の六角形または五角形に対応する H3 セル ID (STRING として表されます) の ARRAY を返します。 |
h3_tessellateaswkb(geographyExpr, resolutionExpr) | 指定した解像度の H3 セルを使用して、入力した地理的な場所のテッセレーションを返します。 |
h3_try_polyfillash3(geographyExpr, resolutionExpr) | 入力された面状の地理的な場所に含まれているもので、指定した解像度の六角形または五角形に対応する H3 セル ID (BIGINT として表されます) の ARRAY を返します。 |
h3_try_polyfillash3string(geographyExpr, resolutionExpr) | 入力された面状の地理的な場所に含まれているもので、指定した解像度の六角形または五角形に対応する H3 セル ID (STRING として表されます) の ARRAY を返します。 |
エクスポート
Function | 説明 |
---|---|
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 | 説明 |
---|---|
h3_h3tostring(h3CellIdExpr) | 入力 H3 セル ID を等価の 16 進数の文字列表現に変換します。 |
h3_stringtoh3(h3CellIdStringExpr) | 入力文字列 (H3 セル ID を表す 16 進数の文字列であると予想される) を、対応する H3 セル ID の BIGINT 表現に変換します。 |
Predicates
Function | 説明 |
---|---|
h3_ischildof(h3CellId1Expr, h3CellId2Expr) | 最初の H3 セル ID が 2 番目の H3 セル ID と同じ、または子である場合に true を返します。 |
h3_ispentagon(h3CellIdExpr) | 入力 BIGINT または 16 進数の文字列が五角形の H3 セルに対応する場合は true を返します。 |
有効期限までの日数
Function | 説明 |
---|---|
h3_isvalid(expr) | 入力 BIGINT または STRING が有効な H3 セル ID の場合は true を返します。 |
h3_try_validate(h3CellIdExpr) | 有効な H3 セル ID に対応する場合は BIGINT 型または STRING 型の入力値を返し、それ以外の場合は NULL を返します。 |
h3_validate(h3CellIdExpr) | 有効な H3 セル ID に対応する場合は BIGINT 型または STRING 型の入力値を返し、それ以外の場合はエラーを返します。 |
距離関連
Function | 説明 |
---|---|
h3_distance(h3CellId1Expr, h3CellId2Expr) | 2 つの入力 H3 セル ID のグリッド距離を返します。 |
h3_hexring(h3CellIdExpr, kExpr) | 起点 H3 セルを中心とする中空六角形のリングを形成し、起点 H3 セルからグリッド距離 k にある H3 セル ID の配列を返します。 |
h3_kring(h3CellIdExpr, kExpr) | 起点セル ID から (グリッド) 距離 k 以内にある H3 セル ID を返します。 |
h3_kringdistances(h3CellIdExpr, kExpr) | 起点 H3 セル ID からグリッド距離 k 以内にあるすべての H3 セル ID (長整数または文字列として表されます) と、起点 H3 セル ID からの距離を返します。 |
h3_try_distance(h3CellId1Expr, h3CellId2Expr) | 同じ解像度の 2 つの入力 H3 セル ID のグリッド距離を返します。距離が未定義の場合は NULL を返します。 |
トラバーサル
Function | 説明 |
---|---|
h3_maxchild(h3CellIdExpr, resolutionExpr) | 指定した解像度で、入力 H3 セルの最大値の子を返します。 |
h3_minchild(h3CellIdExpr, resolutionExpr) | 指定した解像度で、入力 H3 セルの最小値の子を返します。 |
h3_resolution(h3CellIdExpr) | 入力 H3 セル ID の解像度を返します。 |
h3_tochildren(h3CellIdExpr, resolutionExpr) | 指定した解像度の入力 H3 セル ID の子 H3 セル ID の配列を返します。 |
h3_toparent(h3CellIdExpr, resolutionExpr) | 指定した解像度で、入力 H3 セル ID の親 H3 セル ID を返します。 |
圧縮
Function | 説明 |
---|---|
h3_compact(h3CellIdsExpr) | H3 セル ID の入力セットを可能な限り圧縮します。 |
h3_uncompact(h3CellIdsExpr, resolutionExpr) | H3 セル ID の入力セットを指定した解像度に分解解除します。 |