顾及地理要素变化过程的数据增量更新方法*

2014-03-27 01:59罗国玮张新长齐立新
关键词:新旧增量矢量

罗国玮,张新长,齐立新

(1.中山大学地理科学与规划学院∥广东省城市化与地理环境空间模拟重点实验室,广东 广州510275;2.广西师范学院,广西 南宁530001)

数据更新是保持空间数据现势性的主要方法,为节省数据采集和更新的时间,目前大多矢量数据更新采用增量更新方法,只更新发生变化了的数据。文献[1]提出了基于拓扑联动的更新方法,该方法比较适合地籍数据库的增量更新。文献[2]提出了一种自适应的矢量数据增量更新方法,通过范围内要素的替换,并进行接边操作,实现增量更新;文献[3]提出基态修正的GIS 数据库增量更新方法,设计了增量信息的存储模型,但这些方法没有对地理要素的变化信息进行记录存储。另外还有基于事件及面向时空过程的更新方法[4-6],对触发地物发生变化的事件进行了记录存储,但这类方法面向业务主体构建,且对地理事件信息的完整性要求高。目前对矢量空间数据库增量更新技术的研究包括增量信息的存储模型、增量信息发现和历史数据的组织问题,以及版本生成与时空信息检索等[2],但很少有对变化信息的表达及存储模型进行研究。

数据更新操作改变了空间数据库的内容,增量更新只对变化了的空间信息进行操作[7],更新后的地理要素与更新前相比会发生变化,这些要素的变化过程对了解地物的生命周期及发展趋势有重要的意义[8]。目前的矢量数据增量更新方法大多只是将被替换数据存入历史库,并没有记录由于更新导致的地理要素变化信息,多次更新导致要素发生变化后,很难识别新旧数据之间的要素关联关系。本文提出了在矢量数据增量更新中加入变化过程库对地理要素的变化过程进行存储,设计了通用的地理要素的变化信息存储模型,并对地理要素变化过程库的应用做了示例说明。

1 增量更新方法

1.1 更新流程

本文研究的增量更新方法是针对同级比例尺的矢量空间数据。目前,常用的空间数据增量更新有基于范围的更新方法和基于要素的更新方法[9]。基于范围的更新方法是将旧数据按相应的范围挖空后将新数据填入,然后进行要素接边操作。基于要素的更新是对新旧数据的要素进行变化检测,只更新变化了的要素。为便于在数据更新的同时能记录地物的变化过程,本文采用基于要素的更新方法。更新流程如图1所示。更新工作主要在临时库中进行,首先要对新旧数据做要素匹配及变化检测,当检测到变化信息后,再对旧数据进行添加、删除及修改操作,进行相应的冲突检测后,将要素的变化信息存入变化过程库,被修改和删除的旧要素存入历史库。

图1 矢量数据更新流程Fig.1 The process vector data update

1.2 变化信息检测

变化信息检测的目的是为了发现增量信息,将新数据与旧数据进行要素匹配。对于不同类型要素的变化检测采用不同的方法进行,点状要素采用欧式距离及属性信息[10]进行匹配,线状要素的匹配与变化检测[11]从几何上采用缓冲区分析、交叉面、hausdorff距离[12]、概率统计[13-14]等方法结合属性信息进行,面状要素的匹配与变化检测可以通过重心距离、重叠面积结合属性信息进行。本文以面要素为例,采用空间关联度结合属性语义关联度进行要素变化检测。设Ai(i=0,1,2…m)为新要素,Bj(j=0,1,2…n)为旧要素。先以新要素Ai生成缓冲区,获取与Ai缓冲区相交的候选要素Bj,空间关联度P(Ai,Bj) 通过计算Ai、Bj要素缓冲区的交集与并集的面积比得到,计算方法如公式(1)所示。

(1)

E(Ai,Bj)=S(Ai,Bj)ω1+P(Ai,Bj)ω2

(2)

