メインコンテンツまでスキップ
メインコンテンツまでスキップ

H3 インデックスを扱うための関数

H3 インデックス

H3 は、地球の表面を均一な六角形のセルのグリッドに分割する地理的インデックスシステムです。このシステムは階層的であり、最上位レベルの各六角形(「親」)は七つの均等だが小さな六角形(「子」)に分割できます。

階層のレベルは resolution と呼ばれ、0 から 15 の値を取ることができ、0 は最も大きく粗いセルの base レベルです。

緯度と経度のペアは、グリッドセルを識別する64ビットのH3インデックスに変換できます。

H3インデックスは、主に位置をバケッティングし、他の地理空間操作に使用されます。

H3システムの完全な説明は、Uber Engineeringサイト で入手可能です。

h3IsValid

指定された数値が有効な H3 インデックスかどうかを検証します。

構文

パラメータ

  • h3index — 六角形インデックス番号。UInt64

返される値

  • 1 — この数値は有効なH3インデックスです。UInt8
  • 0 — この数値は無効なH3インデックスです。UInt8

クエリ:

結果:

h3GetResolution

指定された H3 インデックスの解像度を定義します。

構文

パラメータ

  • h3index — 六角形インデックス番号。UInt64

返される値

  • インデックス解像度。範囲: [0, 15]UInt8
  • インデックスが無効な場合、関数はランダムな値を返します。インデックスの検証には h3IsValid を使用してください。UInt8

クエリ:

結果:

h3EdgeAngle

指定された H3 六角形のエッジの平均長さを度で計算します。

構文

パラメータ

  • resolution — インデックス解像度。UInt8。範囲: [0, 15]

返される値

  • 指定された H3 六角形エッジの平均長さ(度)。Float64

クエリ:

結果:

h3EdgeLengthM

指定された H3 六角形エッジの平均長さをメートルで計算します。

構文

パラメータ

  • resolution — インデックス解像度。UInt8。範囲: [0, 15]

返される値

  • 指定された H3 六角形エッジの平均長さ(メートル)。Float64

クエリ:

結果:

h3EdgeLengthKm

指定された H3 六角形エッジの平均長さをキロメートルで計算します。

構文

パラメータ

  • resolution — インデックス解像度。UInt8。範囲: [0, 15]

返される値

  • 指定された H3 六角形エッジの平均長さ(キロメートル)。Float64

クエリ:

結果:

geoToH3

指定された解像度で、H3 ポイントインデックス (lon, lat) を返します。

構文

引数

  • lon — 経度。Float64
  • lat — 緯度。Float64
  • resolution — インデックス解像度。範囲: [0, 15]UInt8

返される値

  • 六角形インデックス番号。UInt64
  • エラーの場合は0。UInt64

クエリ:

結果:

h3ToGeo

指定された H3 インデックスに対応する重心の経度と緯度を返します。

構文

引数

  • h3Index — H3 インデックス。UInt64

返される値

  • 2つの値からなるタプル: tuple(lat, lon)lat — 緯度。Float64lon — 経度。Float64

注: 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 六角形をランダムな順序でリストします。

構文

引数

  • h3index — 六角形インデックス番号。UInt64
  • k — 半径。integer

返される値

クエリ:

結果:

h3GetBaseCell

指定された H3 インデックスのベースセル番号を返します。

構文

パラメータ

  • index — 六角形インデックス番号。UInt64

返される値

  • 六角形のベースセル番号。UInt8

クエリ:

結果:

h3HexAreaM2

指定された解像度での六角形の平均面積を平方メートルで返します。

構文

パラメータ

  • resolution — インデックス解像度。範囲: [0, 15]UInt8

返される値

  • 面積(平方メートル)。Float64

クエリ:

結果:

h3HexAreaKm2

指定された解像度での六角形の平均面積を平方キロメートルで返します。

構文

パラメータ

  • resolution — インデックス解像度。範囲: [0, 15]UInt8

返される値

  • 面積(平方キロメートル)。Float64

クエリ:

結果:

h3IndexesAreNeighbors

