ST_DISTANCE (NoSQL-query)
VAN TOEPASSING OP: NoSQL
Retourneert de afstand tussen twee GeoJSON-punt-, polygoon-, multipolygon- of LineString-expressies.
Notitie
Zie Georuimtelijke en GeoJSON-locatiegegevens voor meer informatie.
Syntaxis
ST_DISTANCE(<spatial_expr_1>, <spatial_expr_2>)
Argumenten
Beschrijving | |
---|---|
spatial_expr_1 |
Elke geldige GeoJSON-punt-, veelhoek-, multipolygon- of LineString-expressie. |
spatial_expr_2 |
Elke geldige GeoJSON-punt-, veelhoek-, multipolygon- of LineString-expressie. |
Retourtypen
Retourneert een numerieke expressie die de afstand tussen twee expressies opsommen.
Voorbeelden
In het volgende voorbeeld wordt ervan uitgegaan dat er een container bestaat met twee items.
[
{
"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"
}
]
In het voorbeeld ziet u hoe u de functie gebruikt als filter om items binnen een opgegeven afstand te retourneren.
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
}
]
Opmerkingen
- Het resultaat wordt uitgedrukt in meters voor het standaardreferentiesysteem.
- Deze functie profiteert van een georuimtelijke index , behalve in query's met aggregaties.
- De GeoJSON-specificatie vereist dat punten binnen een veelhoek worden opgegeven in volgorde met de klok mee. Een veelhoek die in rechtsom is opgegeven, vertegenwoordigt de inverse van de regio in het gebied.