APP下载

基于“要素对象空间信息指纹”的变化空间数据同步技术的研究

2017-10-16王昌平

地理信息世界 2017年4期
关键词:空间信息空间数据图层

王昌平

(福州市勘测院,福建 福州 350108)

0 引 言

随着空间信息资源库建设和应用的发展,空间数据动态更新和数据分发成为确保数据现势性的主要研究课题[1]。数据量的急剧增大、更新频度复杂度的增加,使得数据生产管理更为复杂,为了不影响外业修测生产更新,同时又使空间数据应用顺畅,采用生产库+应用库分离的双库存储模式,避免生产和应用互相影响。那么,如何将生产库中外业修测更新变化反映到应用库,是急需要解决的问题,传统的做法是采用全库替换的方式,定期处理,需要人工处理,且替换效率低下,并且还需要断掉应用服务,同时由于全库替换,会造成原来在应用库建立起来后其他关联失效问题,应用库的现势也会滞后。

随着政府部门应用的深入和对现势性要求的提高,政府部门如规划局、国土局也需要及时提供现势性高的按要素的矢量GIS数据,作为规划设计、GIS分析等应用数据的支撑[6]。

综合以上因素,需要建立一套空间资源信息数据同步系统,完成自动的动态的数据同步功能,可将各类空间数据同步到其他空间应用数据库中,进行实时动态数据分发,实现应用库动态反映各空间资源库的最新状况,满足现势性需求。

1 主要解决的问题

数据库同步主要指对具有相同逻辑结构的多个影子副本的分布式数据库,当其中任何一个影子副本发生变更后,能以某种策略很快地将变更更新到各个副本中去来保证数据的一致性。数据同步技术只要分为基于触发器、基于日志、基于时间戳、基于API法等几种方法。

基于Oracle平台的数据库同步技术主要有Oracle Stream同步复制技术、基于CDC数据库订阅发布复制技术、数据库高级复制技术以及SQL语句导出还原技术等。其中前三者均需要数据库直连的情况下才能正确进行,且配置管理较为复杂[2]。

ArcSDE是ESRI公司发布的GIS数据管理中间件,它提供了高级的、高性能的GIS数据管理接口,支持海量空间数据管理。在传统的存储方式中,每个图层由业务表(business table)、要素表(feature table)和空间索引表(spatial index table)组成,属性数据和空间数据分开存储在B表和F表中,数据同步时需要考虑多表间级联关系,不容易保证同步成功[3]。

简单的采用Oracle平台的数据库同步技术是无法满足空间数据的同步需求,而且还需要考虑不同版本,图层按需同步,多节点多级联同步需求。

Oracle的CDC变化捕捉技术,只能捕获简单字段的变化,没能捕捉到Blob、 ST_GEOMETRY等特殊字段的变化;ArcSDE通过版本管理获取变化数据,增加了空间数据复杂度,而且由于数据查询要关联版本表,降低了空间数据运行的性能。如果能通过将空间数据存储的ST_GEOMETRY字段的变换转换成字符串的变化,那么就可以使用Oracle的内部CDC机制快速记录空间数据的变化日志,同时采用ArcSDE提供的ST_GEOMETR直接操作SQL类库,进行直接SQL语句操作,两者相结合,即满足快速获取变化日志,又不需要ArcSDE版本管理,可以像操作普通的数据一样更新空间数据。

因此,要实现空间信息资源数据同步,主要解决的问题是:

1)如何获取空间数据的增量变化数据。

2)通过采用ArcSDE提供的ST_GEOMETR直接操作SQL类库,进行直接SQL语句操作来解决空间资源库、同步目标库的ArcSDE版本、Oracle版本存在不同。

3)如何将不同类型、不同比例尺的空间信息资源库同步到同一个目标数据库中,不同比例尺、不同区域的同一类型空间资源库图层名称可能相同,同步存储需要同步到不同用户下。

4)一个空间资源库,存在同步到多个目标库的需求,需要考虑多节点,多级联的同步需求。

5)同步过程,可以按图层进行配置,不同的应用,可能需要的图层不同。

2 关键技术研究

2.1 空间数据变化捕获

