ClickHouse/docs/ja/sql-reference/functions/geo/geohash.md
2024-11-18 11:58:58 +09:00

4.6 KiB
Raw Blame History

slug sidebar_label title
/ja/sql-reference/functions/geo/geohash Geohash Geohashを扱うための関数

Geohash

Geohashは、地球の表面を格子状のバケツに分割し、各セルを短い文字と数字の文字列でエンコードするジオコードシステムです。これは階層的なデータ構造であり、geohash文字列が長ければ長いほど、より正確な地理的位置を表します。

地理座標を手動でgeohash文字列に変換する必要がある場合は、geohash.orgを使用できます。

geohashEncode

緯度と経度をgeohash文字列としてエンコードします。

構文

geohashEncode(longitude, latitude, [precision])

入力値

  • longitude — エンコードしたい座標の経度部分。範囲[-180°, 180°]の浮動小数点。Float
  • latitude — エンコードしたい座標の緯度部分。範囲 [-90°, 90°]の浮動小数点。Float
  • precision (オプション) — 結果として得られるエンコードされた文字列の長さ。デフォルトは12。整数で範囲 [1, 12]Int8

:::note

  • すべての座標パラメータは同じ型である必要があります: Float32またはFloat64
  • precisionパラメータでは、1未満または12を超える値は黙って12に変換されます。 :::

返される値

  • エンコードされた座標の英数字文字列base32エンコーディングアルファベットの修正版が使用されますString

クエリ:

SELECT geohashEncode(-5.60302734375, 42.593994140625, 0) AS res;

結果:

┌─res──────────┐
│ ezs42d000000 │
└──────────────┘

geohashDecode

任意のgeohashエンコーディングされた文字列を経度と緯度にデコードします。

構文

geohashDecode(hash_str)

入力値

  • hash_str — Geohashエンコードされた文字列。

返される値

  • 経度と緯度のFloat64値のタプル(longitude, latitude)Tuple(Float64)

SELECT geohashDecode('ezs42') AS res;
┌─res─────────────────────────────┐
│ (-5.60302734375,42.60498046875) │
└─────────────────────────────────┘

geohashesInBox

指定された精度のgeohashエンコードされた文字列の配列を返します。この配列に含まれる文字列は、指定されたボックスの境界内に存在し、交差します。基本的には2Dグリッドを配列に平坦化したものです。

構文

geohashesInBox(longitude_min, latitude_min, longitude_max, latitude_max, precision)

引数

  • 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

:::note
すべての座標パラメータは同じ型である必要があります: Float32またはFloat64。 :::

返される値

  • 指定されたエリアをカバーする geohashボックスの配列で、その順序に依存するべきではありません。Array(String)。
  • [] - 最小の緯度および経度の値が、それぞれの最大値を下回らない場合は空の配列。

:::note
関数は、結果の配列が10,000,000項目を超えると例外を投げます。 :::

クエリ:

SELECT geohashesInBox(24.48, 40.56, 24.785, 40.81, 4) AS thasos;

結果:

┌─thasos──────────────────────────────────────┐
│ ['sx1q','sx1r','sx32','sx1w','sx1x','sx38'] │
└─────────────────────────────────────────────┘