Поделиться через


ST_DISTANCE (запрос NoSQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

Возвращает расстояние между двумя выражениями GeoJSON Point, Polygon, MultiPolygon или LineString.

Примечание.

Дополнительные сведения см. в разделе геопространственные и геопространственные данные расположения GeoJSON.

Синтаксис

ST_DISTANCE(<spatial_expr_1>, <spatial_expr_2>)  

Аргументы

Description
spatial_expr_1 Любое допустимое выражение GeoJSON Point, Polygon, MultiPolygon или LineString.
spatial_expr_2 Любое допустимое выражение GeoJSON Point, Polygon, MultiPolygon или LineString.

Типы возвращаемых данных

Возвращает числовое выражение, которое перечисляет расстояние между двумя выражениями.

Примеры

В следующем примере предполагается, что контейнер существует с двумя элементами.

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

В примере показано, как использовать функцию в качестве фильтра для возврата элементов в пределах указанного расстояния.

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

Замечания

  • Результат выражается в метрах для эталонной системы по умолчанию.
  • Эта функция использует геопространственный индекс , кроме запросов с агрегатами.
  • В спецификации GeoJSON требуется, чтобы точки в многоугольнике были указаны в порядке против часовой стрелки. Если точки указаны в порядке по часовой стрелке, то многоугольник представляет регион, расположенный снаружи от него.