Dado:
- uma geodatabase A que contém 100 conjuntos de dados com o nome de um 1 .. a 100
- um geodatabase B que contém 100 conjuntos de dados chamados b 1 .. b 100
Desejo determinar programaticamente (*) para cada par de conjuntos de dados ( a i , b i ) se eles têm conteúdo idêntico. Como estou comparando 100 pares, preciso de um método de comparação eficiente. Idealmente, toda a comparação levaria apenas alguns segundos.
(*) Nota: mencionei o termo "programático", não porque estou procurando exemplos de código (embora eu os aceite com prazer), mas para enfatizar que estou procurando um método de comparação muito rápido, que nunca possível ao comparar 100 pares de conjuntos de dados manualmente.
Estou planejando implementar esse método de comparação, então o que estou procurando essencialmente é um algoritmo , e não uma ferramenta pronta para uso (a menos que talvez seja de código aberto).
Estou ciente de que provavelmente estou pedindo o impossível, pois isso exigiria a comparação do conteúdo completo dos conjuntos de dados (talvez com as ferramentas do conjunto de ferramentas Gerenciamento de dados → Comparação de dados ); ou pelo menos comparar hashes / resumos de conjuntos de dados, mas a geração de resumos também exigiria a análise de todos os dados dos conjuntos de dados.
Portanto, minha melhor abordagem até agora é a seguinte:
Determine primeiro quais pares de conjuntos de dados ( a i , b i ) não podem ter conteúdo idêntico.
Faça uma comparação completa dos dados apenas para os pares de conjuntos de dados restantes.
Minhas perguntas:
O ArcGIS calcula automaticamente algum tipo de resumo do conjunto de dados que eu poderia consultar? Se sim, como?
(Como não conheço nada desse tipo, espero que a resposta seja "não". Por favor, prove que estou errado.)
Quais são algumas maneiras eficientes e confiáveis de determinar se dois conjuntos de dados não podem ter conteúdo idêntico?
(Até agora, considerei comparar os carimbos de data / hora da modificação, embora não saiba o quão confiáveis eles são, e comparar os esquemas dos conjuntos de dados. Qual é a confiabilidade dos carimbos de data e hora em um geodatabase do ArcGIS? Existem outras características do conjunto de dados que podem servir para esse fim?)
Respostas:
Você pode criar um campo na tabela de atributos do recurso e calcular um hash, por exemplo , MD5 , no recurso usando IEditEvents ou uma extensão de classe.
O hash seria calculado em uma representação de string do recurso (json ou xml), onde o WKT poderia ser usado para o campo de forma.
fonte
Eu olhava o raio-X para comparar esquemas e, em seguida, Comparação de recursos, Comparação de tabelas etc. no conjunto de ferramentas Comparação de dados para comparar o conteúdo quando os esquemas coincidem. Se você já tentou essa abordagem, talvez nos informe onde ela pode ficar aquém.
fonte