ฉันมีบันทึกที่เก็บไว้ในตารางที่มีพิกัดละติจูด / ลองจิจูดเก็บไว้ในเขตเรขาคณิต ฉันต้องการค้นหาระเบียนทั้งหมดที่อยู่ใกล้กับจุดอ้างอิงที่ผู้ใช้ระบุ หมายเหตุ "ใกล้เคียง" อาจหมายถึงน้อยกว่า 100km (อาจเล็กกว่า)
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)
VS
SELECT name, ST_AsText(coords)
FROM places
WHERE ST_Distance(coords, ST_GeomFromText('POINT(-12.5842 24.4944)',4326)) < 1