¿Cómo realizar una unión espacial de capas de puntos y polígonos en PostGIS?

13

Tengo un conjunto de datos de puntos que representa los hogares que quiero asociar con una capa de parcela (es decir, asignar su parcel_id). Con ArcMap, podría unir espacialmente los polígonos a los puntos y especificar que la unión tenga un cierto radio de búsqueda y usar el polígono más cercano.

Deseo realizar esto con postgres y me preguntaba cuál era la forma más prudente de hacerlo. No puedo usar ST_contains porque los puntos caen en las calles y no en las parcelas reales. En lugar de ST_contains, ¿hay otra función que permita las comprobaciones de proximidad?

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

Respuestas:

8

Para lo que quieres lograr, creo que ST_DWithin funcionaría. De la documentación del sitio PostGIS:

ST_DWithin - Devuelve verdadero si las geometrías están dentro de la distancia especificada entre sí. Para las unidades de geometría están en las de referencia espacial y para las unidades de geografía están en metros y la medición está predeterminada en use_spheroid = true (medir alrededor del esferoide), para una verificación más rápida, use_spheroid = false para medir a lo largo de la esfera.

RK
fuente
Esto probablemente podría funcionar, pero el truco es establecer un umbral de búsqueda adecuado. Configúrelo demasiado alto y obtengo más de una coincidencia, configúrelo demasiado bajo y no obtengo ninguno. O configúrelo alto y descarte los registros de partidos adicionales.
ako