PostGIS diseleksi oleh kotak lat / long bounding

18

Saya memiliki minLat, minLong, maxLat, dan maxLong dari kotak yang digambar di peta. Saat ini, permintaan saya untuk mendapatkan semua poin di dalam kotak terlihat seperti ini:

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

Saya ingin menggunakan kolom geometri alih-alih kolom lat / panjang untuk mendapatkan hasil. Saya mencoba pertanyaan ini:

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

dari posting ini: Pilih kotak pembatas menggunakan postgis tetapi tidak mengembalikan hasil.

Adakah yang punya contoh bagaimana memilih semua titik di dalam kotak yang dibuat oleh min dan max lat / long menggunakan geometri di postgis?

bl8rchk
sumber
Versi PostGIS apa yang Anda gunakan?
Mapperz
PostGIS saya adalah Versi 2.0.1
bl8rchk
2
keduanya kolom geom di SRID yang sama?
menghasilkan
Saya pikir saya mungkin jauh dengan pendekatan saya ... Saya hanya memiliki satu kolom geom. SRID adalah 2223
bl8rchk
@ bl8rchk apa tabel geomTabledan bidangnya mytable.geom?
theartofbeing

Jawaban:

16

Data Anda tidak dalam lat / lon, jadi Anda perlu mendorong kotak Anda ke dalam ruang koordinat data Anda:

SELECT *
FROM mytable
WHERE 
  mytable.geom && 
  ST_Transform(ST_MakeEnvelope(minLon, minLat, maxLon, maxLat, 4326), 2223);
Paul Ramsey
sumber