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?


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);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.