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

Postgresql में अक्षांश और देशांतर द्वारा निकटतम स्थान खोजें

पोस्टजीआईएस

इस तरह की मेज पर लेट और लॉन्ग स्टोर न करें। इसके बजाय एक PostGIS ज्यामिति या भूगोल प्रकार का उपयोग करें ।

CREATE EXTENSION postgis;

CREATE TABLE foo (
  geog geography;
);

CREATE INDEX ON foo USING gist(geog);

INSERT INTO foo (geog)
  VALUES (ST_MakePoint(x,y));

अब जब आपको इसे क्वेरी करने की आवश्यकता हो, तो आप KNN (<->) का उपयोग कर सकते हैं। ) जो वास्तव में एक अनुक्रमणिका पर ऐसा करेगा।

SELECT *
FROM foo
ORDER BY foo.geog <-> ST_MakePoint(x,y)::geography;

आपकी क्वेरी में, आपके पास स्पष्ट रूप से HAVING distance < 5 . है . आप इसे इंडेक्स पर भी कर सकते हैं।

SELECT *
FROM foo
WHERE ST_DWithin(foo.geog, ST_MakePoint(x,y)::geography, distance_in_meters)
ORDER BY foo.geog <-> ST_MakePoint(x,y)::geography;

यह सुनिश्चित करता है कि यदि सभी बिंदु distance_in_meters . के बाहर हैं तो कुछ भी वापस नहीं किया जाता है ।

इसके अलावा x और y दशमलव संख्याएँ हैं ST_MakePoint(46.06, 14.505)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दो तालिकाओं में कैसे शामिल हों, उनमें से एक में प्राथमिक कुंजी नहीं है और समान वर्ण लंबाई नहीं है

  2. हाइबरनेट में पोस्टग्रेएसक्यूएल एलटीआरईई कॉलम मैप करते समय त्रुटि आ रही है

  3. रोलिंग दिनांक सीमा में अलग-अलग मानों की गणना के लिए क्वेरी

  4. रेल 4/पोस्टग्रेस के लिए schema.rb में कॉलम को पुन:व्यवस्थित करना सुरक्षित है?

  5. JOOQ में उनकी समग्र प्राथमिक कुंजी द्वारा एकाधिक पंक्तियों का चयन कैसे करें?