एक ही ज्यामिति तालिका से दो अंकों के लिए सरल पोस्टगिस ST_Distance क्वेरी?


11

नोट: इस सवाल को पहली बार Stackoverflow में प्रकाशित किया गया था ।

मेरे पास एक ज्यामिति तालिका points_tableहै SRID 4326और इसमें कुछ बिंदु हैं।

मुझे इस तालिका से एक जोड़ी बिंदुओं (सुविधाओं) के बीच की दूरी खोजने की आवश्यकता है।

मैं एक बिंदु के साथ id = Xऔर दूसरे बिंदु के साथ चयन करना चाहता हूं id = Yऔर फिर ST_Distanceफ़ंक्शन के साथ उनके बीच की दूरी का पता लगाता हूं ।

मुझे पता है कि इन दो बिंदुओं को डेटाबेस से कैसे क्वेरी करें:

select * from points_table where id = X or id = Y;

लेकिन यह क्वेरी एक परिणाम देता है, जिसे मैं नहीं जानता कि कैसे पास करना है ST_Distance, क्योंकि ST_Distance2 पैरामीटर हैं।

मैंने कोशिश की है Select ST_Distance(select the_geom from points_table where id = X or id = Y);

लेकिन यह स्पष्ट रूप से गलत है।

मैं एक तालिका से दो ज्यामिति बिंदुओं (सुविधाओं) के बीच की दूरी कैसे पा सकता हूं?

पुनश्च सभी उदाहरण मैं अब तक पाया है दिखाने ST_Distance समारोह के तर्कों में hardcoded अंकों के साथ ST_Distance उपयोग। मुझे एक उदाहरण नहीं मिला है, जहां ST_Distance का उपयोग एक ही तालिका से दो बिंदुओं के बीच की दूरी की गणना करने के लिए किया जाता है।

जवाबों:


28

आपको अपनी तालिका को दो बार संदर्भित करने की आवश्यकता है, जो इसे अलग उपनाम दे रही है:

SELECT ST_Distance(a.geom, b.geom)
FROM points_table a, points_table b
WHERE a.id='x' AND b.id='y';
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.