PostGIS lat / long bounding box द्वारा सेलेक्ट करें


18

मेरे पास एक मिनलैट, मिनलॉन्ग, मैक्सलैट और मैक्सलॉन्ग है जो एक नक्शे पर खींचे गए बॉक्स से है। अभी, बॉक्स में सभी बिंदुओं को पाने के लिए मेरी क्वेरी इस तरह दिखती है:

SELECT *
FROM geomTable
WHERE (longitude BETWEEN minLon AND maxLon)
AND (latitude BETWEEN minLat AND maxLat)

मैं परिणाम प्राप्त करने के लिए lat / लंबे कॉलम के बजाय ज्यामिति कॉलम का उपयोग करना चाहता हूं। मैंने इस प्रश्न की कोशिश की:

SELECT *
FROM mytable
WHERE mytable.geom && ST_MakeEnvelope(minLon, minLat, maxLon, maxLat, 4326);

इस पोस्ट से: पोस्टगिस का उपयोग करके बाउंडिंग बॉक्स का चयन करें लेकिन यह कोई परिणाम नहीं दे रहा है।

क्या किसी के पास इस बात का उदाहरण है कि पोस्टगिस में ज्यामिति का उपयोग करते हुए न्यूनतम और अधिकतम लाट / लंबे समय से बनाए गए बॉक्स के भीतर सभी बिंदुओं का चयन कैसे करें?


आप PostGIS के किस संस्करण का उपयोग कर रहे हैं?
Mapperz

मेरा PostGIS संस्करण 2.0.1 है
bl8rchk

2
क्या एक ही SRID में दोनों जियोम कॉलम हैं?
nickves

मुझे लगता है कि मैं अपने दृष्टिकोण से दूर हो सकता हूं ... मेरे पास केवल एक जियोम कॉलम है। यह SRID 2223 है
bl8rchk

@ bl8rchk तालिका geomTableऔर फ़ील्ड क्या है mytable.geom?
थर्टोफोबिंग

जवाबों:


16

आपका डेटा lat / lon में नहीं है, इसलिए आपको अपने बॉक्स को अपने डेटा के समन्वय स्थान में धकेलना होगा:

SELECT *
FROM mytable
WHERE 
  mytable.geom && 
  ST_Transform(ST_MakeEnvelope(minLon, minLat, maxLon, maxLat, 4326), 2223);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.