Share via


ST_DISTANCE (NoSQL sorgusu)

UYGULANANLAR: NOSQL

İki GeoJSON Noktası, Çokgen, MultiPolygon veya LineString ifadesi arasındaki uzaklığı döndürür.

Not

Daha fazla bilgi için bkz . Jeo-uzamsal ve GeoJSON konum verileri.

Söz dizimi

ST_DISTANCE(<spatial_expr_1>, <spatial_expr_2>)  

Bağımsız değişkenler

Description
spatial_expr_1 Geçerli herhangi bir GeoJSON Noktası, Çokgen, MultiPolygon veya LineString ifadesi.
spatial_expr_2 Geçerli herhangi bir GeoJSON Noktası, Çokgen, MultiPolygon veya LineString ifadesi.

Dönüş türleri

İki ifade arasındaki uzaklığı numaralandıran sayısal bir ifade döndürür.

Örnekler

Aşağıdaki örnekte iki öğe içeren bir kapsayıcı olduğu varsayılır.

[
  {
    "name": "Headquarters",
    "location": {
      "type": "Point",
      "coordinates": [
        -122.12826822304672,
        47.63980239335718
      ]
    },
    "category": "business-offices"
  },
  {
    "name": "Research and development",
    "location": {
      "type": "Point",
      "coordinates": [
        -96.84368664765994,
        46.81297794314663
      ]
    },
    "category": "business-offices"
  }
]

Örnekte, belirli bir mesafedeki öğeleri döndürmek için işlevin filtre olarak nasıl kullanılacağı gösterilmektedir.

SELECT
    o.name,
    ST_DISTANCE(o.location, {
        "type": "Point", 
        "coordinates": [-122.11758113953535, 47.66901087006131]
    }) / 1000 AS distanceKilometers
FROM
    offices o
WHERE
    o.category = "business-offices"
[
  {
    "name": "Headquarters",
    "distanceKilometers": 3.345269817267368
  },
  {
    "name": "Research and development",
    "distanceKilometers": 1907.438421299902
  }
]

Açıklamalar

  • Sonuç, varsayılan başvuru sistemi için metre cinsinden ifade edilir.
  • Bu işlev, toplamaları olan sorgular dışında jeo-uzamsal dizinden yararlanır.
  • GeoJSON belirtimi, çokgen içindeki noktaların saat yönünün tersine belirtilmesi gerekir. Saat yönünde sırasıyla belirtilen çokgen, içindeki bölgenin tersini temsil eder.