17 votos

¿Cuál es la diferencia entre ST_DWithin y ST_Distance para la búsqueda de proximidad en PostGIS?

He registros almacenados en una tabla con la latitud y de longitud coordenadas almacenados en una geometría de campo. Quiero encontrar todos los registros cercanos a un usuario suministrado punto de referencia. Nota "cercanos" probablemente significa que a menos de 100km (posiblemente incluso más pequeño).

La mayoría de los ejemplos que me vea uso de ST_DWithin. Hay una razón que usted no puede usar ST_Distance? ¿Cuál es la diferencia entre el uso de ST_DWithin y ST_Distance para hacer esto?

Por ejemplo:

SELECT name, ST_AsText(coords)
FROM places
WHERE ST_DWithin(coords, ST_GeomFromText('POINT(-12.5842 24.4944)',4326), 1)

vs

SELECT name, ST_AsText(coords)
FROM places
WHERE ST_Distance(coords, ST_GeomFromText('POINT(-12.5842 24.4944)',4326)) < 1

23voto

M. B. Altaie Puntos 11

ST_Distance es un cálculo que deben ser ejecutadas y evaluadas en cada fila. ST_DWithin puede utilizar un índice, por lo que es probable que sea mucho más rápido.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X