Como executar uma junção espacial de camadas de ponto e polígono no PostGIS?


13

Eu tenho um conjunto de dados pontuais que representa as famílias que quero associar a uma camada de parcelas (por exemplo, atribuir seu parcel_id). Com o ArcMap, eu poderia unir espacialmente os polígonos aos pontos e especificar que a união tivesse um determinado raio de pesquisa e usar o polígono mais próximo.

Desejo fazer isso com o postgres e fiquei imaginando qual seria a maneira mais prudente de fazer isso. Não posso usar ST_contains porque os pontos caem nas ruas e não nas parcelas reais. Em vez de ST_contains, existe outra função que permite verificações de proximidade?

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

Respostas:


8

Pelo que você deseja realizar, acho que o ST_DWithin funcionaria. Na documentação do site PostGIS:

ST_DWithin - Retorna true se as geometrias estiverem dentro da distância especificada uma da outra. Para unidades de geometria, as de referência espacial e Para unidades de geografia, estão em metros e a medição é padronizada como use_spheroid = true (medir ao redor do esferóide), para uma verificação mais rápida, use_spheroid = false para medir ao longo da esfera.


Provavelmente isso poderia funcionar, mas o truque é definir um limite de pesquisa adequado. Defina muito alto e recebo mais de uma correspondência, defina muito baixo e não recebo nenhuma. Ou defina-o alto e descarte os registros de correspondências extras.
ako
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.