新旧要素的关联度计算方法如公式(2)所示。E(Ai,Bj)为新旧要素的关联度,S(Ai,Bj)为新旧要素的属性信息语义关联度,由新旧要素的属性字段内容对比得到[15],P(Ai,Bj)为新旧要素空间关联度,ω1,ω2分别为空间关联度及语义关联度的权重,且ω1+ω2=1,实验发现当取ω1=ω2=0.5时,检测的效果比较理想。如E(Ai,Bj)高于给定阈值,说明新旧要素之间存在关联关系,新要素为旧要素变化而来;否则,说明新旧要素间不存在关联,新要素是在旧要素消失后产生。

通过变化检测得到地理要素的变化类型有新增(新旧要素0∶1)、删除(新旧要素1∶0)、合并(新旧要素n∶1)、分裂(新旧要素1∶n)、聚合(新旧要素m∶n)、几何形状与位置变化(新旧要素1∶1)、属性变化(新旧要素1∶1)几种。

1.3 更新方法

基于要素的矢量数据更新是在数据库中将新要素替换旧要素,更新信息的表达式为:

Updateinfo={OID,Spatialinfo,Attributeinfo,MeasuredTime,Updatetime}

其中OID为要素的唯一标识,OID可以是按相关标准编码,也可以是系统自动生成的Objectid或GUID。Spatialinfo是空间信息,Attributeinfo为属性信息,MeasuredTime是测量时间,Updatetime是更新时间。由于测量时间与更新时间存在时间差,测量时间作为更接近于地物的实际变化时间。

更新操作对于新增和删除要素,直接在数据库中插入和删除信息,对于空间信息与属性信息发生改变的要素,先将旧要素删除,再插入新要素。更新过程中需要将变化信息存入变化过程库,同时将删除的要素存入历史库。

1.4 变化信息存储

数据更新引起矢量数据的变化信息需要存储到变化过程库,变化信息的表达式为:

ChangeInfo={ChangeID,Old(O1、O2…Om),ChangeType,New(O1、O2…On),ChangeTime}

ChangeID为变化信息编号, Old(O1、O2…Om)为变化前旧要素的集合,New(O1、O2…On)为变化后新要素的集合。ChangeType为变化类型,变化过程库中记录的要素变化类型如表1所示, ChangeTime为变化时间。

表1 要素变化类型Table 1 Changes of type

为方便数据表存储,变化过程数据表设计为:

ChangeIDOldOIDChangeTypeNewOIDChangeTime

OldOID为旧要素的标识(与更新时存入历史库的要素标识一致),NewOID为新要素的标识。由于数据更新会引起空间信息和属性信息的变化,因此,一组新旧要素可以同时产生多条变化信息记录。

因要素发生合并、分裂、聚合等变化时,新要素ID会发生变化,变化信息表可以起到现状数据与历史数据、不同阶段历史数据之间的要素关联作用。

为了解要素的变化过程,不仅需要了解要素发生了哪些变化,还需要了解要素变化了多少,如地物长度变化的大小,面积变化的大小,哪些属性发生了变化等。地物长度及面积的变化可以通过与历史库中的要素长度及面积字段的对比方便的获取,但对于属性信息的变化,由于各图层属性字段个数不一致,通过与历史库要素信息进行比较需要遍历所有字段,开销较大,而且属性信息变化表达不够直观。本文设计了属性信息变化存储方式:

Attributeinfo={ChangeID,Changefields(field1,field2,…,fieldn), Ovalues(value1,values2,…,valuen), Nvalues(value1,values2,…,valuen)}

其中,Changefields (field1,field2,…,fieldn)为变化属性字段的集合,Ovalues(value1,values2,…,valuen)为要素变化前属性字段值的集合,Nvalues(value1,values2,…,valuen)为变化后要素属性字段值的集合。为方便数据表存储,属性信息变化数据表设计为:

IDChangeIDChangefieldOldvalueNewvalue

其中ChangeID与变化过程数据表中的ChangeID关联,Changefield为发生变化的属性字段名,Oldvalue为变化前属性字段的值,Newvalue为变化后属性字段的值。

1.5 历史数据的存储

