ST_DISTANCE (zapytanie NoSQL)
DOTYCZY: NoSQL
Zwraca odległość między dwoma wyrażeniami GeoJSON Point, Polygon, MultiPolygon lub LineString.
Uwaga
Aby uzyskać więcej informacji, zobacz Geospatial and GeoJSON location data (Dane lokalizacji geoprzestrzennych i geoJSON).
Składnia
ST_DISTANCE(<spatial_expr_1>, <spatial_expr_2>)
Argumenty
opis | |
---|---|
spatial_expr_1 |
Dowolne prawidłowe wyrażenie GeoJSON Point, Polygon, MultiPolygon lub LineString . |
spatial_expr_2 |
Dowolne prawidłowe wyrażenie GeoJSON Point, Polygon, MultiPolygon lub LineString . |
Typy zwracane
Zwraca wyrażenie liczbowe, które wylicza odległość między dwoma wyrażeniami.
Przykłady
W poniższym przykładzie założono, że kontener istnieje z dwoma elementami.
[
{
"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"
}
]
W przykładzie pokazano, jak używać funkcji jako filtru do zwracania elementów w określonej odległości.
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
}
]
Uwagi
- Wynik jest wyrażony w miernikach dla domyślnego systemu odniesienia.
- Ta funkcja korzysta z indeksu geoprzestrzennego z wyjątkiem zapytań z agregacjami.
- Specyfikacja GeoJSON wymaga, aby punkty w obrębie wielokąta zostały określone w kolejności odwrotnej do ruchu wskazówek zegara. Wielokąt określony w kolejności wskazówek zegara reprezentuje odwrotność regionu w nim.