मेरे पास एक PostGIS डीबी है, और मैं उन बिंदुओं को खोजना चाहता हूं जो कुछ क्षेत्र (एक बाउंडिंग बॉक्स) के भीतर स्थित हैं। मेरे पास निर्देशांक के दो सेट हैं, जिनसे मुझे बॉक्स (यदि आवश्यक हो) बनाने वाले सभी चार आयत बिंदु मिल सकते हैं। प्रश्न में मेरे डेटा कॉलम का नाम 'बिंदु' है और यह भी प्रकार बिंदु का है।
- वहाँ वैसे भी निर्देशांक के चार सेट (lat / long) निर्दिष्ट करने और बॉक्स के भीतर झूठ बोलने वाले सभी बिंदुओं को प्राप्त करने के लिए है।
- या दो बिंदु निर्दिष्ट करें और DB को आयत के कोनों को बाहर निकालने दें, और भीतर अंक लौटाएँ
बस मामले में मैं स्पष्ट नहीं हो रहा हूं कि मैं क्या हासिल करना चाहता हूं। 'वनीला' एसक्यूएल के बराबर अगर मेरे पास एक बिंदु के बजाय एक लंबा और लंबा क्षेत्र होगा:
SELECT * FROM myTable where lat> xMin AND lat < xMax AND long > yMin and long < yMax
अद्यतन किए गए संस्करण:
मैं अंडरडार्क के समाधान की कोशिश कर रहा हूं। सबसे पहले मेरे पास ST_MakePoint कॉन्स्टेक्टर नहीं था (अब मैं करता हूं) और मुझे अभी भी एक समान त्रुटि मिलती है (बस एक अलग चरित्र पर)।
SELECT * FROM myTable WHERE ST_Within(ST_MakePoint(point),GeometryFromText('POLYGON((75 20,80 30,90 22,85 10,75 20))',4326))
और मुझे यह त्रुटि मिल रही है:
ERROR: function st_makepoint(point) does not exist
LINE 1: SELECT * FROM triples WHERE ST_Within(ST_MakePoint(point),Ge...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
********** Error **********
ERROR: function st_makepoint(point) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Character: 39
संपादित करें:
छोटी अवधि में मैं इसे हल कर सकता हूं:
SELECT * FROM triples WHERE box '((point1),(point2))' @> point
लेकिन मुझे यह काम करना होगा कि पोस्टगिस कार्यों में से कोई भी मेरे लिए काम क्यों नहीं कर रहा है।