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

मैं पोस्टगिस फाइलों में प्रदर्शित करना चाहता हूं जो 10,000 मीटर से कम हैं और उनकी गणना की गई दूरी

ऐसा करने का सबसे आसान और तेज़ तरीका निर्देशांकों को geometry . के रूप में संग्रहीत करना होगा या geography अलग समन्वय जोड़े के बजाय:

ALTER TABLE data ADD COLUMN geog geography (point,4326);
UPDATE data SET geog = ST_MakePoint(lon,lat);

उसके बाद, इस नए कॉलम पर एक सार इंडेक्स बनाएं:

CREATE INDEX idx_data_point ON data USING gist (geog) ;

ST_DWithin का उपयोग करें क्वेरी दूरी के लिए, ST_DistanceSphere . के रूप में या ST_Distance होगा नहीं स्थानिक सूचकांक का उपयोग करें!

SELECT ST_Distance(geog,ST_MakePoint(49.9 ,6.7)::geography,true)
FROM data
WHERE ST_DWithin(geog,ST_MakePoint(49.9,6.7),10000,true); 
  • नोट:true कार्यों में ST_DWithin और ST_Distance मतलब use_spheroid=true , जो geography . के लिए डिफ़ॉल्ट है पैरामीटर।

डेमो:db<>fiddle

यह भी देखें:निर्दिष्ट निर्देशांकों से 5 मील के दायरे में सभी भवन प्राप्त करना




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पोस्टग्रेज़ दिनांक प्रतिनिधित्व को ISO 8601 स्ट्रिंग में बदलें

  2. फ़ंक्शन एकाधिक कॉलम के बजाय एकाधिक कॉलम को एक कॉलम के रूप में देता है

  3. PostgreSQL क्वेरी में पंक्ति संख्या कैसे दिखाएं?

  4. 'प्रक्रिया' पोस्टग्रेस्क्ल के पास गलत सिंटैक्स

  5. बहुत धीमी स्प्रिंग बूट एप्लिकेशन स्टार्टअप