ClickHouse/docs/ja/sql_reference/functions/geo.md
2020-04-04 12:15:31 +03:00

14 KiB

machine_translated machine_translated_rev toc_priority toc_title
true d734a8e46d 62 地理座標の操作

地理座標を操作するための関数

グレートサークル距離

を使用して、地球の表面上の二つの点の間の距離を計算します 大円式.

greatCircleDistance(lon1Deg, lat1Deg, lon2Deg, lat2Deg)

入力パラメータ

  • lon1Deg — Longitude of the first point in degrees. Range: [-180°, 180°].
  • lat1Deg — Latitude of the first point in degrees. Range: [-90°, 90°].
  • lon2Deg — Longitude of the second point in degrees. Range: [-180°, 180°].
  • lat2Deg — Latitude of the second point in degrees. Range: [-90°, 90°].

正の値は北緯と東経に対応し、負の値は南緯と西経に対応します。

戻り値

メートルで、地球の表面上の二つの点の間の距離。

入力パラメーター値が範囲外になったときに例外を生成します。

例えば

SELECT greatCircleDistance(55.755831, 37.617673, -55.755831, -37.617673)
┌─greatCircleDistance(55.755831, 37.617673, -55.755831, -37.617673)─┐
│                                                14132374.194975413 │
└───────────────────────────────────────────────────────────────────┘

pointInEllipses

ポイントが楕円の少なくとも一つに属するかどうかをチェックします。 座標は、デカルト座標系ではジオメトリです。

pointInEllipses(x, y, x, y, a, b,...,xₙ, yₙ, aₙ, bₙ)

入力パラメータ

  • x, y — Coordinates of a point on the plane.
  • xᵢ, yᵢ — Coordinates of the center of the i-番目の省略記号。
  • aᵢ, bᵢ — Axes of the i-x、y座標の単位で番目の省略記号。

入力パラ 2+4⋅n、どこ n 楕円の数です。

戻り値

1 ポイントは、楕円の少なくとも一つの内側にある場合; 0そうでない場合。

例えば

SELECT pointInEllipses(10., 10., 10., 9.1, 1., 0.9999)
┌─pointInEllipses(10., 10., 10., 9.1, 1., 0.9999)─┐
│                                               1 │
└─────────────────────────────────────────────────┘

pointInPolygon

るかどうかを判の点に属する多角形の面。

pointInPolygon((x, y), [(a, b), (c, d) ...], ...)

入力値

  • (x, y) — Coordinates of a point on the plane. Data type — タプル — A tuple of two numbers.
  • [(a, b), (c, d) ...] — Polygon vertices. Data type — 配列. 各頂点は、座標のペアで表されます (a, b). 頂点は、時計回りまたは反時計回りの順序で指定する必要があります。 頂点の最小数は3です。 多角形は一定でなければなりません。
  • この機能は、穴(切り取られた部分)を持つ多角形もサポートします。 この場合、関数の追加の引数を使用してカットアウトセクションを定義するポリゴンを追加します。 この関数は、単純接続以外のポリゴンをサポートしません。

戻り値

1 ポイントがポリゴンの内側にある場合, 0 そうでない場合。 ポイントがポリゴン境界上にある場合、関数は0または1を返します。

例えば

SELECT pointInPolygon((3., 3.), [(6, 0), (8, 4), (5, 8), (0, 2)]) AS res
┌─res─┐
│   1 │
└─────┘

geohashEncode

緯度と経度をgeohash-stringとしてエンコードします。http://geohash.org/,https://en.wikipedia.org/wiki/geohash).

geohashEncode(longitude, latitude, [precision])

入力値

  • 経度-エンコードしたい座標の経度の部分。 範囲の浮遊[-180°, 180°]
  • latitude-エンコードする座標の緯度部分。 範囲の浮遊 [-90°, 90°]
  • precision-オプション、結果としてエンコードされる文字列の長さ。 12. 範囲の整数 [1, 12]. より小さい任意の値 1 またはより大きい 12 に変換される。 12.

戻り値

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

例えば

SELECT geohashEncode(-5.60302734375, 42.593994140625, 0) AS res
┌─res──────────┐
│ ezs42d000000 │
└──────────────┘

geohashDecode

Geohashでエンコードされた文字列を経度と緯度にデコードします。

入力値

  • エンコードされた文字列-geohashエンコードされた文字列。

戻り値

  • (経度、緯度)-2-のタプル Float64 経度と緯度の値。

例えば

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

geoToH3

を返します H3 点指数 (lon, lat) 指定決断を使って。

H3 地理的指標システムであり、地球の表面は六角形のタイルに分割されています。 トップレベルの各六角形は、より小さいものに分割することができます。

このインデックスは、主にバケットの場所やその他の地理空間の操作に使用されます。

構文

geoToH3(lon, lat, resolution)

パラメータ

  • lon — Longitude. Type: Float64.
  • lat — Latitude. Type: Float64.
  • resolution — Index resolution. Range: [0, 15]. タイプ: UInt8.

戻り値

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

タイプ: UInt64.

例えば

クエリ:

