Compartilhar via


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.