Geohash を扱うための関数
Geohash
Geohash はジオコードシステムで、地球の表面を格子状のグリッドセル(バケット)に分割し、それぞれのセルを英数字からなる短い文字列としてエンコードします。これは階層的なデータ構造であり、Geohash 文字列が長くなるほど、地理的位置をより高い精度で表現できます。
地理座標を Geohash 文字列に手動で変換する必要がある場合は、geohash.org を利用できます。
geohashEncode
緯度と経度を geohash 形式の文字列にエンコードします。
構文
入力値
longitude— エンコードする座標の経度部分。[-180°, 180°]の範囲の浮動小数点数。Float。latitude— エンコードする座標の緯度部分。[-90°, 90°]の範囲の浮動小数点数。Float。precision(任意) — エンコード結果の文字列長。デフォルトは12。[1, 12]の範囲の整数。Int8。
注記
- すべての座標パラメータは、
Float32またはFloat64のいずれか、同じ型でなければなりません。 precisionパラメータについて、1未満または12より大きい値は、自動的に12に変換されます。
返される値
- エンコードされた座標を表す英数字の文字列(改変版の base32 エンコード用アルファベットを使用)。String。
例
クエリ:
結果:
geohashDecode
geohash でエンコードされた任意の文字列を緯度・経度にデコードします。
構文
入力値
hash_str— Geohash でエンコードされた文字列。
戻り値
例
geohashesInBox
指定されたボックスの内部および境界と交差する位置にある、指定した精度の geohash でエンコードされた文字列の配列を返します。基本的には、2 次元グリッドを 1 次元の配列に平坦化したものです。
構文
引数
longitude_min— 最小経度。範囲:[-180°, 180°]。Float。latitude_min— 最小緯度。範囲:[-90°, 90°]。Float。longitude_max— 最大経度。範囲:[-180°, 180°]。Float。latitude_max— 最大緯度。範囲:[-90°, 90°]。Float。precision— Geohash の精度。範囲:[1, 12]。UInt8。
注記
すべての座標パラメータは同じ型でなければなりません。Float32 または Float64 のいずれかです。
戻り値
- 指定された領域をカバーする、指定した精度の長さを持つ geohash ボックス文字列の配列です。要素の順序には依存しないでください。Array(String)。
[]- 最小緯度および最小経度の値が、それぞれ対応する最大値より小さくない場合は空配列を返します。
注記
結果の配列が 10'000'000 要素を超える場合、この関数は例外をスローします。
例
クエリ:
結果: