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 エンコード文字列の配列を返します。これは、指定されたボックスの境界の内側および交差するものを含み、基本的には2D グリッドを配列にフラット化したものです。
構文
引数
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 アイテムを超える場合、関数は例外をスローします。
例
クエリ:
結果: