张建,吕楠,刘寓
(重庆数字城市科技有限公司,重庆 400020)
警用地理信息平台(Police Geographice Information System Platform,简称“PGIS平台”)是公安信息化的重要基础设施[1]。在公安业务工作中,70%的信息均与地理位置和空间分布有关,通过地理信息系统多元化的空间分析技术可将公安业务关注的“人”、“地”、“物”、“事”和“组织”五要素进行整合,实现五要素之间的关联分析。近年来,根据公安部统一部署,重庆市公安局依托全国PGIS平台软件,建立了市、区(县)两级PGIS数据库,建设了首批重点PGIS应用,为全局推广PGIS应用打下了坚实的基础。
重庆市是中国最年轻和最大的直辖市,由于地理上的特殊,使重庆市公安局既肩负省级公安机关对下属分县局的管理职能,同时又要承担主城区的具体警务工作。与其他省市的PGIS平台建设模式相比,重庆的管理模式和应用需求有其自身特点。首先,重庆市公安局PGIS平台建立了全市统一的警用地理信息数据库,集中管理全市警用地理的警用基础、公共等信息;其次,为降低重庆市公安局中心数据库的访问压力,保障各区县分局的业务应用,各区县分局分别建立了区县级警用地理数据库。因此,针对重庆市PGIS平台采用了市-区(县)两级分布式构架,需建立数据分发机制,以重庆市公安局市级警用地理数据库的数据为基准,通过空间矢量数据库同步技术,将重庆市公安局市级警用地理数据分发到各区县的地理信息子数据库中。本文针对重庆市公安行业的需求,提出了一种基于Oracle数据库的空间矢量数据实时同步技术,通过本方法,解决了分布式空间数据同步的问题,实现了市-区(县)两级警务资源共享。
ArcSDE是Esri公司的发布的GIS数据管理中间件,它提供了高级的、高性能的GIS数据管理的接口,支持海量的空间数据管理。在传统的存储方式中,每一个图层由业务表(business table)、要素表(feature table)和空间索引表(spatial index table)组成,属性数据和空间数据分开存储在B表和F表中,数据同步时需考虑多表间的级联关系,不容易保证同步成功。ArcSDE for Oracle提供了ST_Geometry类型来存储空间数据。ST_Geometry是一种遵循ISO和OGC规范的,可以通过SQL直接读取的空间信息存储类型。采用这种存储方式能够更好的利用Oracle的资源,更好的兼容oracle的特征,并且能够更快的读取空间数据。本次研究中,我们采用ST_Geometry存储空间数据,将业务数据和空间数据存储到一张表中,简化了空间数据的管理,实现了空间数据的快速读取。
由于需要同步的数据存储在不同的数据库中,因此需要解决分布式数据之间互相访问的技术难点。Database Link支持一个数据库中的对象访问另一个数据库中的对象。当创建了一个Database Link后,可以用它来引用其他数据库中的表和视图。在SQL语句中,可以在表名或视图名后加@Database Link以引用其他数据库中的表或视图,不仅可以通过Select语句查询其他数据库的表或视图,还可以使用任何Insert,Update,Delete或Lock Table语句访问远程数据库[2]。
当市级数据库的记录发生变化时,需要及时将这种变化传递给区县数据库,在此,需借助Oracle的物化视图。Oracle的物化视图是一种将视图所对应数据加以实际物理存储的技术,它是远程数据库目标表某一时间点在本地的副本。物化视图最重要的功能和特性之一,就是其数据会随着基表(或称主表,master表)的变化而变,基表数据增加了,物化视图数据会变多;基表数据删除了,物化视图数据也会变少[3]。本次研究中,我们通过建立市-区(县)两级PGIS平台数据库更新数据记录物化视图,将市级PGIS数据库的增、删、改操作传递给区县PGIS数据库,从而实现两级数据库的操作记录同步。
为保证市、区(县)两级PGIS数据库能实现数据同步,首先需要建立统一的数据标准。根据《警用地理信息基础平台与系统建设规范》,我们建立了警用基础地理信息,警用公共地理信息,专业地理信息、标准地址信息、业务关联地理信息等数据库[4,5],保障了市区两级空间数据结构的一致性,为空间矢量数据同步奠定了基础。
图1 PGIS建库标准
系统主要包含4个关键表:DCQ_SYN_DATABASE、DCQ_SYN_CONFIG、DCQ_SYN_LOG 和 DCQ_SYN_LOG_LOCAL,其中 DCQ_SYN_DATABASE记录了所有区县数据库连接信息,DCQ_SYN_CONFIG记录了同步图层的信息,DCQ_SYN_LOG记录了同步图层的所有操作日志,DCQ_SYN_LOG_LOCAL记录了本区县同步操作日志,用于保证所有操作日志只处理一次,DCQ_SYN_LOG和DCQ_SYN_LOG_LOCAL字段结构相同。详细信息如下:
DCQ_SYN_DATABASE表属性 表1
DCQ_SYN_CONFIG表属性 表2
DCQ_SYN_LOG和DCQ_SYN_LOG_LOCAL表属性 表3
(1)调整市-区(县)两级PGIS数据库的基本参数,保持市-区(县)两级PGIS数据库的空间坐标系、空间对象编码、元数据描述等参数完全一致;
(2)建立市级PGIS数据库数据监控器,当市级PGIS平台空间矢量数据产生更新时,将更新信息写入市级PGIS平台更新日志记录表中;
(3)建立市-区(县)两级PGIS数据库更新数据记录物化视图,实现市-区(县)两级PGIS平台更新数据记录数据同步;
(4)区县PGIS平台定时访问市级平台PGIS更新日志记录表,发现有更新内容后,将更新内容按区县分发至各区县更新记录表中;
(5)建立区县PGIS数据库数据监控器,当监控到本地更新记录表中数据发生变化时,根据变化操作,更新本地空间数据。
在市局数据库,使用触发器监控所有同步图层的INSERT、UPDATE、DELETE操作,并将变化记录到DCQ_SYN_LOG日志表中。在区县数据库中,通过物化视图将市局DCQ_SYN_LOG表记录同步到区县DCQ_SYN_LOG表中,在插入到区县DCQ_SYN_LOG表的同时,通过唯一标识GUIDBSM判断DCQ_SYN_LOG_LOCAL表中是否已经存在该记录,如果没有则将该记录插入到DCQ_SYN_LOG_LOCAL表中,在插入到DCQ_SYN_LOG_LOCAL之前,分析该日志记录,更新本区县矢量数据,如图2所示。
图2 数据同步示意图
根据上述的数据同步方法,我们使用Microsoft.NET平台实现了市-区(县)两级空间数据实时同步系统,并为42个区县局部署了该同步系统。在公安专网内,100万数据能在1小时内同步到各个区县局,数据同步准确率100%,结果如图3所示。
图3 数据同步结果
本文提出了大规模空间数据实时同步系统的技术设计,结合PGIS平台在重庆市公安行业警用地理信息基础平台建设中得到了较好的应用,有效解决了市-区两级PGIS空间数据同步的问题,有力支撑了全市PGIS应用的运行。
[1]贺日兴,孙丕龙.警用地理信息平台及其建设部署模式[J].警察技术,2011(3):3~7.
[2]姚文琳,王存刚,刘世栋等.基于Oracle的分布式数据库设计与技术[J].计算机工程,2006(20):89~91.
[3]丁鲲,严浩,刁兴春.分布式数据库数据同步技术研究[J].海军工程大学学报,2004(5):100~104.
[4]GA/T 493-2004.城市警用地理信息系统建设规范[S].
[5]GA/T 529-2005.城市警用地理信息属性数据结构[S].
[6]GA/T 532-2005.城市警用地理信息数据分层及命名规则[S].