H3 インデックスを扱うための関数
H3 インデックス
H3 は、地球の表面を均一な六角形のセルのグリッドに分割する地理的インデックスシステムです。このシステムは階層的であり、最上位レベルの各六角形(「親」)は七つの均等だが小さな六角形(「子」)に分割できます。
階層のレベルは resolution
と呼ばれ、0
から 15
の値を取ることができ、0
は最も大きく粗いセルの base
レベルです。
緯度と経度のペアは、グリッドセルを識別する64ビットのH3インデックスに変換できます。
H3インデックスは、主に位置をバケッティングし、他の地理空間操作に使用されます。
H3システムの完全な説明は、Uber Engineeringサイト で入手可能です。
h3IsValid
指定された数値が有効な H3 インデックスかどうかを検証します。
構文
パラメータ
h3index
— 六角形インデックス番号。UInt64。
返される値
例
クエリ:
結果:
h3GetResolution
指定された H3 インデックスの解像度を定義します。
構文
パラメータ
h3index
— 六角形インデックス番号。UInt64。
返される値
例
クエリ:
結果:
h3EdgeAngle
指定された H3 六角形のエッジの平均長さを度で計算します。
構文
パラメータ
resolution
— インデックス解像度。UInt8。範囲:[0, 15]
。
返される値
例
クエリ:
結果:
h3EdgeLengthM
指定された H3 六角形エッジの平均長さをメートルで計算します。
構文
パラメータ
resolution
— インデックス解像度。UInt8。範囲:[0, 15]
。
返される値
例
クエリ:
結果:
h3EdgeLengthKm
指定された H3 六角形エッジの平均長さをキロメートルで計算します。
構文
パラメータ
resolution
— インデックス解像度。UInt8。範囲:[0, 15]
。
返される値
例
クエリ:
結果:
geoToH3
指定された解像度で、H3 ポイントインデックス (lon, lat)
を返します。
構文
引数
返される値
例
クエリ:
結果:
h3ToGeo
指定された H3 インデックスに対応する重心の経度と緯度を返します。
構文
引数
h3Index
— H3 インデックス。UInt64。
返される値
注: ClickHouse v24.12以前では、h3ToGeo()
は (lon, lat)
の順で値を返します。ClickHouse v25.1以降では、返される値は (lat, lon)
の順です。以前の動作は、設定 h3togeo_lon_lat_result_order = true
を使用して復元できます。
例
クエリ:
結果:
h3ToGeoBoundary
指定されたH3インデックスの境界に対応する (lat, lon)
ペアの配列を返します。
構文
引数
h3Index
— H3 インデックス。UInt64。
返される値
例
クエリ:
結果:
h3kRing
与えられた六角形から半径 k
の範囲内にあるすべての H3 六角形をランダムな順序でリストします。
構文
引数
返される値
例
クエリ:
結果:
h3GetBaseCell
指定された H3 インデックスのベースセル番号を返します。
構文
パラメータ
index
— 六角形インデックス番号。UInt64。
返される値
- 六角形のベースセル番号。UInt8。
例
クエリ:
結果:
h3HexAreaM2
指定された解像度での六角形の平均面積を平方メートルで返します。
構文
パラメータ
resolution
— インデックス解像度。範囲:[0, 15]
。UInt8。
返される値
- 面積(平方メートル)。Float64。
例
クエリ:
結果:
h3HexAreaKm2
指定された解像度での六角形の平均面積を平方キロメートルで返します。
構文
パラメータ
resolution
— インデックス解像度。範囲:[0, 15]
。UInt8。
返される値
- 面積(平方キロメートル)。Float64。
例
クエリ:
結果:
h3IndexesAreNeighbors
指定された H3 インデックスが隣接しているかどうかを返します。
構文
引数
返される値
例
クエリ:
結果:
h3ToChildren
指定された H3 インデックスの子インデックスの配列を返します。
構文
引数
返される値
例
クエリ:
結果:
h3ToParent
指定された H3 インデックスを含む親(粗い)インデックスを返します。
構文
引数
返される値
- 親H3インデックス。UInt64。
例
クエリ:
結果:
h3ToString
インデックスの H3Index
表現を文字列表現に変換します。
パラメータ
index
— 六角形インデックス番号。UInt64。
返される値
- H3インデックスの文字列表現。String。
例
クエリ:
結果:
stringToH3
文字列表現を H3Index
(UInt64) 表現に変換します。
構文
パラメータ
index_str
— H3インデックスの文字列表現。String。
返される値
- 六角形インデックス番号。エラー時は0を返します。UInt64。
例
クエリ:
結果:
h3GetResolution
H3 インデックスの解像度を返します。
構文
パラメータ
index
— 六角形インデックス番号。UInt64。
返される値
- インデックス解像度。範囲:
[0, 15]
。UInt8。
例
クエリ:
結果:
h3IsResClassIII
指定された H3 インデックスがクラスIIIの方向を持つ解像度を持っているかどうかを返します。
構文
パラメータ
index
— 六角形インデックス番号。UInt64。
返される値
例
クエリ:
結果:
h3IsPentagon
指定された H3 インデックスが五角形のセルを表しているかどうかを返します。
構文
パラメータ
index
— 六角形インデックス番号。UInt64。
返される値
例
クエリ:
結果:
h3GetFaces
指定された H3 インデックスによって交差するアイコサヘドロンの面を返します。
構文
パラメータ
index
— 六角形インデックス番号。UInt64。
返される値
例
クエリ:
結果:
h3CellAreaM2
指定された入力H3インデックスに対応する特定のセルの正確な面積を平方メートルで返します。
構文
パラメータ
index
— 六角形インデックス番号。UInt64。
返される値
- セルの面積(平方メートル)。Float64。
例
クエリ:
結果:
h3CellAreaRads2
指定された入力H3インデックスに対応する特定のセルの正確な面積を平方ラジアンで返します。
構文
パラメータ
index
— 六角形インデックス番号。UInt64。
返される値
- セルの面積(平方ラジアン)。Float64。
例
クエリ:
結果:
h3ToCenterChild
指定された H3 インデックスが持つ中心の子(細かい) H3 インデックスを返します。
構文
パラメータ
返される値
例
クエリ:
結果:
h3ExactEdgeLengthM
指定されたh3インデックスで表される一方向エッジの正確な長さをメートルで返します。
構文
パラメータ
index
— 六角形インデックス番号。UInt64。
返される値
- 正確なエッジの長さ(メートル)。Float64。
例
クエリ:
結果:
h3ExactEdgeLengthKm
指定されたh3インデックスで表される一方向エッジの正確な長さをキロメートルで返します。
構文
パラメータ
index
— 六角形インデックス番号。UInt64。
返される値
- 正確なエッジの長さ(キロメートル)。Float64。
例
クエリ:
結果:
h3ExactEdgeLengthRads
指定されたh3インデックスで表される一方向エッジの正確な長さをラジアンで返します。
構文
パラメータ
index
— 六角形インデックス番号。UInt64。
返される値
- 正確なエッジの長さ(ラジアン)。Float64。
例
クエリ:
結果:
h3NumHexagons
指定された解像度でのユニークなH3インデックスの数を返します。
構文
パラメータ
resolution
— インデックス解像度。範囲:[0, 15]
。UInt8。
返される値
- H3インデックスの数。Int64。
例
クエリ:
結果:
h3PointDistM
2つのGeoCoordポイント(緯度/経度)ペア間の「大円」または「ハバーサイン」の距離をメートルで返します。
構文
引数
返される値
- ハバーサインまたは大円距離(メートル)。Float64。
例
クエリ:
結果:
h3PointDistKm
2つのGeoCoordポイント(緯度/経度)ペア間の「大円」または「ハバーサイン」の距離をキロメートルで返します。
構文
引数
返される値
- ハバーサインまたは大円距離(キロメートル)。Float64。
例
クエリ:
結果:
h3PointDistRads
2つのGeoCoordポイント(緯度/経度)ペア間の「大円」または「ハバーサイン」の距離をラジアンで返します。
構文
引数
返される値
- ハバーサインまたは大円距離(ラジアン)。Float64。
例
クエリ:
結果:
h3GetRes0Indexes
解像度0のすべてのH3インデックスの配列を返します。
構文
返される値
例
クエリ:
結果:
h3GetPentagonIndexes
指定された解像度でのすべての五角形H3インデックスを返します。
構文
パラメータ
resolution
— インデックス解像度。範囲:[0, 15]
。UInt8。
返される値
例
クエリ:
結果:
h3Line
提供された2つのインデックスの間のインデックスのラインを返します。
構文
パラメータ
返される値
提供された2つのインデックスの間のインデックスのラインを表すH3インデックスの配列。Array(UInt64)。
例
クエリ:
結果:
h3Distance
提供された2つのインデックス間のグリッドセルでの距離を返します。
構文
パラメータ
返される値
- グリッドセルの数。Int64。
距離の取得に失敗した場合は負の数を返します。
例
クエリ:
結果:
h3HexRing
指定された原点h3Indexを中心とし、長さkの六角形リングのインデックスを返します。
五角形の歪みが発生しなかった場合は0を返します。
構文
パラメータ
返される値
例
クエリ:
結果:
h3GetUnidirectionalEdge
提供された始点と終点に基づいて一方向エッジH3インデックスを返し、エラーの場合は0を返します。
構文
パラメータ
返される値
- 一方向エッジ六角形インデックス番号。UInt64。
例
クエリ:
結果:
h3UnidirectionalEdgeIsValid
指定されたH3Indexが有効な一方向エッジインデックスであるかどうかを判断します。一方向エッジの場合は1を返し、そうでなければ0を返します。
構文
パラメータ
index
— 六角形インデックス番号。UInt64。
返される値
例
クエリ:
結果:
h3GetOriginIndexFromUnidirectionalEdge
一方向エッジH3インデックスから始点の六角形インデックスを返します。
構文
パラメータ
edge
— 一方向エッジを表す六角形インデックス番号。UInt64。
返される値
- 始点六角形インデックス番号。UInt64。
例
クエリ:
結果:
h3GetDestinationIndexFromUnidirectionalEdge
一方向エッジH3インデックスから終点の六角形インデックスを返します。
構文
パラメータ
edge
— 一方向エッジを表す六角形インデックス番号。UInt64。
返される値
- 終点六角形インデックス番号。UInt64。
例
クエリ:
結果:
h3GetIndexesFromUnidirectionalEdge
指定された一方向エッジH3インデックスから始点と終点の六角形インデックスを返します。
構文
パラメータ
edge
— 一方向エッジを表す六角形インデックス番号。UInt64。
返される値
2つの値からなるタプル tuple(origin, destination)
:
提供された入力が無効な場合は (0,0)
を返します。
例
クエリ:
結果:
h3GetUnidirectionalEdgesFromHexagon
提供されたH3インデックスからすべての一方向エッジを提供します。
構文
パラメータ
index
— 一方向エッジを表す六角形インデックス番号。UInt64。
返される値
各一方向エッジを表すH3インデックスの配列。Array(UInt64)。
例
クエリ:
結果:
h3GetUnidirectionalEdgeBoundary
単方向エッジを定義する座標を返します。
構文
パラメータ
index
— 単方向エッジを表すヘクサゴンインデックス番号。 UInt64。
戻り値
例
クエリ:
結果: