Чим відрізняється ST_DWithin від ST_Distance для пошуку близькості в PostGIS?


14

У мене є записи, збережені в таблиці з координатами широти / довготи, які зберігаються в полі геометрії. Я хочу знайти всі записи поблизу відправника, що надається користувачем. Примітка "поблизу", ймовірно, означає менше 100 км (можливо, навіть менше).

Більшість прикладів я бачу в застосуванні ST_DWithin. Чи є причина, яку ви не можете використовувати ST_Distance? Яка різниця між використанням ST_DWithinта ST_Distanceцим виконанням?

Наприклад:

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

проти

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

Відповіді:


15

ST_Distance - це розрахунок, який повинен бути виконаний та оцінений у кожному рядку. ST_DWithin може використовувати індекс, тому, швидше за все, це буде набагато швидше.


4
Також вдалося знайти це, що говорить майже те саме: postgis.net/2013/08/26/tip_ST_DWithin
Користувач
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.