У меня есть записи, хранящиеся в таблице с координатами широты / долготы, хранящихся в поле геометрии. Я хочу найти все записи рядом с предоставленной пользователем контрольной точкой. Обратите внимание, что «рядом», вероятно, означает менее 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