Membuat penyangga untuk menemukan titik adalah larangan yang pasti karena (1) overhead untuk membuat geometri yang mewakili penyangga, dan (2) penghitungan poligon titik jauh kurang efisien daripada penghitungan jarak sederhana.
Anda jelas bekerja dengan data (bujur, lintang) sehingga Anda harus mengonversinya ke sistem koordinat Cartesian yang sesuai yang memiliki satuan ukuran yang sama dengan jarak 10.000 Anda. Jika jarak itu dalam meter, maka Anda juga dapat memberikan titik dari tabel ke geography
dan hitung langsung pada koordinat (panjang, lat). Karena Anda hanya ingin mengidentifikasi titik-titik yang berada dalam jarak tertentu, Anda dapat menggunakan ST_DWithin()
fungsi
dengan perhitungan pada bola untuk kecepatan tambahan (jangan lakukan ini saat berada di garis lintang yang sangat tinggi atau dengan jarak yang sangat jauh):
SELECT id, point
FROM my_table
WHERE ST_DWithin(point::geography,
ST_GeogFromText('POINT(-116.768347 33.911404)'),
10000, false);