指定された H3 インデックスが隣接しているかどうかを返します。

構文

引数

  • index1 — 六角形インデックス番号。UInt64
  • index2 — 六角形インデックス番号。UInt64

返される値

  • 1 — インデックスは隣接しています。UInt8
  • 0 — インデックスは隣接していません。UInt8

クエリ:

結果:

h3ToChildren

指定された H3 インデックスの子インデックスの配列を返します。

構文

引数

  • index — 六角形インデックス番号。UInt64
  • resolution — インデックス解像度。範囲: [0, 15]UInt8

返される値

クエリ:

結果:

h3ToParent

指定された H3 インデックスを含む親(粗い)インデックスを返します。

構文

引数

  • index — 六角形インデックス番号。UInt64
  • resolution — インデックス解像度。範囲: [0, 15]UInt8

返される値

  • 親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

返される値

  • 1 — インデックスはクラスIIIの方向を持つ解像度を持っています。UInt8
  • 0 — インデックスはクラスIIIの方向を持つ解像度を持っていません。UInt8

クエリ:

結果:

h3IsPentagon

指定された H3 インデックスが五角形のセルを表しているかどうかを返します。

構文

パラメータ

  • index — 六角形インデックス番号。UInt64

返される値

  • 1 — インデックスは五角形のセルを表しています。UInt8
  • 0 — インデックスは五角形のセルを表していません。UInt8

クエリ:

結果:

h3GetFaces

指定された H3 インデックスによって交差するアイコサヘドロンの面を返します。

構文

パラメータ

  • index — 六角形インデックス番号。UInt64

返される値

  • 指定されたH3インデックスによって交差するアイコサヘドロンの面を含む配列。Array(UInt64)。

クエリ:

結果:

h3CellAreaM2

指定された入力H3インデックスに対応する特定のセルの正確な面積を平方メートルで返します。

構文

パラメータ

  • index — 六角形インデックス番号。UInt64

返される値

  • セルの面積(平方メートル)。Float64

クエリ:

結果:

h3CellAreaRads2

指定された入力H3インデックスに対応する特定のセルの正確な面積を平方ラジアンで返します。

構文

パラメータ

  • index — 六角形インデックス番号。UInt64

返される値

  • セルの面積(平方ラジアン)。Float64

クエリ:

結果:

h3ToCenterChild

指定された H3 インデックスが持つ中心の子(細かい) H3 インデックスを返します。

構文

パラメータ

  • index — 六角形インデックス番号。UInt64
  • resolution — インデックス解像度。範囲: [0, 15]UInt8

返される値

  • 与えられた H3 に含まれる中心の子の H3 インデックス。UInt64

クエリ:

結果:

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ポイント(緯度/経度)ペア間の「大円」または「ハバーサイン」の距離をメートルで返します。

構文

引数

  • lat1, lon1 — ポイント1の緯度と経度(度単位)。Float64
  • lat2, lon2 — ポイント2の緯度と経度(度単位)。Float64

返される値

  • ハバーサインまたは大円距離(メートル)。Float64

クエリ:

結果:

h3PointDistKm

2つのGeoCoordポイント(緯度/経度)ペア間の「大円」または「ハバーサイン」の距離をキロメートルで返します。

構文

引数

  • lat1, lon1 — ポイント1の緯度と経度(度単位)。Float64
  • lat2, lon2 — ポイント2の緯度と経度(度単位)。Float64

返される値

  • ハバーサインまたは大円距離(キロメートル)。Float64

クエリ:

結果:

h3PointDistRads

2つのGeoCoordポイント(緯度/経度)ペア間の「大円」または「ハバーサイン」の距離をラジアンで返します。

構文

引数

  • lat1, lon1 — ポイント1の緯度と経度(度単位)。Float64
  • lat2, lon2 — ポイント2の緯度と経度(度単位)。Float64

返される値

  • ハバーサインまたは大円距離(ラジアン)。Float64

クエリ:

結果:

h3GetRes0Indexes

解像度0のすべてのH3インデックスの配列を返します。

