Dela via


ST_DISTANCE (NoSQL-fråga)

GÄLLER FÖR: NoSQL

Returnerar avståndet mellan två GeoJSON Point-, Polygon-, MultiPolygon- eller LineString-uttryck.

Kommentar

Mer information finns i Geospatiala och GeoJSON-platsdata.

Syntax

ST_DISTANCE(<spatial_expr_1>, <spatial_expr_2>)  

Argument

beskrivning
spatial_expr_1 Alla giltiga GeoJSON Point-, Polygon-, MultiPolygon - eller LineString-uttryck .
spatial_expr_2 Alla giltiga GeoJSON Point-, Polygon-, MultiPolygon - eller LineString-uttryck .

Returtyper

Returnerar ett numeriskt uttryck som räknar upp avståndet mellan två uttryck.

Exempel

I följande exempel förutsätts att det finns en container med två objekt.

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

Exemplet visar hur du använder funktionen som ett filter för att returnera objekt inom ett angivet avstånd.

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

Kommentarer

  • Resultatet uttrycks i mätare för standardreferenssystemet.
  • Den här funktionen drar nytta av ett geospatialt index förutom i frågor med aggregeringar.
  • GeoJSON-specifikationen kräver att punkter i en Polygon anges i motsols ordning. En Polygon som anges i medsols ordning representerar inversen av regionen inom den.