Teilen über


ST_DISTANCE (NoSQL-Abfrage)

GILT FÜR: NoSQL

Gibt den Abstand zwischen den beiden GeoJSON-Punkt, Polygon, MultiPolygon oder LineString-Ausdrücken zurück.

Hinweis

Weitere Informationen finden Sie unter Räumliche Daten und GeoJSON-Standortdaten.

Syntax

ST_DISTANCE(<spatial_expr_1>, <spatial_expr_2>)  

Argumente

BESCHREIBUNG
spatial_expr_1 Ein beliebiger gültiger GeoJSON Point, Polygon, MultiPolygon oder LineString-Ausdruck.
spatial_expr_2 Ein beliebiger gültiger GeoJSON Point, Polygon, MultiPolygon oder LineString-Ausdruck.

Rückgabetypen

Gibt einen numerischen Ausdruck zurück, der den Abstand zwischen zwei Ausdrücken aufzählt.

Beispiele

Im folgenden Beispiel wird davon ausgegangen, dass ein Container mit zwei Elementen vorhanden ist.

[
  {
    "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"
  }
]

Das Beispiel zeigt, wie Sie die Funktion als Filter verwenden, um Elemente innerhalb einer angegebenen Entfernung zurückzugeben.

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
  }
]

Bemerkungen

  • Das Resultat wird für das Standardreferenzsystem in Metern angegeben.
  • Diese Funktion profitiert von einem räumlichen Index (außer bei Abfragen mit Aggregaten).
  • Die GeoJSON-Spezifikation erfordert, dass die Punkte innerhalb eines Polygons gegen den Uhrzeigersinn angegeben werden. Ein Polygon, das im Uhrzeigersinn angegeben wird, stellt die Umkehrung der darin enthaltenen Region dar.