Como ver quais linhas foram alteradas em um Shapefile atualizado?

15

Estou usando os dados GIS do meu município para atualizar as estradas no OpenStreetMap. Tenho uma cópia que eles publicaram no ano passado e uma que acabou de ser publicada e gostaria de encontrar todas as LineStrings que tiveram seus atributos ou sua geometria alterada. Isso me ajudará a garantir que todas as ruas novas e modificadas sejam atualizadas no OpenStreetMap.

Eu gostaria de fazer isso usando o software FOSS, como QGIS ou Python / OGR. Os segmentos de rua devem ter um identificador único, então meu único pensamento é escrever um script Python que abra os Shapefiles, encontre quaisquer segmentos no novo que não estejam presentes nos antigos (segmentos adicionados) e o inverso (segmentos removidos) e, em seguida, faça um loop sobre pares correspondentes comparando suas coordenadas constituintes para ver se alguma coisa mudou.

Será esta uma boa abordagem? Existe uma maneira mais simples?

joshdoe
fonte
3
Parece que você está procurando um equivalente QGIS ao ArcGIS Feature Compare
PolyGeo
+1 - pergunta realmente interessante. Examinei os shapefiles no QGIS, selecionando-os na tabela de atributos, copiando (ctrl-C / cmd-C) e colando em um editor de texto para comparar diretamente o texto WKT, mas isso não o segmenta por segmento e é obviamente tedioso. Muito interessado em ver uma boa solução sair desta questão. Para dados OSM, você também pode fazer o download do histórico de recursos individuais, mas seria bom ter uma solução genérica .
Simbamangu 26/10/12

Respostas:

8

O que você precisa fazer é uma análise temporal. Como você disse, você tem dois dados vetoriais (shp) de tempos diferentes. você pode encontrar a alteração usando o processamento de geometria. No QGIS, carregue dois vetores e o GoTo Vector-> GeoProcessing e, a partir daí, você poderá usar a função Diferença, que fornecerá outra forma como resultado.

espero que ajude

rkm
fonte
+1 - isso funciona bem para dois conjuntos de dados OSM com um mês de intervalo, resultando em uma camada que preserva os atributos dos objetos alterados.
Simbamangu 1/11/12
1
mas isso funcionaria apenas se a geometria fosse alterada. e quanto à mudança de atributo?
SweetSugar.cola # 28/16