sql >> Database >  >> RDS >> PostgreSQL

Hoe vind je alle punten binnen polygoon in postgis?

U kunt

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

Opmerking:Polygoon moet gesloten zijn (dat betekent de laatste coördinaat ==eerste coördinaat). Tweede parameter POINT_LOCATION moet de geometriekolom in uw puntentabel zijn.

UPDATE:Ik heb geprobeerd uw stappen opnieuw af te spelen in mijn pg-database. Ik heb 2 tabellen gemaakt, LOCATIONS_TABLE (id, geom) en POLYGON (id, geom). Daarna vulde ik de LOCATIONS_TABLE met de 2 punten

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

Daarna heb ik de polygoon ingevoegd in de POLYGON-tabel

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  (...)

Ik visualiseerde de situatie in qgis, zie onderstaande afbeelding:

Zoals u kunt zien, bevinden de 2 punten zich binnen de veelhoek. Dus ik heb handmatig een punt buiten de polygoon gemaakt. Daarna kunt u de volgende sql-query gebruiken om te zien of de punten binnen de polygoon liggen:

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

Het retourneert t voor de 2 punten binnen en onwaar voor het derde punt.




  1. MySQL ODBC-link mislukt vanwege geweigerd authenticatieprotocol

  2. variabelen gebruiken in een psql-script

  3. BEGIN/END en CREATE Tabel in één .sql-bestand

  4. Definieer een VIEW in Oracle zonder CREATE . te gebruiken