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.