Gostaria de poder comparar os recursos da Camada 1 (origem) com os da Camada 2 (atualizações para a origem) para verificar se alguma das características e / ou atributos da geometria foram alterados. Eu também gostaria de ter um "relatório" gerado informando o que mudou.
Editar para esclarecimento: as alterações na geometria também incluem a localização de recursos que foram adicionados à nova camada de dados. As exclusões podem ser interessantes, mas as adições são mais importantes.
Eu estive examinando as funções do PostGIS e não consigo encontrar nenhuma ferramenta projetada para comparar e relatar diferenças entre os recursos de duas camadas, geometria e atributos.
Estou procurando algo semelhante à ferramenta ArcGIS " Compare Compare ".
Se não houver nada parecido no PostGIS, existem outras ferramentas de código aberto que responderão a esses tipos de perguntas? Obrigado.
fonte
Respostas:
Você pode fazer comparações entre linhas no PostgreSQL com construtores de linha . Eu estou supondo que isso funcionaria com campos de geometria, mas eu não tentei.
Dadas duas tabelas em que os recursos correspondentes têm o mesmo campo de identificação em cada um, você pode fazer algo como:
Atualização: isso funciona com campos de geometria nos meus testes.
Atualização 2: veja um exemplo mais completo com base em seus critérios.
Tabelas: t1 (id, att1, att2, geom) t2 (id, att1, att2, geom)
Isso deve lhe dar o que você está procurando. Você provavelmente desejará alterar a cláusula 'não dentro' para 'não existe' para obter melhor desempenho.
fonte
A função
ST_Equals(geometryA, geometryB)
retornará TRUE se forem espacialmente iguais.fonte