信息指纹是信息时代互联网上的新兴技术,信息指纹就是把网页里面正文信息,提取一定的信息,可以是关键字、词、句子或者段落及其在网页里面的权重等,对它进行加密,如MD5加密算法,从而形成的一个字符串。信息指纹如同人的指纹,只要内容不相同,信息指纹就不一样。

空间特征是地理信息系统或者说空间信息系统所独有的。空间特征是指空间地物的位置、形状和大小等几何特征,以及与相邻地物的空间关系,空间位置可以通过坐标来描述,GIS中地物的形状和大小一般也是通过空间坐标来体现。

将空间要素数据的坐标数组通过加密算法生成32位字符串的“要素对象空间信息指纹”作为判定要素数据变化的方法,将传统的几何计算改为字符串比较的方法,大大提高了识别地形地物要素实体的变化数据的速度。具体的实现步骤如下:

1)提取地形地物要素数据的坐标数组,地形地物要素数据都是由多个点或一个点按某一顺序构建而成的,构建顺序不同代表了地物的变化,我们将点坐标数组作为一个信息来看待,可以对这个坐标数组信息进行管理。提取坐标数组,可以根据空间数据库的精度要求,截取适当的精度数据以避免因精度误差造成的识别错误。

2)如POLYGON(

(428 467.665 344 24 2 893 946.511 535 64,

428 464.804 565 43 2 893 947.909 545 90,

428 463.890 380 86 2 893 948.334 533 69,

428 473.700 317 38 2 893 943.666 076 66,

428 471.448 547 36 2 893 945.041 198 73,

428 470.829 040 53 2 893 945.442 871 09,

428 470.526 611 33 2 893 945.112 426 76,

428 467.665 344 24 2 893 946.511 535 64)

)

通过信息加密算法,得到的“要素对象空间信息指纹”为32位字符串 :d9a8f6946726cb6c18c2bbc7935fcd30。

3)同样提取空间要素重要属性组成属性字符串,属性间的数据可以使用特殊符号进行隔开,通过信息加密算法,等到“要素对象属性信息指纹”。

4)提取库内更新区域所包含的空间要素的“要素对象空间信息指纹”、“要素对象属性信息指纹”与修测数据的“要素对象空间信息指纹”、“要素对象属性信息指纹”进行比较,获取更新要素数据集,然后更新到空间数据库中。

5)采用Oracle的CDC机制,监测空间数据的指纹信息增量变化情况,即可快速捕获空间变化数据,根据每个图层设置CDC变化表,可以将同步颗粒最小化。

图1为空间数据增量变化识别更新技术实现流程图。

图1 空间数据增量变化识别更新技术实现流程图Fig.1 Flow chart of incremental updating technology of spatial data

2.1.1 速度快

采用“要素对象空间信息指纹”识别方法,将传统的空间几何计算,变换成字符串比较,大幅度提高了变化数据的提取速度,从下表的性能测试比较可以看出,数据量的增加,对空间几何计算的识别性能急剧下降,而通过要素对象指纹识别技术,数据量的增加,对性能影响是平稳的,并且采用本方法性能有大幅度提高,表1是具体的测试性能数据,图2是测试曲线。

表1 性能测试比较Tab.1 Comparison of performance tests

图2 性能测试曲线Fig.2 Performance of test curve

2.1.2 可靠性高

随着加密算法技术的发展,加密碰撞的概率也越来越低,同时在一定区域范围内的空间要素的坐标数组,生成的信息指纹碰撞的概率几乎是为零的,目前福州市的地形图与地下管线数据库内有1 000多万条要素数据,没有重复的“要素对象空间信息指纹”,在数据更新识别变化过程中,也未发现错误识别情况,因此,其信息指纹可以作为该空间要素的唯一识别码,可以确保高可靠性的识别率。

2.2 空间数据ETL同步机制

通过ETL数据同步技术,结合ORACLE的CDC机制(数据变化机制),采用空间数据SDE提供的SQL操作类库ST_GEOMETRY,通过SQL函数直接访问空间数据,像操作普通数据一样操作空间数据,通过空间图层序列化、空间数据推送、空间数据抽取、空间数据标准化及脏数据处理、空间图层属性表和空间坐标ST_GEOMETRY反序列化实现空间数据同步[5]。建立数据抽取、转换、加载过程,形成各个图层数据的执行任务来完成空间数据的同步机制如图3所示。

