Hoe een ruimtelijke samenvoeging van punt- en polygoonlagen uit te voeren in PostGIS?

Ik heb een puntgegevensset die huishoudens vertegenwoordigt die ik aan een pakketlaag wil koppelen (d.w.z. haar pakket_id toewijzen). Met ArcMap kon ik ruimtelijk de polygonen met de punten verbinden en specificeren dat de join een bepaalde zoekstraal heeft en de dichtstbijzijnde veelhoek gebruikt.

Ik wens dit uit te voeren met postgres en vroeg me af wat de meest voorzichtige manier was om dit te doen. Ik kan ST_contains niet gebruiken omdat punten op straten vallen en niet op echte pakketten. Is er in plaats van ST_contains nog een andere functie die naderheidscontroles mogelijk maakt?

update households h set parcel_id = p.parcel_id 
from parcels p where ST_contains(p.the_geom, h.xy);
13

1 antwoord

Voor wat je wilt bereiken, denk ik dat ST_DWithin zou werken. Uit de documentatie van de PostGIS-site:

ST_DWithin - Retourneert true als de geometrieën binnen het gespecificeerde vallen   afstand van elkaar. Voor geometrie-eenheden zijn die van ruimtelijk   referentie en voor geografie-eenheden zijn in meters en de meting is   standaard ingesteld op use_spheroid = true (meet rond sferoïde), voor sneller   check, use_spheroid = false om langs bol te meten.

8
toegevoegd
Dit zou waarschijnlijk kunnen werken, maar het is de kunst om een ​​goede zoekdrempel in te stellen. Stel het te hoog in en ik krijg meer dan één overeenkomst, stel het te laag in en ik krijg er geen. Of zet het hoog en gooi de extra match records weg.
toegevoegd de auteur mmattax, de bron