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 требуется, чтобы точки в многоугольнике были указаны в порядке против часовой стрелки. Если точки указаны в порядке по часовой стрелке, то многоугольник представляет регион, расположенный снаружи от него.