H3 地理空間の関数

適用対象:check marked yes Databricks SQL check marked yes Databricks Runtime

H3 はグローバル グリッド インデックス作成システムです。 グリッド システムでは四角形や三角形などの図形を使用して、サーフェス (ここでは地球のサーフェス) をテッセレーションします。 H3 システムは六角形 (およびいくつかの五角形) を使用するように設計されており、その階層内で 16 レベルの解像度が提供されます。 解像度が高いほど、テッセレーションされた図形は小さくなります。

H3 式は、Photon 対応クラスターと、Databricks SQL Pro またはサーバーレス レベルの Databricks SQL ウェアハウスでのみサポートされています。

H3 の解像度H3 の起点の詳細を参照してください。

関連項目:

地理空間分析の 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 の入力セットを指定した解像度に分解解除します。