更新过程中被删除和修改的数据将存入历史库,为方便历史数据的检索,历史数据库的构建参考了时空数据模型,历史信息表达式为:

HistoryInfo={OID,Spatialinfo,Attributeinfo,StartTime,EndTime,UpdateTime}

其中Spatialinfo为空间信息,Attributeinfo为属性信息,StartTime,EndTime代表该历史数据存在的开始时间和结束时间,UpdateTime为被更新时间。

变化过程库、现势库、历史库的关系如图2所示。

图2 变化过程库、现势库、历史库之间的关系Fig.2 The relationship between change process database, current database and history database

2 要素变化过程信息的应用

2.1 地物生命周期查询

通过变化过程库的查询,可以了解地理要素在一段时期内的变化情况,包括地理要素发生了哪些变化,变化前后地理要素的对应关系。如要了解现状库中某地理要素的变化情况,可对通过要素编号OID对变化过程表进行查询,能够查询到要素的变化类型,由哪一个要素变化而来,通过递归查询,将上一个状态的要素编号(OLDOID)作为新要素变化(NewOID)进行查询,可以得到地理要素的全部变化信息。查询算法伪代码如下:

SelectFeatureInfo(string FeatureID)// FeatureID为地理要素的ID号

{

Featureclass tb= Searchchangeinfo(FeatureID)//查询变化信息库中NewOID= FeatureID的要素信息

IF (tb !=null)//判断查询结果是否为空

{

for (i=0; i

{

Saveinfo(tb.row);//将变化信息存入查询结果队列

SelectFeatureInfo(tb[OldID]);//递归调用,将下一状态的OldID作为上一状态的NewID传入函数

}

}

Else

Outputinfo();//完成查询后输出结果。

}

下面以一面要素A的变化过程为例说明。在2008年10月至2010年9月两年时间内,面要素A发生了面积扩大、名称改名、与其它要素合并3次变化。

序号变化类型变化时间变化语义描述1面积扩大20081009A面积扩大2属性变化20090105A名称改变3合并20100908A与B合并形成素C

2.2 线要素长度变化信息

弧段长度是线要素比较关心的信息,如道路、水系在一段时期内的长度变化。由于变化过程库记录了变化前后的要素对应关系,因此很容易对单个要素或多个要素的长度变化进行计算。

单个线要素长度变化为新要素与旧要素的长度差。 多个线要素的长度变化计算公式(3)所示,m为要素变化前的数目,n为要素变化后的数目。

(3)

L能够反映线状地物在一段时间内的总体变化趋势,当L>0,说明总体变化趋势为延长,L<0,说明线总体变化趋势为缩短。

2.3 面要素面积变化信息

面积变化是面要素比较更新的变化因素,如居民地、植被覆盖面在一段时期内的面积变化大小。通过变化过程库中的新旧地理要素对应关系,可以方便的对单个或多个面要素的面积变化进行计算。

单个面要素面积变化为新要素与旧要素的面积差。多个面要素的面积变化计算公式(4)所示,m为变化前要素的数目,n为变化后要素的数目。

(4)

如在T1到T2时间内(T1

当ΔS>0,说明面要素的总体变化趋势为扩张,ΔS<0,说明面要素的总体发展变化为缩小。

3 试验案例

本文采用Visual Studio 2010结合ArcGis Engine 10开发了一套矢量数据增量更新系统,以某市地形图更新为例来说明系统的应用效果。当采用1∶2 000地形图数据进行了应用试验时,在居民地的更新过程中,系统对新图层中495个要素与旧图层的进行了正反向变化信息检测,发现新增要素6个,消失要素4个,分裂要素2个,合并要素1个,扩大3个,缩小2个,属性变化16个。要素的变化信息及新旧要素的对应关系都保存到了变化过程库里的变化过程表,如表2所示。

表2 变化过程记录表Table 2 Change process records

如图3所示,在地形图增量更新试验中,以新要素替换了发生变化的旧要素,并对地物的变化信息进行了存储。如图4所示,通过对变化信息库进行递归查询,直观准确的了解到编号为5230的要素在2011年5到2013年3月这段时期内经历了新增、缩小、分裂3次变化。

图3 数据更新实验Fig.3 An experiment Vector data updating

试验案例显示,对比以往的矢量数据更新方法[2,7],本文提出的方法对更新要素的变化信息进行了识别与存储,有利于历史数据的回溯及地物生命周期的跟踪,还能为地物的变化趋预测提供参考。

4 结 论

本文采用基于要素的矢量数据更新方式,通过对要素的变化信息进行检测,只更新变化了的要素,实现了真正意义上的增量更新;为顾及地理要素的变化过程,在增量更新的设计中加入了变化过程库,通过变化过程库对更新前后地理要素的变化信息进行了记录,能够建立新旧要素及历史要素之间的对应关系,减轻了历史数据回溯计算量,方便空间数据的管理与维护。

本文设计的更新方法目前只能用于同级比例尺的矢量数据更新,在接下来的工作中将研究多尺度的顾及要素变化过程的增量更新方法。进一步研究包括:多尺度矢量数据的变化信息匹配;多尺度要素变化信息的数据存储结构。

[1] 陈军,周晓光. 基于拓扑联动的增量更新方法研究[J].测绘学报,2008,37(3):322-329.

[2] 张新长,郭泰圣,唐铁. 一种自适应的矢量数据增量更新方法研究[J]. 测绘学报,2012,41(4):613-619.

[3] 林艳,刘万增,韩刚. 基态修正的GIS 数据库增量更新建模[J]. 测绘科学,2012,37(4):199-201.

[4] 张丰,刘南,刘仁义,等. 面向对象的地籍时空过程表达与数据更新模型研究[J]. 测绘学报,2010,39(3):303-309.

[5] 薛存金,周成虎,苏奋振. 等. 面向过程的时空数据模型研究[J].测绘学报,2010,39(1):95-101.

[6] 周晓光,陈军,朱建军,等. 基于事件的时空数据库增量更新[J]. 中国图象图形学报,2006,11(10):1431-1438.

[7] 应申,李霖,刘万增,等. 版本数据库中基于目标匹配的变化信息提取与数据更新[J]. 武汉大学学报:信息科学版,2009,34(6):752-755.

[8] 朱华吉. 基于多级模式的地形数据库变化信息发布方法[J]. 辽宁工程技术大学学报,2006, 25(1):32-35.

[9] 傅仲良,吴建华. 多比例尺空间数据库更新技术研究[J]. 武汉大学学报:信息科学版,2007,32(12):1115-1118.

[10] COBB M A, CHUNG M J, FOLEY III H, et al. A rule-based approach for the conflation of attributed vector data[J]. GeoInformatica, 1998, 2(1): 7-35.

[11] KIELER B, HUANG W, HAUNERT J H, et al. Matching river datasets of different scales[M]//Advances in GIScience. Springer Berlin Heidelberg, 2009: 135-154.

[12] DEN M, LI Z L, CHEN X Y. Extended Hausdorff distance for spatial objects in GIS[J]. International Journal of Geographical Information Science, 2007, 21(4): 459-475.

[13] WALTER V, FRITSCH D. Matching spatial data sets: a statistical approach[J]. International Journal of Geographical Information Science, 1999, 13(5): 445-473.

[14] 童小华, 邓愫愫, 史文中. 基于概率的地图实体匹配方法[J].测绘学报, 2007,36(2): 210-217.

[15] 王育红,牛亚辉,林艳. 顾及语义差异的基础地理信息客户数据库更新实施模型[J]. 地理与地理信息科学,2011,27(1):1-6.

猜你喜欢
新旧增量矢量
提质和增量之间的“辩证”
全现款操作,年增量1千万!这家GMP渔药厂为何这么牛?
一种适用于高轨空间的GNSS矢量跟踪方案设计
矢量三角形法的应用
耕读事 新旧人
“价增量减”型应用题点拨
新旧全球化
看看山东新旧动能转换怎么干
新旧桂系决裂之变
基于矢量最优估计的稳健测向方法