構文

返される値

  • 解像度0のすべてのH3インデックスの配列。Array(UInt64)。

クエリ:

結果:

h3GetPentagonIndexes

指定された解像度でのすべての五角形H3インデックスを返します。

構文

パラメータ

  • resolution — インデックス解像度。範囲: [0, 15]UInt8

返される値

  • すべての五角形H3インデックスの配列。Array(UInt64)。

クエリ:

結果:

h3Line

提供された2つのインデックスの間のインデックスのラインを返します。

構文

パラメータ

  • start — 開始点を表す六角形インデックス番号。UInt64
  • end — 終了点を表す六角形インデックス番号。UInt64

返される値

提供された2つのインデックスの間のインデックスのラインを表すH3インデックスの配列。Array(UInt64)。

クエリ:

結果:

h3Distance

提供された2つのインデックス間のグリッドセルでの距離を返します。

構文

パラメータ

  • start — 開始点を表す六角形インデックス番号。UInt64
  • end — 終了点を表す六角形インデックス番号。UInt64

返される値

  • グリッドセルの数。Int64

距離の取得に失敗した場合は負の数を返します。

クエリ:

結果:

h3HexRing

指定された原点h3Indexを中心とし、長さkの六角形リングのインデックスを返します。

五角形の歪みが発生しなかった場合は0を返します。

構文

パラメータ

  • index — 原点を表す六角形インデックス番号。UInt64
  • k — 距離。UInt64

返される値

クエリ:

結果:

h3GetUnidirectionalEdge

提供された始点と終点に基づいて一方向エッジH3インデックスを返し、エラーの場合は0を返します。

構文

パラメータ

  • originIndex — 始点六角形インデックス番号。UInt64
  • destinationIndex — 終点六角形インデックス番号。UInt64

返される値

  • 一方向エッジ六角形インデックス番号。UInt64

クエリ:

結果:

h3UnidirectionalEdgeIsValid

指定されたH3Indexが有効な一方向エッジインデックスであるかどうかを判断します。一方向エッジの場合は1を返し、そうでなければ0を返します。

構文

パラメータ

  • index — 六角形インデックス番号。UInt64

返される値

  • 1 — H3インデックスは有効な一方向エッジです。UInt8
  • 0 — H3インデックスは有効な一方向エッジではありません。UInt8

クエリ:

結果:

h3GetOriginIndexFromUnidirectionalEdge

一方向エッジH3インデックスから始点の六角形インデックスを返します。

構文

パラメータ

  • edge — 一方向エッジを表す六角形インデックス番号。UInt64

返される値

  • 始点六角形インデックス番号。UInt64

クエリ:

結果:

h3GetDestinationIndexFromUnidirectionalEdge

一方向エッジH3インデックスから終点の六角形インデックスを返します。

構文

パラメータ

  • edge — 一方向エッジを表す六角形インデックス番号。UInt64

返される値

  • 終点六角形インデックス番号。UInt64

クエリ:

結果:

h3GetIndexesFromUnidirectionalEdge

指定された一方向エッジH3インデックスから始点と終点の六角形インデックスを返します。

構文

パラメータ

  • edge — 一方向エッジを表す六角形インデックス番号。UInt64

返される値

2つの値からなるタプル tuple(origin, destination) :

  • origin — 始点六角形インデックス番号。UInt64
  • destination — 終点六角形インデックス番号。UInt64

提供された入力が無効な場合は (0,0) を返します。

クエリ:

結果:

h3GetUnidirectionalEdgesFromHexagon

提供されたH3インデックスからすべての一方向エッジを提供します。

構文

パラメータ

  • index — 一方向エッジを表す六角形インデックス番号。UInt64

返される値

各一方向エッジを表すH3インデックスの配列。Array(UInt64)。

クエリ:

結果:

h3GetUnidirectionalEdgeBoundary

単方向エッジを定義する座標を返します。

構文

パラメータ

  • index — 単方向エッジを表すヘクサゴンインデックス番号。 UInt64

戻り値

クエリ:

結果: