ST_DISTANCE (consulta NoSQL)

SE APLICA A: NoSQL

Devuelve la distancia entre las dos expresiones Point, Polygon, MultiPolygon o LineString de GeoJSON.

Nota

Para obtener más información, consulte Datos de ubicación geoespaciales y GeoJSON.

Sintaxis

ST_DISTANCE(<spatial_expr_1>, <spatial_expr_2>)  

Argumentos

Descripción
spatial_expr_1 Cualquier expresión GeoJSON Point, Polygon, MultiPolygon o LineString válida.
spatial_expr_2 Cualquier expresión GeoJSON Point, Polygon, MultiPolygon o LineString válida.

Tipos de valores devueltos

Devuelve una expresión numérica que enumera la distancia entre dos expresiones.

Ejemplos

En el ejemplo siguiente se supone que existe un contenedor con dos elementos.

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

En el ejemplo se muestra cómo usar la función como filtro para devolver elementos dentro de una distancia 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
  }
]

Comentarios

  • El resultado se expresa en metros para el sistema de referencia predeterminado.
  • Esta función del sistema se beneficiará de un índice geoespacial, excepto en las consultas con agregados.
  • La especificación GeoJSON requiere que los puntos dentro de un polígono se especifiquen en sentido contrario a las agujas del reloj. Un elemento Polygon cuyos puntos se hayan especificado en el sentido de las agujas del reloj representa el inverso de la región dentro de él.