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
Açıklama | |
---|---|
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 belirtilen çokgen, içindeki bölgenin tersini temsil eder.