ClickHouse/docs/tr/sql_reference/functions/geo.md
2020-04-15 16:56:49 +03:00

14 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true e8cd92bba3 62 Coğrafi koordinatlar ile çalışma

Coğrafi Koordinatlarla çalışmak için fonksiyonlar

greatCircleDistance

Dünya yüzeyindeki iki nokta arasındaki mesafeyi kullanarak hesaplayın büyük daire formülü.

greatCircleDistance(lon1Deg, lat1Deg, lon2Deg, lat2Deg)

Giriş parametreleri

  • 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°].

Pozitif değerler Kuzey enlemi ve Doğu boylamına karşılık gelir ve negatif değerler Güney enlemi ve Batı boylamına karşılık gelir.

Döndürülen değer

Dünya yüzeyindeki iki nokta arasındaki mesafe, metre cinsinden.

Girdi parametre değerleri aralığın dışına düştüğünde bir özel durum oluşturur.

Örnek

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

pointİnEllipses

Noktanın elipslerden en az birine ait olup olmadığını kontrol eder. Koordinatlar kartezyen koordinat sisteminde geometriktir.

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

Giriş parametreleri

  • x, y — Coordinates of a point on the plane.
  • xᵢ, yᵢ — Coordinates of the center of the i-inci üç nokta.
  • aᵢ, bᵢ — Axes of the i- x, y koordinatları birimlerinde üç nokta.

Giriş parametreleri olmalıdır 2+4⋅n, nere n elips sayısıdır.

Döndürülen değerler

1 nokta elipslerden en az birinin içindeyse; 0hayır değil.

Örnek

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

pointİnPolygon

Noktanın düzlemdeki poligona ait olup olmadığını kontrol eder.

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

Giriş değerleri

  • (x, y) — Coordinates of a point on the plane. Data type — Demet — A tuple of two numbers.
  • [(a, b), (c, d) ...] — Polygon vertices. Data type — Dizi. Her köşe bir çift koordinat ile temsil edilir (a, b). Köşeler saat yönünde veya saat yönünün tersine sırayla belirtilmelidir. Minimum köşe sayısı 3'tür. Çokgen sabit olmalıdır.
  • Fonksiyon ayrıca delikli çokgenleri de destekler (bölümleri keser). Bu durumda, işlevin ek argümanlarını kullanarak kesilen bölümleri tanımlayan çokgenler ekleyin. İşlev, basit olmayan bağlı çokgenleri desteklemez.

Döndürülen değerler

1 nokta çokgenin içinde ise, 0 hayır değil. Nokta çokgen sınırında ise, işlev 0 veya 1 döndürebilir.

Örnek

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

geohashEncode

