PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL:बाउंडिंग बॉक्स के भीतर यात्राएं दिखाएं

चूंकि आपके निर्देशांक 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)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django - PostgreSQL और Elasticsearch के साथ पूर्ण पाठ खोज

  2. PostgreSQL अनुक्रम से एकाधिक आईडी चुनें

  3. बार-बार उपयोग की जाने वाली तालिका से कई पंक्तियों को कैसे हटाएं

  4. तैयार बयानों के लिए अशक्त बाध्य करते समय बाइटा त्रुटि पोस्टग्रेज करता है

  5. सीमित डिस्क स्थान पर नया कॉलम जोड़ने के लिए वैकल्पिक तालिका