คุณมีสามปัญหากับคำสั่งของคุณแม้ว่าข้อความแสดงข้อผิดพลาดจะบอกใบ้เพียงบางส่วนของมัน ... "WHERE ต้องเป็นบูลีนประเภท" ซึ่งหมายความว่าข้อมูลที่คุณให้ไว้ในตำแหน่งที่ไม่ได้ประเมินผลบูลีน
ST_MakeEnvelopexmin, ymin, xmax, ymax, srid
ถามสำหรับพารามิเตอร์ในลำดับนี้:
ymax, ymin, xmax, xmin, srid
คุณไม่ถูกต้องผ่าน
ที่ซึ่งต้องประเมินเป็นบูลีน:
ในการพิจารณาว่ารูปทรงเรขาคณิตและซองจดหมายมีองค์ประกอบใด ๆ ที่เหมือนกันควรจะสร้าง WHERE แบบนี้WHERE geom && envelope_geom
หรือไม่คุณสามารถใช้ST_Contains
ในการตรวจสอบว่ามีเรขาคณิตอยู่ภายในซองจดหมายหรือไม่: `WHERE ST_Contains (envelope_geom, geom)
คุณไม่ได้จัดหาวิธีการใด ๆ WHERE
ของการเปรียบเทียบสำหรับ
ตาราง 'planet_osm_ways' ไม่มีคอลัมน์รูปทรงเรขาคณิตใด ๆ แม้ว่า 'planet_osm_roads' จะมีคอลัมน์รูปทรงเรขาคณิตที่ชื่อว่า 'วิธี'
คุณสามารถสร้างคอลัมน์รูปทรงเรขาคณิตในตาราง 'planet_osm_ways' จาก planet_osm_nodes.lat และ planet_osm_nodes.lon ที่เกี่ยวข้อง
เมื่อใช้ '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);