在此之前,已经提出了从更一般的意义上管理地理空间数据的主题。在那里也提到了版本控制的主题,但并未真正涉及。
传统的地理空间数据收集和维护只需要在内部处理版本控制,因为数据库只能从组织内部进行更新。在众包的地理数据库(例如OpenStreetMap)中,情况并非如此。在那里,任何人都可以出现并添加,修改或删除对象。在OpenStreetMap中,这是基本的处理方式:每个对象都有一个整数版本号,并且只有最高版本的对象才在实时数据库中公开。数据库使用开放式锁定,因此用户必须解决手动上传文稿时发生的所有冲突。
只要通过编辑人员(JOSM,Potlatch)进行的人工贡献是唯一的贡献方式,那么所有这些都可以很好地工作,但不是。越来越多地进行公开公共部门数据的导入。这些使版本控制问题更加复杂。请考虑以下情形:
- 正在从开放的公共部门数据集中导入建筑对象
- 该建筑物由人工贡献者进行了一些修改(属性,几何或两者)
- 一个新版本的公共部门数据可用并被导入。
当前,在第3步中,除非将接受社区修改的每个建筑物手动与新的导入项合并,否则人类的贡献将会丢失。
OpenStreetMap如何处理这种情况?我们需要在软件开发中研究分布式版本控制吗?DVC的方法如何适应于分布式空间数据维护?