O tópico de gerenciamento de dados geoespaciais em um sentido mais geral já foi abordado aqui. O tópico do versionamento também foi mencionado lá, mas não foi realmente tratado.
A coleta e manutenção de dados geoespaciais tradicionais só precisam lidar com o controle de versão internamente, pois o banco de dados é atualizado apenas de dentro da organização. Esse não é o caso de bancos de dados geográficos de fontes múltiplas, como o OpenStreetMap. Lá, qualquer pessoa pode aparecer e adicionar, modificar ou excluir objetos. No OpenStreetMap, isso é tratado de maneira rudimentar: cada objeto possui um número de versão inteiro e apenas o objeto com a versão mais alta é exposto no banco de dados ativo. O banco de dados usa bloqueio otimista, portanto, os usuários devem resolver todos os conflitos que ocorrem ao fazer upload de contribuições manualmente.
Tudo isso funciona razoavelmente bem, desde que as contribuições humanas através dos editores ( JOSM , Potlatch ) sejam o único modo de contribuição - mas não são. Cada vez mais, as importações de dados abertos do setor público são realizadas. Isso gera problemas de versão mais complexos. Considere o seguinte cenário:
- Um objeto de construção está sendo importado de um conjunto de dados aberto do setor público
- O edifício recebe algumas modificações de colaboradores humanos (atributos, geometria ou ambos)
- Uma nova versão dos dados do setor público fica disponível e é importada.
Atualmente, na etapa 3. as contribuições humanas seriam perdidas, a menos que cada edifício que recebeu modificações na comunidade seja mesclado manualmente com a nova importação.
Como o OpenStreetMap pode lidar com essa situação? Precisamos examinar o controle de versão distribuído no desenvolvimento de software? Como os métodos de DVC podem ser adaptados para lidar com a manutenção de dados espaciais distribuídos?