Mam rekordy zapisane w tabeli ze współrzędnymi szerokości i długości geograficznej zapisanymi w polu geometrii. Chcę znaleźć wszystkie rekordy w pobliżu punktu odniesienia podanego przez użytkownika. Uwaga „w pobliżu” prawdopodobnie oznacza mniej niż 100 km (być może nawet mniejszy).
Większość przykładów używam ST_DWithin
. Czy istnieje powód, dla którego nie możesz użyć ST_Distance
? Jaka jest różnica między używaniem ST_DWithin
a ST_Distance
robieniem tego?
Na przykład:
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