चूंकि आपके निर्देशांक x,y कॉलम में संग्रहीत हैं, इसलिए आपको ST_MakePoint
का उपयोग करना होगा।
एक उचित ज्यामिति बनाने के लिए। उसके बाद, आप ST_MakeEnvelope
फंक्शन का उपयोग करके एक BBOX बना सकते हैं।
और जांचें कि क्या प्रारंभ और अंत निर्देशांक ST_Contains
, उदा.
WITH bbox(geom) AS (
VALUES (ST_MakeEnvelope(-8.68494,41.24895,-8.47569,41.11591,4326))
)
SELECT * FROM trips,bbox
WHERE
ST_Contains(bbox.geom,ST_SetSRID(ST_MakePoint(lon_start,lat_start),4326)) AND
ST_Contains(bbox.geom,ST_SetSRID(ST_MakePoint(lon_end,lat_end),4326));
नोट: CTE
वास्तव में आवश्यक नहीं है और केवल दृष्टांत उद्देश्यों के लिए प्रश्न में है। आप ST_MakeEnvelope
दोहरा सकते हैं WHERE
. में दोनों स्थितियों पर कार्य करें bbox.geom
. के बजाय क्लॉज . यह क्वेरी SRS WGS84
. भी मानती है (4326)।