張建,呂楠,劉寓
(重慶數(shù)字城市科技有限公司,重慶 400020)
警用地理信息平臺(Police Geographice Information System Platform,簡稱“PGIS平臺”)是公安信息化的重要基礎(chǔ)設(shè)施[1]。在公安業(yè)務(wù)工作中,70%的信息均與地理位置和空間分布有關(guān),通過地理信息系統(tǒng)多元化的空間分析技術(shù)可將公安業(yè)務(wù)關(guān)注的“人”、“地”、“物”、“事”和“組織”五要素進(jìn)行整合,實(shí)現(xiàn)五要素之間的關(guān)聯(lián)分析。近年來,根據(jù)公安部統(tǒng)一部署,重慶市公安局依托全國PGIS平臺軟件,建立了市、區(qū)(縣)兩級PGIS數(shù)據(jù)庫,建設(shè)了首批重點(diǎn)PGIS應(yīng)用,為全局推廣PGIS應(yīng)用打下了堅(jiān)實(shí)的基礎(chǔ)。
重慶市是中國最年輕和最大的直轄市,由于地理上的特殊,使重慶市公安局既肩負(fù)省級公安機(jī)關(guān)對下屬分縣局的管理職能,同時又要承擔(dān)主城區(qū)的具體警務(wù)工作。與其他省市的PGIS平臺建設(shè)模式相比,重慶的管理模式和應(yīng)用需求有其自身特點(diǎn)。首先,重慶市公安局PGIS平臺建立了全市統(tǒng)一的警用地理信息數(shù)據(jù)庫,集中管理全市警用地理的警用基礎(chǔ)、公共等信息;其次,為降低重慶市公安局中心數(shù)據(jù)庫的訪問壓力,保障各區(qū)縣分局的業(yè)務(wù)應(yīng)用,各區(qū)縣分局分別建立了區(qū)縣級警用地理數(shù)據(jù)庫。因此,針對重慶市PGIS平臺采用了市-區(qū)(縣)兩級分布式構(gòu)架,需建立數(shù)據(jù)分發(fā)機(jī)制,以重慶市公安局市級警用地理數(shù)據(jù)庫的數(shù)據(jù)為基準(zhǔn),通過空間矢量數(shù)據(jù)庫同步技術(shù),將重慶市公安局市級警用地理數(shù)據(jù)分發(fā)到各區(qū)縣的地理信息子數(shù)據(jù)庫中。本文針對重慶市公安行業(yè)的需求,提出了一種基于Oracle數(shù)據(jù)庫的空間矢量數(shù)據(jù)實(shí)時同步技術(shù),通過本方法,解決了分布式空間數(shù)據(jù)同步的問題,實(shí)現(xiàn)了市-區(qū)(縣)兩級警務(wù)資源共享。
ArcSDE是Esri公司的發(fā)布的GIS數(shù)據(jù)管理中間件,它提供了高級的、高性能的GIS數(shù)據(jù)管理的接口,支持海量的空間數(shù)據(jù)管理。在傳統(tǒng)的存儲方式中,每一個圖層由業(yè)務(wù)表(business table)、要素表(feature table)和空間索引表(spatial index table)組成,屬性數(shù)據(jù)和空間數(shù)據(jù)分開存儲在B表和F表中,數(shù)據(jù)同步時需考慮多表間的級聯(lián)關(guān)系,不容易保證同步成功。ArcSDE for Oracle提供了ST_Geometry類型來存儲空間數(shù)據(jù)。ST_Geometry是一種遵循ISO和OGC規(guī)范的,可以通過SQL直接讀取的空間信息存儲類型。采用這種存儲方式能夠更好的利用Oracle的資源,更好的兼容oracle的特征,并且能夠更快的讀取空間數(shù)據(jù)。本次研究中,我們采用ST_Geometry存儲空間數(shù)據(jù),將業(yè)務(wù)數(shù)據(jù)和空間數(shù)據(jù)存儲到一張表中,簡化了空間數(shù)據(jù)的管理,實(shí)現(xiàn)了空間數(shù)據(jù)的快速讀取。
由于需要同步的數(shù)據(jù)存儲在不同的數(shù)據(jù)庫中,因此需要解決分布式數(shù)據(jù)之間互相訪問的技術(shù)難點(diǎn)。Database Link支持一個數(shù)據(jù)庫中的對象訪問另一個數(shù)據(jù)庫中的對象。當(dāng)創(chuàng)建了一個Database Link后,可以用它來引用其他數(shù)據(jù)庫中的表和視圖。在SQL語句中,可以在表名或視圖名后加@Database Link以引用其他數(shù)據(jù)庫中的表或視圖,不僅可以通過Select語句查詢其他數(shù)據(jù)庫的表或視圖,還可以使用任何Insert,Update,Delete或Lock Table語句訪問遠(yuǎn)程數(shù)據(jù)庫[2]。
當(dāng)市級數(shù)據(jù)庫的記錄發(fā)生變化時,需要及時將這種變化傳遞給區(qū)縣數(shù)據(jù)庫,在此,需借助Oracle的物化視圖。Oracle的物化視圖是一種將視圖所對應(yīng)數(shù)據(jù)加以實(shí)際物理存儲的技術(shù),它是遠(yuǎn)程數(shù)據(jù)庫目標(biāo)表某一時間點(diǎn)在本地的副本。物化視圖最重要的功能和特性之一,就是其數(shù)據(jù)會隨著基表(或稱主表,master表)的變化而變,基表數(shù)據(jù)增加了,物化視圖數(shù)據(jù)會變多;基表數(shù)據(jù)刪除了,物化視圖數(shù)據(jù)也會變少[3]。本次研究中,我們通過建立市-區(qū)(縣)兩級PGIS平臺數(shù)據(jù)庫更新數(shù)據(jù)記錄物化視圖,將市級PGIS數(shù)據(jù)庫的增、刪、改操作傳遞給區(qū)縣PGIS數(shù)據(jù)庫,從而實(shí)現(xiàn)兩級數(shù)據(jù)庫的操作記錄同步。
為保證市、區(qū)(縣)兩級PGIS數(shù)據(jù)庫能實(shí)現(xiàn)數(shù)據(jù)同步,首先需要建立統(tǒng)一的數(shù)據(jù)標(biāo)準(zhǔn)。根據(jù)《警用地理信息基礎(chǔ)平臺與系統(tǒng)建設(shè)規(guī)范》,我們建立了警用基礎(chǔ)地理信息,警用公共地理信息,專業(yè)地理信息、標(biāo)準(zhǔn)地址信息、業(yè)務(wù)關(guān)聯(lián)地理信息等數(shù)據(jù)庫[4,5],保障了市區(qū)兩級空間數(shù)據(jù)結(jié)構(gòu)的一致性,為空間矢量數(shù)據(jù)同步奠定了基礎(chǔ)。
圖1 PGIS建庫標(biāo)準(zhǔn)
系統(tǒng)主要包含4個關(guān)鍵表:DCQ_SYN_DATABASE、DCQ_SYN_CONFIG、DCQ_SYN_LOG 和 DCQ_SYN_LOG_LOCAL,其中 DCQ_SYN_DATABASE記錄了所有區(qū)縣數(shù)據(jù)庫連接信息,DCQ_SYN_CONFIG記錄了同步圖層的信息,DCQ_SYN_LOG記錄了同步圖層的所有操作日志,DCQ_SYN_LOG_LOCAL記錄了本區(qū)縣同步操作日志,用于保證所有操作日志只處理一次,DCQ_SYN_LOG和DCQ_SYN_LOG_LOCAL字段結(jié)構(gòu)相同。詳細(xì)信息如下:
DCQ_SYN_DATABASE表屬性 表1
DCQ_SYN_CONFIG表屬性 表2
DCQ_SYN_LOG和DCQ_SYN_LOG_LOCAL表屬性 表3
(1)調(diào)整市-區(qū)(縣)兩級PGIS數(shù)據(jù)庫的基本參數(shù),保持市-區(qū)(縣)兩級PGIS數(shù)據(jù)庫的空間坐標(biāo)系、空間對象編碼、元數(shù)據(jù)描述等參數(shù)完全一致;
(2)建立市級PGIS數(shù)據(jù)庫數(shù)據(jù)監(jiān)控器,當(dāng)市級PGIS平臺空間矢量數(shù)據(jù)產(chǎn)生更新時,將更新信息寫入市級PGIS平臺更新日志記錄表中;
(3)建立市-區(qū)(縣)兩級PGIS數(shù)據(jù)庫更新數(shù)據(jù)記錄物化視圖,實(shí)現(xiàn)市-區(qū)(縣)兩級PGIS平臺更新數(shù)據(jù)記錄數(shù)據(jù)同步;
(4)區(qū)縣PGIS平臺定時訪問市級平臺PGIS更新日志記錄表,發(fā)現(xiàn)有更新內(nèi)容后,將更新內(nèi)容按區(qū)縣分發(fā)至各區(qū)縣更新記錄表中;
(5)建立區(qū)縣PGIS數(shù)據(jù)庫數(shù)據(jù)監(jiān)控器,當(dāng)監(jiān)控到本地更新記錄表中數(shù)據(jù)發(fā)生變化時,根據(jù)變化操作,更新本地空間數(shù)據(jù)。
在市局?jǐn)?shù)據(jù)庫,使用觸發(fā)器監(jiān)控所有同步圖層的INSERT、UPDATE、DELETE操作,并將變化記錄到DCQ_SYN_LOG日志表中。在區(qū)縣數(shù)據(jù)庫中,通過物化視圖將市局DCQ_SYN_LOG表記錄同步到區(qū)縣DCQ_SYN_LOG表中,在插入到區(qū)縣DCQ_SYN_LOG表的同時,通過唯一標(biāo)識GUIDBSM判斷DCQ_SYN_LOG_LOCAL表中是否已經(jīng)存在該記錄,如果沒有則將該記錄插入到DCQ_SYN_LOG_LOCAL表中,在插入到DCQ_SYN_LOG_LOCAL之前,分析該日志記錄,更新本區(qū)縣矢量數(shù)據(jù),如圖2所示。
圖2 數(shù)據(jù)同步示意圖
根據(jù)上述的數(shù)據(jù)同步方法,我們使用Microsoft.NET平臺實(shí)現(xiàn)了市-區(qū)(縣)兩級空間數(shù)據(jù)實(shí)時同步系統(tǒng),并為42個區(qū)縣局部署了該同步系統(tǒng)。在公安專網(wǎng)內(nèi),100萬數(shù)據(jù)能在1小時內(nèi)同步到各個區(qū)縣局,數(shù)據(jù)同步準(zhǔn)確率100%,結(jié)果如圖3所示。
圖3 數(shù)據(jù)同步結(jié)果
本文提出了大規(guī)模空間數(shù)據(jù)實(shí)時同步系統(tǒng)的技術(shù)設(shè)計(jì),結(jié)合PGIS平臺在重慶市公安行業(yè)警用地理信息基礎(chǔ)平臺建設(shè)中得到了較好的應(yīng)用,有效解決了市-區(qū)兩級PGIS空間數(shù)據(jù)同步的問題,有力支撐了全市PGIS應(yīng)用的運(yùn)行。
[1]賀日興,孫丕龍.警用地理信息平臺及其建設(shè)部署模式[J].警察技術(shù),2011(3):3~7.
[2]姚文琳,王存剛,劉世棟等.基于Oracle的分布式數(shù)據(jù)庫設(shè)計(jì)與技術(shù)[J].計(jì)算機(jī)工程,2006(20):89~91.
[3]丁鯤,嚴(yán)浩,刁興春.分布式數(shù)據(jù)庫數(shù)據(jù)同步技術(shù)研究[J].海軍工程大學(xué)學(xué)報(bào),2004(5):100~104.
[4]GA/T 493-2004.城市警用地理信息系統(tǒng)建設(shè)規(guī)范[S].
[5]GA/T 529-2005.城市警用地理信息屬性數(shù)據(jù)結(jié)構(gòu)[S].
[6]GA/T 532-2005.城市警用地理信息數(shù)據(jù)分層及命名規(guī)則[S].