Sdílet prostřednictvím


ST_DISTANCE (dotaz NoSQL)

PLATÍ PRO: NoSQL

Vrátí vzdálenost mezi dvěma výrazy GeoJSON Point, Polygon, MultiPolygon nebo LineString.

Poznámka:

Další informace naleznete v tématu Geoprostorová a GeoJSON data o poloze.

Syntaxe

ST_DISTANCE(<spatial_expr_1>, <spatial_expr_2>)  

Argumenty

Popis
spatial_expr_1 Libovolný platný výraz GeoJSON Point, Polygon, MultiPolygon nebo LineString .
spatial_expr_2 Libovolný platný výraz GeoJSON Point, Polygon, MultiPolygon nebo LineString .

Návratové typy

Vrátí číselný výraz, který vypočítá vzdálenost mezi dvěma výrazy.

Příklady

Následující příklad předpokládá, že kontejner existuje se dvěma položkami.

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

Příklad ukazuje, jak použít funkci jako filtr k vrácení položek v zadané vzdálenosti.

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

Poznámky

  • Výsledek se vyjadřuje v metrech pro výchozí referenční systém.
  • Tato funkce využívá geoprostorový index s výjimkou dotazů s agregacemi.
  • Specifikace GeoJSON vyžaduje, aby body v polygonu byly zadány v proti směru hodinových ručiček. Mnohoúhelník zadaný v pořadí hodinových ručiček představuje inverzní funkci oblasti v ní.