आपके कथन के साथ आपको तीन समस्याएं हैं, हालांकि त्रुटि संदेश केवल उसी के हिस्से में संकेत कर रहा है ... "WHERE टाइप बूलियन होना चाहिए" इसका मतलब है कि आपने WHERE को जो जानकारी दी है वह बूलियन परिणाम का मूल्यांकन नहीं कर रही है।
ST_MakeEnvelope इस क्रम में अपने मापदंडों के लिए पूछता है xmin, ymin, xmax, ymax, srid
:।
आप गलत तरीके से पास हुए ymax, ymin, xmax, xmin, srid
।
बूलियन का मूल्यांकन कहां करना चाहिए:
यह निर्धारित करने के लिए कि क्या ज्यामिति और लिफाफे में कोई तत्व समान है , जहां इसका निर्माण किया जाना चाहिए: WHERE geom && envelope_geom
अन्यथा आप ST_CRtains का उपयोग कर सकते हैं
यह निर्धारित करने के लिए कि क्या ज्यामिति लिफाफे के भीतर है: `जहां ST_Contains (लिफाफे_जोम, जियोम)
आपने तुलना के किसी भी तरीके की आपूर्ति नहीं की WHERE
।
तालिका 'planet_osm_ways' में कोई ज्यामिति स्तंभ नहीं है, हालांकि 'planet_osm_roads' में 'ज्यामिति' नाम का एक ज्यामिति स्तंभ शामिल है।
आप संबंधित planet_osm_nodes.lat और planet_osm_nodes.lon से तालिका 'planet_osm_ways' में एक ज्यामिति स्तंभ बना सकते हैं।
'Planet_osm_roads' का उपयोग करना, यह दिखाता है कि एक ज्यामिति स्तंभ के साथ एक टेबल के खिलाफ एक बाउंडिंग बॉक्स का उपयोग कैसे करें:
SELECT *
FROM planet_osm_roads
WHERE planet_osm_roads.way && ST_Transform(
ST_MakeEnvelope(-122.271189, 37.804339, -122.275244, 37.808264,
4326),3857
);
या इसे इसमें बदलें:
SELECT *
FROM planet_osm_roads
WHERE ST_Contains(
ST_Transform(
ST_MakeEnvelope(-122.271189, 37.804339, -122.275244, 37.808264,
4326)
,3857)
,planet_osm_roads.way);