郭 勇 , 李 敏 , 黃偉杰
(1. 信息工程大學(xué) 地理空間信息學(xué)院,河南 鄭州 450052;2. 72946部隊(duì),山東 淄博 255000;3. 77200部隊(duì),云南 昆明 650000)
地理空間信息服務(wù)構(gòu)件是在當(dāng)前復(fù)雜的應(yīng)用模式和計(jì)算環(huán)境下提出的概念[1]。傳統(tǒng)的對(duì)象技術(shù)和構(gòu)件技術(shù)不能滿足面向服務(wù)計(jì)算環(huán)境下地理空間信息服務(wù)產(chǎn)品的應(yīng)用開發(fā),而面向服務(wù)框架雖然較好地解決了面向服務(wù)計(jì)算環(huán)境下跨平臺(tái)和異構(gòu)數(shù)據(jù)的互操作等問題[2],但其主要實(shí)現(xiàn)技術(shù)Web Service 基于SOAP協(xié)議和HTTP 協(xié)議,傳輸效率不高。地理空間信息服務(wù)構(gòu)件可提供地理信息服務(wù),并可提供本地調(diào)用和網(wǎng)絡(luò)遠(yuǎn)程調(diào)用等訪問方式,通過地理空間信息服務(wù)構(gòu)件可以實(shí)現(xiàn)跨平臺(tái)訪問和地理空間數(shù)據(jù)操作。為了在復(fù)雜的應(yīng)用環(huán)境中滿足多樣化的需求,在基于服務(wù)構(gòu)件的地理空間信息服務(wù)產(chǎn)品設(shè)計(jì)和開發(fā)過程中涉及很多關(guān)鍵技術(shù)。本文對(duì)其中多源異構(gòu)條件下的空間數(shù)據(jù)庫引擎和面向服務(wù)的空間數(shù)據(jù)綜合查詢進(jìn)行了研究。
空間數(shù)據(jù)庫引擎(spatial database engine,SDE)是地理空間信息服務(wù)構(gòu)件的底層支撐技術(shù)。SDE的工作原理是[3]:客戶端向服務(wù)器端發(fā)出請(qǐng)求,服務(wù)器端處理請(qǐng)求并將其轉(zhuǎn)換為關(guān)系數(shù)據(jù)庫能夠處理的事務(wù),然后由數(shù)據(jù)庫完成相應(yīng)的請(qǐng)求,服務(wù)器端再將處理結(jié)果實(shí)時(shí)傳遞給客戶端。
空間數(shù)據(jù)一般可分為矢量數(shù)據(jù)和柵格數(shù)據(jù)。對(duì)于空間數(shù)據(jù)的存儲(chǔ),在關(guān)系數(shù)據(jù)庫中常用的有2種方式:一種是使用WKB(well-known binary)來存儲(chǔ)空間實(shí)體,另一種是使用規(guī)范化SQL92方案進(jìn)行存儲(chǔ)[4]。
1)矢量數(shù)據(jù)存儲(chǔ)。根據(jù)SQL92標(biāo)準(zhǔn),BLOB類型是一種標(biāo)準(zhǔn)的二進(jìn)制大對(duì)象類型,可以用來存儲(chǔ)WKB描述的空間實(shí)體,如表1。其中的Geometry字段可以是由WKBGeometry表示的BLOB字段,也可以是自定義的二進(jìn)制字段。
表1 矢量數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)
2)柵格數(shù)據(jù)存儲(chǔ)。針對(duì)海量的柵格數(shù)據(jù),一般采用分層、分塊的金字塔結(jié)構(gòu)進(jìn)行存儲(chǔ)。金字塔存儲(chǔ)結(jié)構(gòu)是一種多分辨率層次(multi-resolution hierarchy)模型,采用金字塔結(jié)構(gòu)并進(jìn)行分塊存儲(chǔ)的數(shù)據(jù)相關(guān)表結(jié)構(gòu)描述如表2所示。其中各數(shù)據(jù)塊都是整體數(shù)據(jù)的一個(gè)子集,是將柵格數(shù)據(jù)進(jìn)行無損切割所得。分塊時(shí)將每塊都分成一個(gè)矩形,大小可以根據(jù)實(shí)際應(yīng)用進(jìn)行調(diào)整,常見的大小有64×64、128×128和256×256等若干種。存儲(chǔ)時(shí),將數(shù)據(jù)塊的數(shù)據(jù)和相應(yīng)級(jí)別、行列號(hào)、外接矩形坐標(biāo)等一并進(jìn)行存放,以便按索引進(jìn)行數(shù)據(jù)的快速提取。
表2 柵格數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)
對(duì)于網(wǎng)絡(luò)應(yīng)用來說,數(shù)據(jù)可能以異構(gòu)的方式分布式地存儲(chǔ)于網(wǎng)絡(luò)上的各個(gè)節(jié)點(diǎn),地理空間信息服務(wù)構(gòu)件的空間數(shù)據(jù)庫引擎應(yīng)該向上層應(yīng)用屏蔽底層數(shù)據(jù)存儲(chǔ)方式的異構(gòu)性,提供統(tǒng)一的訪問接口。
SQL語言是一種結(jié)構(gòu)化的查詢語言,其特點(diǎn)是不依賴于特定的操作系統(tǒng)和特定的關(guān)系數(shù)據(jù)庫;同時(shí),SQL也是一種規(guī)范,是不同數(shù)據(jù)庫管理系統(tǒng)共同遵循的語言規(guī)范。但在實(shí)際中,各數(shù)據(jù)庫系統(tǒng)的實(shí)現(xiàn)仍存在很大差異,成為異構(gòu)數(shù)據(jù)庫統(tǒng)一訪問接口的障礙。
在實(shí)際應(yīng)用中,每種數(shù)據(jù)庫都有自己的一組基本數(shù)據(jù)類型,而且各數(shù)據(jù)庫對(duì)基本數(shù)據(jù)類型的定義存在著差異。表3為幾種常用數(shù)據(jù)庫的對(duì)應(yīng)參數(shù)類型。
表3 數(shù)據(jù)庫基本類型對(duì)比
圖1 統(tǒng)一SQL接口實(shí)現(xiàn)流程
同時(shí),各數(shù)據(jù)庫在SQL語法的定義上存在差異,所采用的保留關(guān)鍵字也不盡相同。這些差異導(dǎo)致一些SQL語句在一個(gè)數(shù)據(jù)庫中能夠執(zhí)行,而在其他數(shù)據(jù)庫中變?yōu)榉欠ㄕZ句。為了解決這一問題,需要對(duì)SQL語句進(jìn)行分解翻譯,然后再進(jìn)行校驗(yàn)和執(zhí)行,如圖1所示。
當(dāng)接收到查詢請(qǐng)求時(shí),系統(tǒng)將其進(jìn)行分解翻譯,并根據(jù)不同的數(shù)據(jù)庫類型將其翻譯為相應(yīng)的SQL語句;經(jīng)過校驗(yàn)后進(jìn)行執(zhí)行,并返回查詢結(jié)果。這一過程需要各數(shù)據(jù)庫參數(shù)的對(duì)應(yīng)關(guān)系,如圖2所示。
圖2 各數(shù)據(jù)庫SQL語法參數(shù)UML關(guān)系圖
從圖2中可以看出,類ParameterLisBase為參數(shù)列表的抽象基類,往下可以派生出針對(duì)各個(gè)數(shù)據(jù)庫的參數(shù)列表類,如OdbcParameterList類、OracleParameterList類等;如果需要擴(kuò)充對(duì)一個(gè)新數(shù)據(jù)庫的支持,只需在ParameterLisBase基礎(chǔ)上再派生出一個(gè)相應(yīng)的類進(jìn)行實(shí)現(xiàn)即可,對(duì)原結(jié)構(gòu)和系統(tǒng)的調(diào)用方式不需要改變。
用戶查詢涉及多個(gè)空間數(shù)據(jù)集是很常見的情況,需要對(duì)多樣化的數(shù)據(jù)進(jìn)行分析和挖掘,從多個(gè)數(shù)據(jù)集中提取用戶關(guān)心的數(shù)據(jù),并提供從圖到文、從文到圖和從文到文等多種查詢方式,如圖3所示。
為了實(shí)現(xiàn)圖、文、庫的一體化查詢應(yīng)用,需要在空間數(shù)據(jù)庫基礎(chǔ)上建立專題信息庫和空間數(shù)據(jù)庫之間以及專題信息庫和專題信息庫之間的聯(lián)系。
例如,要查詢某區(qū)域內(nèi)影響裝甲車輛通行的橋梁隧道情況,就涉及公路、橋梁隧道及武器裝備屬性等3個(gè)數(shù)據(jù)集。當(dāng)這3個(gè)數(shù)據(jù)集分別位于3個(gè)不同的數(shù)據(jù)庫時(shí),空間數(shù)據(jù)集成系統(tǒng)需要合并這3個(gè)數(shù)據(jù)服務(wù)的中間結(jié)果集才能得到一個(gè)滿足用戶需求的最終查詢結(jié)果,我們稱該過程為集成多元空間連接查詢。
空間數(shù)據(jù)庫中處理多元連接查詢一般采用兩階段處理方式,即查詢編譯階段和查詢執(zhí)行階段。在查詢編譯階段,對(duì)查詢命令進(jìn)行分解和優(yōu)化,產(chǎn)生一個(gè)執(zhí)行代價(jià)最優(yōu)的查詢計(jì)劃;在查詢執(zhí)行階段,查詢執(zhí)行引擎嚴(yán)格執(zhí)行該查詢計(jì)劃。
在局域網(wǎng)或本地應(yīng)用中,通過服務(wù)構(gòu)件提供的API函數(shù)直接調(diào)用接口分別在不同的庫中進(jìn)行查詢并將結(jié)果進(jìn)行合并即可;而在面向地理數(shù)據(jù)服務(wù)的空間數(shù)據(jù)集成系統(tǒng)中,集成查詢處理器對(duì)空間數(shù)據(jù)的訪問是通過調(diào)用外部接口實(shí)現(xiàn)的,因此,常常需要對(duì)動(dòng)態(tài)生成的GML文檔進(jìn)行進(jìn)一步空間連接查詢才能得到用戶需要的查詢結(jié)果。
圖4 專題信息和空間信息的關(guān)聯(lián)方式
圖5 關(guān)鍵字庫的應(yīng)用
地理空間信息查詢通常分為兩類:基于屬性的查詢和基于空間位置的查詢(空間關(guān)系查詢)。基于屬性查詢是通過對(duì)空間對(duì)象的屬性信息設(shè)定一定的條件來查詢空間位置,主要包括字符型字段查詢、數(shù)值型字段查詢和復(fù)合型查詢3種?;谧址妥侄蔚恼Z句通常使用“=”和“LIKE”進(jìn)行SQL查詢?;跀?shù)值型字段的語句通常使用比較操作運(yùn)算符(>,<,=,<=,>一)和運(yùn)算符(+,-,*,/)完成。復(fù)合查詢通常采用“AND”、“OR”或“NOT”等邏輯運(yùn)算符完成。
要實(shí)現(xiàn)不同空間數(shù)據(jù)庫之間的關(guān)聯(lián)查詢,特別是屬性數(shù)據(jù)庫和空間數(shù)據(jù)庫之間的關(guān)聯(lián)應(yīng)用,需要建立不同空間數(shù)據(jù)庫之間以及空間數(shù)據(jù)庫和屬性數(shù)據(jù)庫之間的關(guān)聯(lián)關(guān)系。如果所有的數(shù)據(jù)庫都由我們自己維護(hù),則只需通過唯一的ID值建立空間數(shù)據(jù)和屬性數(shù)據(jù)之間的關(guān)聯(lián)即可,但在地理空間信息服務(wù)構(gòu)件的應(yīng)用中,空間數(shù)據(jù)庫和專題數(shù)據(jù)庫可能來自于遠(yuǎn)程,由別人進(jìn)行維護(hù),我們不能預(yù)先建立它們之間的聯(lián)系,只有在應(yīng)用時(shí)才能動(dòng)態(tài)地建立關(guān)聯(lián)。在動(dòng)態(tài)關(guān)聯(lián)的過程中,如果專題信息帶有空間坐標(biāo)信息,則直接通過坐標(biāo)進(jìn)行空間關(guān)聯(lián)即可;但有些應(yīng)用中,專題信息可能沒有空間定位信息,只有文本描述,這就需要我們從中挖掘出隱含的空間信息并進(jìn)行關(guān)聯(lián)應(yīng)用。
對(duì)于沒有通過ID值和空間數(shù)據(jù)建立聯(lián)系的專題信息,需要通過全文檢索的方式從中挖掘文檔中隱含的地理空間信息,如地名等,將其和空間地理信息進(jìn)行關(guān)聯(lián),如圖4所示。具體實(shí)現(xiàn)的方法是預(yù)先設(shè)定一定的關(guān)鍵字表,通過專題信息和關(guān)鍵字表的比對(duì),找出其中和空間定位相關(guān)的信息,如圖5所示。
其算法偽碼描述如下:
表4 關(guān)鍵字庫表結(jié)構(gòu)
建立關(guān)鍵字庫,是從已有的地理空間數(shù)據(jù)庫中提取出關(guān)鍵字信息,并建立相應(yīng)的索引。其數(shù)據(jù)表結(jié)構(gòu)如表4所示。有了關(guān)鍵字表之后,就可以對(duì)專題信息中的文本信息進(jìn)行檢索匹配,并進(jìn)行地理編碼,從而建立和空間信息的關(guān)聯(lián)。
[1]龍明.地理空間信息服務(wù)構(gòu)件研究與實(shí)踐[D].鄭州:信息工程大學(xué),2010
[2]吳信才.面向網(wǎng)絡(luò)的新一代地理信息系統(tǒng)[M].北京:科學(xué)出版社,2009
[3]何雄.空間數(shù)據(jù)庫引擎關(guān)鍵技術(shù)研究[D].北京:中國科學(xué)院,2006
[4]唐桂芬.面向地理數(shù)據(jù)服務(wù)的集成空間查詢處理技術(shù)[D].長沙:國防科技大學(xué),2007
[5]Gareia-Molina H,Jeffrey U,Widom J.數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)[M].北京:機(jī)械工業(yè)出版社, 2001
[6]楊芙清,梅宏.構(gòu)件化軟件設(shè)計(jì)與實(shí)現(xiàn)[M].北京:清華大學(xué)出版社,2008
[7]毛新生.SOA原理、方法、實(shí)踐[M].北京:電子工業(yè)出版社,2007
[8]倪光南.SOA標(biāo)準(zhǔn)與構(gòu)件技術(shù)的結(jié)合[R].SOA國際標(biāo)準(zhǔn)全球路演中國站,2007