图3 空间数据ETL过程流程图Fig.3 Flow chart of spatial data ETL process

2.3 多节点同步机制

在变化日志记录中,增加节点更新记录字段,对设置的每个节点进行标记,标记采用质数形式,如节点1为3,节点2为5,节点3为7,同步过程根据节点提取该节点没有同步的更新记录,即日志标记字段不能整除节点的质数,进行同步,同步后记录节点同步信息,即日志更新标记字段值乘以节点质数值,删除更新日志,只有所有节点都通过更新后,即日志标记字段值等于所有标记节点质数积,才可以将更新日志删除[7]。整个同步过程,采取提取更新日志、同步更新、修改日志更新标识、删除更新日志一体化过程事务处理,这样,即使在更新过程中出现异常情况,也能够从新开始,进行断点续传的同步更新。

3 系统实现

空间资源信息数据同步系统,采用“要素对象空间信息指纹”作为判定要素数据变化的依据,结合Oracle数据库CDC技术,快速获取空间变化数据,同时采用ST_GEOMETRY类库直接操作空间数据库,通过ETL数据同步机制流程化管理空间同步过程,采用一键式配置过程,完成资源库和目标库的配置,很好地解决了不同ArcSDE版本、Oracle版本间按不同应用不同图层、多节点、多级联同步的需求。

空间资源信息数据同步系统主要功能设计如图4所示。

图4 系统功能图Fig.4 System function diagram

3.1 数据库配置

要使用空间数据SDE提供的SQL操作类库ST_GEOMETRY,需要对Oracle数据库进行相应的设置,使SQL环境能直接操作空间数据。

1)找到Oracle数据库的安装目录(服务器端),然后定位到OraclehomeNETWORKADMIN目录,备份listener.ora文件,以便修改配置文件出错时恢复。

2)打开listener.ora文件,找到 (PROGRAM =extproc) 这一行,在这行下面添加对ST_SHAPELIB的引用,即指定ST_SHAPELIB的地址,如下:(ENVS="EXTPROC_DLLS=C:Program FilesArcGISArcSDEora10gexeinst_shapelib.dll"),其中“C:ProgramFilesArcGISArcSDEora10gexeinst_shapelib.dll”为ST_SHAPELIB的物理路径,可以根据安装情况自己修改。

3)保存listener.ora文件,重新启动监听程序。

3.2 同步配置

对同步资源库和目标库进行设置,可以配置不同的用户(非SDE用户),可配置多个同步库,可选择需要同步的图层,对资源库和目标库进行初始化设置等。

3.3 初始同步、增量同步过程

同步过程分为初始同步和增量同步过程,初始同步过程,需要确保两个库所需要同步的图层的数据一致,可以通过直连方式将两个库的图层进行拷贝,也可以通过GBD文件数据库导出、导入的方式达到初始数据一致的要求;增量数据同步即通过获取该图层的变化数据情况,ETL同步过程,将变化情况反映到同步目标库中,同时记录同步日志。

图5 系统主界面Fig.5 System main interface

4 结束语

空间信息资源数据同步系统的数据同步配置,采用一键式初始化资源库和目标库配置,使配置过程简单方便,同时同步配置支持多节点同步策略。

数据同步过程稳定、效率高,在串行同步的情况下,地形图和管线系统每天更新的数据同步时间在几分钟左右完成。同步过程稳定,无异常信息。同步过程采用事务处理过程,确保同步数据一致性,同时支持断点续传功能。

同步日志记录清晰,同时记录每条更新记录的同步情况和整个图层的更新同步情况。

随着应用的深入和发展,还可以将空间资源数据的更新情况按图层需求、多节点,多级联地进行同步分发,满足实时、动态分发空间数据的需求。

猜你喜欢

空间信息空间数据图层
结合多层特征及空间信息蒸馏的医学影像分割
巧用混合图层 制作抽象动感森林
元数据驱动的多中心空间数据同步方法研究
图层法在地理区域图读图中的应用
跟我学添加真实的光照效果
浅析“递层优化法”在矿井制图中的应用
关于地理空间信息标准体系
基于文件系统的分布式海量空间数据高效存储与组织研究
客户端空间数据缓存策略
多源空间数据同名实体几何匹配方法研究