Partager via


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.