ST_DISTANCE (requête NoSQL)
S’APPLIQUE À : NoSQL
Retourne la distance entre les deux expressions Point, Polygon, MultiPolygon ou LineString GeoJSON.
Notes
Si vous souhaitez obtenir plus d’informations, consultez Données d’emplacement géospatiales et GeoJSON.
Syntaxe
ST_DISTANCE(<spatial_expr_1>, <spatial_expr_2>)
Arguments
Description | |
---|---|
spatial_expr_1 |
Toute expression GeoJSON Point, Polygon, MultiPolygon ou LineString valide. |
spatial_expr_2 |
Toute expression GeoJSON Point, Polygon, MultiPolygon ou LineString valide. |
Types de retour
Retourne une expression numérique qui énumère la distance entre deux expressions.
Exemples
L’exemple suivant suppose l’existence d’un conteneur avec deux éléments.
[
{
"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"
}
]
L’exemple montre comment utiliser la fonction en tant que filtre pour retourner des éléments à une distance spécifiée.
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
}
]
Remarques
- Le résultat est exprimé en mètres pour le système de référence par défaut.
- Cette fonction bénéficie d’un index géospatial, sauf dans les requêtes avec agrégats.
- La spécification GeoJSON exige que les points d’un polygone soient spécifiés dans le sens inverse des aiguilles d’une montre. Un polygone spécifié dans le sens horaire représente l’inverse de la région qu’il contient.