Saya telah menggunakan PostGIS untuk waktu yang lama sekarang tetapi tidak pernah harus menggunakan LINESTRING
geometri ...! :)
Inilah yang ingin saya lakukan: Saya memiliki tabel linestrings (mewakili jalan-jalan kota tertentu, SRID 3395) dan saya ingin mencari linestrings terdekat ke titik tertentu (posisi GPS, SRID 4326).
Solusi yang saya temukan adalah memilih semua linestrings dalam poin saya menggunakan expand()
metode dan menentukan jarak antara setiap linestring dan poin saya menggunakan ST_Distance()
metode.
Inilah SQL:
SELECT myLineId, myLineName, ST_Distance(ST_Transform(GeomFromText('POINT(LON LAT)',4326),3395),myLineGeom) AS myLineDistance
FROM myLines
WHERE myLineGeom && expand(ST_Transform(GeomFromText('POINT(LON LAT)',4326),3395), 100)
ORDER BY myLineDistance;
Hasil yang saya dapatkan terlihat OK tetapi saya merasa ada sesuatu yang salah dalam implementasi saya.
1) Apakah kalian pikir expand()
bisa mendapatkan semua linestrings yang bersangkutan?
2) Apakah kalian pikir ST_Distance()
metode yang tepat untuk digunakan? Saya kira saya melakukan kesalahan karena jarak yang ingin saya dapatkan adalah jarak terkecil antara titik dan garis saya dan bukan jarak antara titik dan salah satu titik linestring.
Ilustrasi: