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

दूरी की गणना करने के लिए पोस्टगिस के साथ पोस्टग्रेएसक्यूएल को कैसे कॉन्फ़िगर करें

संक्षिप्त उत्तर:

बस अपना x,y . रूपांतरित करें ST_MakePoint का उपयोग करके फ़्लाई पर मान (ऊपर की ओर ध्यान दें!) और किसी दिए गए बिंदु से दूरी की गणना करें, डिफ़ॉल्ट SRS होगा WGS84 :

SELECT ST_Distance(ST_MakePoint(lon,lat)::GEOGRAPHY,
                   ST_MakePoint(23.73,37.99)::GEOGRAPHY) FROM places;

GEOGRAPHY का उपयोग करना GEOMETRY . का उपयोग करते समय आपको मीटर में परिणाम मिलेगा डिग्री में देंगे। बेशक, दूरी की गणना के लिए समन्वय जोड़े के एसआरएस को जानना अनिवार्य है, लेकिन यदि आपके पास डेटा गुणवत्ता का नियंत्रण है और निर्देशांक सुसंगत हैं (इस मामले में, एसआरएस को छोड़कर), तो चिंता करने की कोई बात नहीं है। यदि आप बाहरी डेटा का उपयोग करके संचालन करने की योजना बना रहे हैं, तो यह मुश्किल होना शुरू हो जाएगा, जिससे आप एसआरएस से भी अनजान हैं और यह आपके से भिन्न हो सकता है।

लंबा उत्तर:

ठीक है, यदि आप PostGIS का उपयोग कर रहे हैं तो आपको x,y . का उपयोग नहीं करना चाहिए पहले स्थान पर अलग कॉलम में। आप कुछ इस तरह करते हुए आसानी से एक ज्यामिति/भूगोल स्तंभ जोड़ सकते हैं।

यह आपकी टेबल है...

CREATE TABLE places (place TEXT, lon NUMERIC, lat NUMERIC);

निम्नलिखित डेटा युक्त ..

INSERT INTO places VALUES ('Budva',18.84,42.92),
                          ('Ohrid',20.80,41.14);

यहां बताया गया है कि आप भूगोल प्रकार का कॉलम कैसे जोड़ते हैं:

ALTER TABLE places ADD COLUMN geo GEOGRAPHY;

एक बार आपका कॉलम जुड़ जाने के बाद, आप अपने निर्देशांकों को भूगोल/ज्यामिति में इस तरह बदलते हैं और अपनी तालिका को अपडेट करते हैं:

UPDATE places SET geo = ST_MakePoint(lon,lat);

दूरी की गणना करने के लिए आपको बस ST_Distance फ़ंक्शन का उपयोग करने की आवश्यकता है। , इस प्रकार है (दूरी मीटर में):

SELECT ST_Distance(geo,ST_MakePoint(23.73,37.99)) FROM places;

   st_distance   
-----------------
 686560.16822422
 430876.07368955
(2 Zeilen)

अगर आपका स्थान पैरामीटर WKT में है , आप इसका भी उपयोग कर सकते हैं:

SELECT ST_Distance(geo,'POINT(23.73 37.99)') FROM places;
   st_distance   
-----------------
 686560.16822422
 430876.07368955
(2 Zeilen)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL धीमा चल रहा है? स्रोत तक पहुंचने के लिए टिप्स और ट्रिक्स

  2. जूक वर्ग उत्पन्न करते समय अस्पष्ट मिलान को कैसे हल करें

  3. क्वेरी जो रिक्त स्थान को अनदेखा करती है

  4. किसी तालिका या कॉलम का जिक्र करते हुए SQL फ़ंक्शन बनाएं जो मौजूद नहीं है (अभी तक)

  5. रेल समयक्षेत्र परिवर्तित नहीं करता है (PostgreSQL)