ST_DISTANCE (consulta NoSQL)
APLICA-SE A: NoSQL
Retorna a distância entre duas expressões Pontos, Polígonos, Multipolígonos ou LineStrings do GeoJSON.
Observação
Para obter mais informações, confira os Dados de localização Geoespacial e GeoJSON.
Sintaxe
ST_DISTANCE(<spatial_expr_1>, <spatial_expr_2>)
Argumentos
Descrição | |
---|---|
spatial_expr_1 |
Qualquer expressão GeoJSON Point, Polygon, MultiPolygon ou LineString válida. |
spatial_expr_2 |
Qualquer expressão GeoJSON Point, Polygon, MultiPolygon ou LineString válida. |
Tipos de retorno
Retorna uma expressão numérica que enumera a distância entre duas expressões.
Exemplos
O exemplo a seguir pressupõe que exista um contêiner com dois itens.
[
{
"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"
}
]
O exemplo mostra como usar a função como um filtro para retornar itens em uma distância especificada.
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
}
]
Comentários
- Ela é expressa em metros no sistema de referência padrão.
- Essa função se beneficia de um índice geoespacial, exceto em consultas com agregações.
- A especificação GeoJSON requer que os pontos em um polígono sejam especificados no sentido anti-horário. Um Polígono especificado no sentido horário representa o inverso da região dentro dele.