PostGIS เลือกโดย lat / กล่อง bounding ยาว


18

ฉันมี minLat, minLong, maxLat และ maxLong จากกล่องที่วาดบนแผนที่ ตอนนี้ข้อความค้นหาของฉันเพื่อให้ได้คะแนนทั้งหมดในกล่องมีลักษณะดังนี้:

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

ฉันต้องการใช้คอลัมน์รูปทรงเรขาคณิตแทนคอลัมน์ lat / long เพื่อให้ได้ผลลัพธ์ ฉันลองใช้คำค้นหานี้:

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

จากโพสต์นี้: เลือกกล่องขอบโดยใช้โพสต์จิสแต่ไม่พบผลลัพธ์

ไม่มีใครมีตัวอย่างของวิธีการเลือกจุดทั้งหมดที่อยู่ในกล่องที่สร้างขึ้นโดยนาทีและสูงสุด lat / long โดยใช้รูปทรงเรขาคณิตใน postgis?


คุณใช้ PostGIS รุ่นใด
Mapperz

PostGIS ของฉันคือรุ่น 2.0.1
bl8rchk

2
ทั้งสองคอลัมน์ทางภูมิศาสตร์ใน SRID เดียวกันหรือไม่
nickves

ฉันคิดว่าฉันอาจจะหลุดพ้นจากแนวทางของฉัน ... ฉันมีเพียงคอลัมน์เดียว มันคือ SRID คือ 2223
bl8rchk

@ bl8rchk ตารางgeomTableและฟิลด์mytable.geomคืออะไร?
theartofbeing

คำตอบ:


16

ข้อมูลของคุณไม่อยู่ใน lat / lon ดังนั้นคุณต้องดันกล่องของคุณลงในพื้นที่พิกัดของข้อมูลของคุณ:

SELECT *
FROM mytable
WHERE 
  mytable.geom && 
  ST_Transform(ST_MakeEnvelope(minLon, minLat, maxLon, maxLat, 4326), 2223);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.