SELECT geoToH3(37.79506683, 55.71290588, 15) as h3Index

結果:

┌────────────h3Index─┐
│ 644325524701193974 │
└────────────────────┘

geohashesInBox

与えられたボックスの内側にあり、境界と交差する、与えられた精度のgeohashエンコードされた文字列の配列を返します。

入力値

  • longitude_min-最小経度、範囲内の浮動小数点数 [-180°, 180°]
  • latitude_min-最小緯度、範囲内の浮動小数点数 [-90°, 90°]
  • longitude_max-最高の経度、範囲の浮遊価値 [-180°, 180°]
  • latitude_max-最大緯度、範囲内の浮動小数点数 [-90°, 90°]
  • 精密-geohashの精密, UInt8 範囲内 [1, 12]

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

戻り値

  • 提供された領域をカバーするgeohash-ボックスの精度の長い文字列の配列、あなたはアイテムの順序に頼るべきではありません。

結果の配列が10'000'000項目を超える場合、関数は例外をスローすることに注意してください。

例えば

SELECT geohashesInBox(24.48, 40.56, 24.785, 40.81, 4) AS thasos
┌─thasos──────────────────────────────────────┐
│ ['sx1q','sx1r','sx32','sx1w','sx1x','sx38'] │
└─────────────────────────────────────────────┘

h3GetBaseCell

インデックスの基本セル番号を返します。

構文

h3GetBaseCell(index)

パラメータ

  • index — Hexagon index number. Type: UInt64.

戻り値

  • 六角形ベースセル番号。 タイプ: UInt8.

例えば

クエリ:

SELECT h3GetBaseCell(612916788725809151) as basecell

結果:

┌─basecell─┐
│       12 │
└──────────┘

h3HexAreaM2

与えられた解像度で平方メートルの平均六角形の面積。

構文

h3HexAreaM2(resolution)

パラメータ

  • resolution — Index resolution. Range: [0, 15]. タイプ: UInt8.

戻り値

例えば

クエリ:

SELECT h3HexAreaM2(13) as area

結果:

┌─area─┐
│ 43.9 │
└──────┘

h3IndexesAreNeighbors

指定されたh3indexesが近傍であるかどうかを返します。

構文

h3IndexesAreNeighbors(index1, index2)

パラメータ

  • index1 — Hexagon index number. Type: UInt64.
  • index2 — Hexagon index number. Type: UInt64.

戻り値

  • を返します 1 インデックスが隣接している場合, 0 そうでなければ タイプ: UInt8.

例えば

クエリ:

SELECT h3IndexesAreNeighbors(617420388351344639, 617420388352655359) AS n

結果:

┌─n─┐
│ 1 │
└───┘

h3ToChildren

指定したインデックスの子インデックスを持つ配列を返します。

構文

h3ToChildren(index, resolution)

パラメータ

  • index — Hexagon index number. Type: UInt64.
  • resolution — Index resolution. Range: [0, 15]. タイプ: UInt8.

戻り値

  • 子h3インデックスを持つ配列。 タイプの配列: UInt64.

例えば

クエリ:

SELECT h3ToChildren(599405990164561919, 6) AS children

結果:

┌─children───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [603909588852408319,603909588986626047,603909589120843775,603909589255061503,603909589389279231,603909589523496959,603909589657714687] │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

h3親

を返します(粗)インデックスを含むとして指定されたインデックス.

構文

h3ToParent(index, resolution)

パラメータ

  • index — Hexagon index number. Type: UInt64.
  • resolution — Index resolution. Range: [0, 15]. タイプ: UInt8.

戻り値

  • 親のh3インデックス。 タイプ: UInt64.

例えば

クエリ:

SELECT h3ToParent(599405990164561919, 3) as parent

結果:

┌─────────────parent─┐
│ 590398848891879423 │
└────────────────────┘

h3ToString

インデックスのh3index表現を文字列表現に変換します。

h3ToString(index)

パラメータ

  • index — Hexagon index number. Type: UInt64.

戻り値

  • H3インデックスの文字列表現。 タイプ: 文字列.

例えば

クエリ:

SELECT h3ToString(617420388352917503) as h3_string

結果:

┌─h3_string───────┐
│ 89184926cdbffff │
└─────────────────┘

stringToH3

文字列表現をh3index(uint64)表現に変換します。

stringToH3(index_str)

パラメータ

  • index_str — String representation of the H3 index. Type: 文字列.

戻り値

  • 六角形のインデックス番号。 エラー時に0を返します。 タイプ: UInt64.

例えば

クエリ:

SELECT stringToH3('89184926cc3ffff') as index

結果:

┌──────────────index─┐
│ 617420388351344639 │
└────────────────────┘

h3GetResolution

インデックスの解像度を返します。

構文

h3GetResolution(index)

パラメータ

  • index — Hexagon index number. Type: UInt64.

戻り値

  • インデックスの解決。 範囲: [0, 15]. タイプ: UInt8.

例えば

クエリ:

SELECT h3GetResolution(617420388352917503) as res

結果:

┌─res─┐
│   9 │
└─────┘

元の記事