ST_DISTANCE (query NoSQL)
SI APPLICA A: NoSQL
Restituisce la distanza tra due espressioni GeoJSON Point, Polygon, MultiPolygon o LineString.
Nota
Per altre informazioni, vedere Dati località geospaziale e GeoJSON.
Sintassi
ST_DISTANCE(<spatial_expr_1>, <spatial_expr_2>)
Argomenti
Descrizione | |
---|---|
spatial_expr_1 |
Qualsiasi espressione GeoJSON Point, Polygon, MultiPolygon o LineString valida. |
spatial_expr_2 |
Qualsiasi espressione GeoJSON Point, Polygon, MultiPolygon o LineString valida. |
Tipi restituiti
Restituisce un'espressione numerica che enumera la distanza tra due espressioni.
Esempi
Nell'esempio seguente si presuppone che un contenitore esista con due elementi.
[
{
"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"
}
]
Nell'esempio viene illustrato come usare la funzione come filtro per restituire gli elementi entro una distanza specificata.
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
}
]
Osservazioni:
- Il risultato è espresso in metri per il sistema di riferimento predefinito.
- Questa funzione trae vantaggio da un indice geospaziale, ad eccezione delle query con aggregazioni.
- La specifica GeoJSON richiede che i punti all'interno di un poligono siano specificati in ordine antiorario. Un poligono specificato in senso orario rappresenta l'inverso dell'area al suo interno.