Tôi có các bản ghi được lưu trữ trong một bảng có tọa độ vĩ độ / kinh độ được lưu trữ trong trường hình học. Tôi muốn tìm tất cả các bản ghi gần một điểm tham chiếu do người dùng cung cấp. Lưu ý "gần đó" có thể có nghĩa là dưới 100km (thậm chí có thể nhỏ hơn).
Hầu hết các ví dụ tôi thấy sử dụng ST_DWithin
. Có một lý do bạn không thể sử dụng ST_Distance
? Sự khác biệt giữa sử dụng ST_DWithin
và ST_Distance
để làm điều này là gì?
Ví dụ:
SELECT name, ST_AsText(coords)
FROM places
WHERE ST_DWithin(coords, ST_GeomFromText('POINT(-12.5842 24.4944)',4326), 1)
đấu với
SELECT name, ST_AsText(coords)
FROM places
WHERE ST_Distance(coords, ST_GeomFromText('POINT(-12.5842 24.4944)',4326)) < 1