PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana menemukan semua titik dalam poligon di postgis?

Anda dapat menggunakan

SELECT POINT_LOCATION 
FROM LOCATIONS_TABLE 
WHERE ST_Contains(ST_GEOMFROMTEXT('POLYGON((P1.X P1.Y, P2.X P2.Y, ...))'), LOCATIONS_TABLE.POINT_LOCATION);

Catatan:Poligon harus tertutup (artinya koordinat terakhir ==koordinat pertama). Parameter kedua POINT_LOCATION harus berupa kolom geometri di tabel titik Anda.

PEMBARUAN:Saya telah mencoba memutar ulang langkah Anda di basis data pg saya. Saya membuat 2 tabel, LOCATIONS_TABLE (id, geom) dan POLYGON (id, geom). Setelah itu saya mengisi LOCATIONS_TABLE dengan 2 poin

SRID=4326;POINT(-103.4955 20.723544)
SRID=4326;POINT(-103.496956 20.722446)

Setelah itu saya masukkan poligon ke dalam tabel POLYGON

SRID=4326;POLYGON((-103.305496375 20.8527356811533,-103.0810348125 20.6129741620855,-101.6261045 20.5375321062668,-99.8356786875 20.3958770270624,-99.803065375 22.0572706994358,-99.649948125 28.9186361984516,-121.1212769375 8.69559423007209,-103.305496375  (...)

Saya memvisualisasikan situasi di qgis, lihat gambar di bawah ini:

Seperti yang Anda lihat, 2 titik berada di dalam poligon. Jadi saya secara manual membuat titik di luar poligon. Setelah itu, Anda dapat menggunakan query sql berikut, untuk melihat apakah titik-titik tersebut berada di dalam poligon:

SELECT ST_Contains(polygon.geom, point.geom) 
FROM public."LOCATIONS_TABLE" point, public."POLYGON" polygon

Ini mengembalikan t untuk 2 poin di dalam dan salah untuk poin ketiga.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Indeks Unik di atas partisi postgresql

  2. Bagaimana LocalTime() Bekerja di PostgreSQL

  3. Apa perbedaan antara postgres dan postgresql_psycopg2 sebagai mesin basis data untuk Django?

  4. Bisakah saya meminta Postgresql untuk mengabaikan kesalahan dalam transaksi?

  5. Bagaimana cara mengkloning database uji dari produksi satu dalam satu tindakan tunggal?