Enlem ve boylamı bir geohash-string olarak kodlar, Lütfen bakınız (http://geohash.org/, https://en.wikipedia.org/wiki/Geohash).

geohashEncode(longitude, latitude, [precision])

Giriş değerleri

  • boylam-kodlamak istediğiniz koordinatın boylam kısmı. Aralık floatingta yüz floatingen[-180°, 180°]
  • latitude-kodlamak istediğiniz koordinatın enlem kısmı. Aralık floatingta yüz floatingen [-90°, 90°]
  • hassas-isteğe bağlı, elde edilen kodlanmış dizenin uzunluğu, varsayılan olarak 12. Aralıktaki tamsayı [1, 12]. Herhangi bir değer daha az 1 veya daha büyük 12 sessizce dönüştürülür 12.

Döndürülen değerler

  • alfanümerik String kodlanmış koordinat (base32-kodlama alfabesinin değiştirilmiş versiyonu kullanılır).

Örnek

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

geohashDecode

Herhangi bir geohash kodlu dizeyi boylam ve enlem olarak çözer.

Giriş değerleri

  • kodlanmış dize-geohash kodlanmış dize.

Döndürülen değerler

  • (boylam, enlem) - 2-tuple Float64 boylam ve enlem değerleri.

Örnek

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

geoToH3

Dönüşler H3 nokta Endeksi (lon, lat) belirtilen çözünürlük ile.

H3 Dünya yüzeyinin altıgen fayanslara bile bölündüğü coğrafi bir indeksleme sistemidir. Bu sistem hiyerarşiktir, örn. üst seviyedeki her altıgen yedi hatta daha küçük olanlara bölünebilir.

Bu endeks öncelikle kovalama yerleri ve diğer coğrafi manipülasyonlar için kullanılır.

Sözdizimi

geoToH3(lon, lat, resolution)

Parametre

  • lon — Longitude. Type: Float64.
  • lat — Latitude. Type: Float64.
  • resolution — Index resolution. Range: [0, 15]. Tür: Uİnt8.

Döndürülen değerler

  • Altıgen dizin numarası.
  • Hata durumunda 0.

Tür: UInt64.

Örnek

Sorgu:

SELECT geoToH3(37.79506683, 55.71290588, 15) as h3Index

Sonuç:

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

geohashesİnBox

Verilen kutunun içine giren ve verilen kutunun sınırlarını kesişen, temel olarak diziye düzleştirilmiş bir 2D ızgarası olan bir dizi geohash kodlu dizeler dizisi döndürür.

Giriş değerleri

  • longitude_min - min boylam, aralıkta kayan değer [-180°, 180°]
  • latitude_min - min enlem, aralıkta kayan değer [-90°, 90°]
  • longitude_max-maksimum boylam, aralıkta kayan değer [-180°, 180°]
  • latitude_max-maksimum enlem, aralıkta kayan değer [-90°, 90°]
  • hassas-geohash hassas, UInt8 Aralık inta [1, 12]

Lütfen tüm koordinat parametrelerinin aynı tipte olması gerektiğini unutmayın: Float32 veya Float64.

Döndürülen değerler

  • verilen alanı kapsayan geohash kutularının hassas uzun dizeleri dizisi, öğelerin sırasına güvenmemelisiniz.

Ortaya çıkan dizi 10'000' 000 ürün uzunluğundaysa, işlevin bir istisna atacağını lütfen unutmayın.

Örnek

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

h3GetBaseCell

Dizin temel hücre numarasını döndürür.

Sözdizimi

h3GetBaseCell(index)

Parametre

  • index — Hexagon index number. Type: Uİnt64.

Döndürülen değerler

  • Altıgen baz hücre numarası. Tür: Uİnt8.

Örnek

Sorgu:

SELECT h3GetBaseCell(612916788725809151) as basecell

Sonuç:

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

h3HexAreaM2

Verilen çözünürlükte metrekare ortalama altıgen alan.

Sözdizimi

h3HexAreaM2(resolution)

Parametre

  • resolution — Index resolution. Range: [0, 15]. Tür: Uİnt8.

Döndürülen değerler

Örnek

Sorgu:

SELECT h3HexAreaM2(13) as area

Sonuç:

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

h3İndexesAreNeighbors

Sağlanan H3indexlerin komşu olup olmadığını döndürür.

Sözdizimi

h3IndexesAreNeighbors(index1, index2)

Parametre

  • index1 — Hexagon index number. Type: Uİnt64.
  • index2 — Hexagon index number. Type: Uİnt64.

Döndürülen değerler

  • Dönüşler 1 dizinler komşu ise, 0 başka. Tür: Uİnt8.

Örnek

Sorgu:

SELECT h3IndexesAreNeighbors(617420388351344639, 617420388352655359) AS n

Sonuç:

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

h3ToChildren

Verilen dizinin alt dizinlerini içeren bir dizi döndürür.

Sözdizimi

h3ToChildren(index, resolution)

Parametre

  • index — Hexagon index number. Type: Uİnt64.
  • resolution — Index resolution. Range: [0, 15]. Tür: Uİnt8.

Döndürülen değerler

  • Alt H3 dizinleri ile dizi. Dizi türü: Uİnt64.

Örnek

Sorgu:

SELECT h3ToChildren(599405990164561919, 6) AS children

Sonuç:

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

h3ToParent

Verilen dizini içeren üst (kaba) dizini döndürür.

Sözdizimi

h3ToParent(index, resolution)

Parametre

  • index — Hexagon index number. Type: Uİnt64.
  • resolution — Index resolution. Range: [0, 15]. Tür: Uİnt8.

Döndürülen değerler

Örnek

Sorgu:

SELECT h3ToParent(599405990164561919, 3) as parent

Sonuç:

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

h3ToString

Dizinin H3ındex gösterimini dize gösterimine dönüştürür.

h3ToString(index)

Parametre

  • index — Hexagon index number. Type: Uİnt64.

Döndürülen değerler

  • H3 dizininin dize gösterimi. Tür: Dize.

Örnek

Sorgu:

SELECT h3ToString(617420388352917503) as h3_string

Sonuç:

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

stringToH3

Dize gösterimini H3ındex (Uİnt64) gösterimine dönüştürür.

stringToH3(index_str)

Parametre

  • index_str — String representation of the H3 index. Type: Dize.

Döndürülen değerler

  • Altıgen dizin numarası. Hata 0 döndürür. Tür: Uİnt64.

Örnek

Sorgu:

SELECT stringToH3('89184926cc3ffff') as index

Sonuç:

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

h3GetResolution

Dizin çözünürlüğünü döndürür.

Sözdizimi

h3GetResolution(index)

Parametre

  • index — Hexagon index number. Type: Uİnt64.

Döndürülen değerler

  • Dizin çözünürlüğü. Aralık: [0, 15]. Tür: Uİnt8.

Örnek

Sorgu:

SELECT h3GetResolution(617420388352917503) as res

Sonuç:

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

Orijinal makale