亢曉琛,張艷玲,閆浩文
(蘭州交通大學(xué)數(shù)理與軟件工程學(xué)院,甘肅蘭州 730070)
基于 ISAPI技術(shù)的柵格數(shù)據(jù)瓦片服務(wù)研究
亢曉琛,張艷玲,閆浩文
(蘭州交通大學(xué)數(shù)理與軟件工程學(xué)院,甘肅蘭州 730070)
在分析 GoogleMaps瓦片式服務(wù)模型的基礎(chǔ)上,提出可擴(kuò)展性的數(shù)據(jù)服務(wù)方案。以 ISAPI技術(shù)為通訊手段,設(shè)計(jì)并實(shí)現(xiàn)了高性能的柵格數(shù)據(jù)瓦片服務(wù)系統(tǒng)。從系統(tǒng)的數(shù)據(jù)存儲(chǔ)設(shè)計(jì)、Web服務(wù)架構(gòu)、應(yīng)用服務(wù)模塊與服務(wù)接口設(shè)計(jì)等方面進(jìn)行論述,并給出系統(tǒng)性能測(cè)試與相關(guān)的服務(wù)應(yīng)用。
柵格數(shù)據(jù);瓦片服務(wù);存儲(chǔ)設(shè)計(jì);接口設(shè)計(jì);ISAPI
計(jì)算機(jī)軟硬件技術(shù)以及網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,極大地增強(qiáng)了地理信息系統(tǒng)的服務(wù)能力。成熟的商業(yè)數(shù)據(jù)庫技術(shù)為海量空間信息的高效存儲(chǔ)管理提供了基礎(chǔ)的保障,數(shù)據(jù)的檢索能力得到了極大提高。與此同時(shí),先進(jìn)網(wǎng)絡(luò)信息技術(shù)則滿足了空間信息數(shù)據(jù)高效發(fā)布的需求。地理信息系統(tǒng)經(jīng)歷了技術(shù)研究、集成應(yīng)用到產(chǎn)品服務(wù),直至今天正在向地理信息服務(wù)轉(zhuǎn)變。地理信息服務(wù)這一概念強(qiáng)調(diào)“服務(wù)”,這里的服務(wù)可以理解為“輔助用戶進(jìn)行行為決策”,那么將地理信息轉(zhuǎn)化為輔助用戶進(jìn)行行為決策的工具這一過程中所有的問題均可以認(rèn)為是地理信息服務(wù)所需要研究的內(nèi)容[1]。
當(dāng)前,地理信息服務(wù)的服務(wù)模式多種多樣,而標(biāo)準(zhǔn)的數(shù)據(jù)服務(wù)始終是構(gòu)建其他復(fù)雜地理信息服務(wù)應(yīng)用的基礎(chǔ)環(huán)節(jié)。由于地理數(shù)據(jù)服務(wù)基于行業(yè)標(biāo)準(zhǔn),并且具有良好的跨平臺(tái)性質(zhì),因此,以服務(wù)的方式實(shí)現(xiàn)空間數(shù)據(jù)的發(fā)布以及互操作成為技術(shù)的主流[2]。
類似于 GoogleMaps,當(dāng)前有許多網(wǎng)絡(luò) GIS應(yīng)用基于瓦片服務(wù)模式來構(gòu)建。但大多以二維顯示應(yīng)用為主,服務(wù)的數(shù)據(jù)多為簡單的圖片。本文所論述的服務(wù)模型具有良好的數(shù)據(jù)擴(kuò)展性,同時(shí)可以為二維顯示與三維應(yīng)用提供數(shù)據(jù)服務(wù)。以具體的瓦片式柵格地圖服務(wù)的具體實(shí)現(xiàn)為例,詳細(xì)分析了瓦片式柵格數(shù)據(jù)服務(wù)的實(shí)現(xiàn)原理與關(guān)鍵技術(shù)。
在 GIS與模型集成的多層體系結(jié)構(gòu)中,可以劃分為表示層、商業(yè)邏輯層和數(shù)據(jù)訪問層,這三層構(gòu)成了一個(gè)經(jīng)典的三層體系結(jié)構(gòu)[3]。
柵格數(shù)據(jù)瓦片服務(wù)系統(tǒng)模型可以以數(shù)據(jù)源形式封裝來自數(shù)據(jù)庫與文件方式組織的不同數(shù)據(jù)來源。對(duì)于多種不同的數(shù)據(jù)源,向上服務(wù)的數(shù)據(jù)調(diào)用接口是一致的。這樣,以接口繼承的方式很容易實(shí)現(xiàn)數(shù)據(jù)源類型的擴(kuò)展與多源數(shù)據(jù)的融合,這一優(yōu)勢(shì)正是開源桌面軟件 QGIS所采用的數(shù)據(jù)管理方式。通過統(tǒng)一的數(shù)據(jù)調(diào)用接口,應(yīng)用邏輯可以實(shí)時(shí)進(jìn)行數(shù)據(jù)請(qǐng)求。為了應(yīng)對(duì)較高的并發(fā)請(qǐng)求,在應(yīng)用邏輯與數(shù)據(jù)源層之間預(yù)先建立可控的連接池。在連接池中保留了實(shí)時(shí)可用的有效數(shù)據(jù)源連接,用于數(shù)據(jù)請(qǐng)求與各種操作請(qǐng)求。Web Server層可以實(shí)時(shí)捕捉到來自客戶端的URL請(qǐng)求,應(yīng)用邏輯將URL所攜帶的信息進(jìn)行解析,然后根據(jù)數(shù)據(jù)請(qǐng)求參數(shù)從數(shù)據(jù)源調(diào)取數(shù)據(jù),再由Web Server發(fā)送給客戶端。系統(tǒng)模型參見圖1。
1.數(shù)據(jù)瓦片編碼與生產(chǎn)
數(shù)據(jù)瓦片 tile是通過將柵格數(shù)據(jù)按照一定的像素寬高進(jìn)行裁剪得到,對(duì)裁剪后的數(shù)據(jù)小文件重新命名,使它能夠反映在原始文件中所處的像素位置與金字塔級(jí)別。
圖1 瓦片服務(wù)系統(tǒng)模型
GoogleMaps、Google Earth以數(shù)字地圖與高分辨率衛(wèi)星圖像兩種數(shù)據(jù)源提供地圖服務(wù)。Google分層組織地圖數(shù)據(jù),分層存放結(jié)構(gòu),簡化了系統(tǒng)模型及處理過程[4]。GoogleMaps中,衛(wèi)星影像的 tile采用256×256像素大小的 jpg圖片來表達(dá)地面內(nèi)容,tile的命名規(guī)則是采用“qrst”4個(gè)字符排列而成的字符串來表達(dá)當(dāng)前級(jí)別與像素位置。這樣每一幅圖在數(shù)據(jù)請(qǐng)求時(shí)就表現(xiàn)為一個(gè) URL(如:http:∥kh0. google.com/kh?n=404&v=8&t=trtqtt,其中參數(shù)t=trtqtt代表了請(qǐng)求的級(jí)數(shù)與位置)。根據(jù) zoom in (放大)級(jí)別的不同,tile進(jìn)行適當(dāng)?shù)牧鸦?每塊的編碼規(guī)則為:左上“t=tq”,右上“t=tr”,右下“t=ts”,左下“t=tt”。依此類推,每放大一倍,每一小塊都裂分為四,從左上到右下順時(shí)針按 qrst編號(hào),裂分后的編碼為裂分前的編號(hào)上小塊的編號(hào)。本研究所實(shí)現(xiàn)的瓦片數(shù)據(jù)服務(wù)所需的數(shù)據(jù)通過 GDAL進(jìn)行生產(chǎn)(用 GDAL進(jìn)行柵格數(shù)據(jù)讀寫),不同的是,作為基礎(chǔ)性的數(shù)據(jù)服務(wù),所提供的數(shù)據(jù)格式不僅僅局限于用于顯示的 jpg或者 png格式。在當(dāng)前應(yīng)用需求下,通過擴(kuò)展,增加了對(duì)DEM數(shù)據(jù)的支持。這樣,瓦片服務(wù)將更加靈活,tile的大小不局限于 256×256,如本應(yīng)用需求中所需的DEM數(shù)據(jù)瓦片就是 150× 150大小。數(shù)據(jù)調(diào)用方通過元數(shù)據(jù)服務(wù)了解 DEM瓦片數(shù)據(jù)的存儲(chǔ)格式,就可以以URL方式進(jìn)行調(diào)度并使用。
2.數(shù)據(jù)組織方式與數(shù)據(jù)索引
由于空間數(shù)據(jù)具有數(shù)據(jù)量大、數(shù)據(jù)類型多樣、表達(dá)形式復(fù)雜的特點(diǎn),各種空間操作計(jì)算量大,因此空間索引的有無及其性能的發(fā)揮直接影響到空間數(shù)據(jù)引擎和地理信息服務(wù)網(wǎng)格的整體性能[5]。類似于 GoogleMaps,本系統(tǒng)瓦片數(shù)據(jù)采用分級(jí)組織方式,既可以采用文件系統(tǒng)方式組織數(shù)據(jù),也可以分級(jí)存儲(chǔ)于數(shù)據(jù)庫中。
在文件系統(tǒng)模式下,同一級(jí)別數(shù)據(jù)存儲(chǔ)在同一目錄下。各級(jí)數(shù)據(jù)配置用標(biāo)準(zhǔn) XML格式文件作為當(dāng)前目錄的索引,具體格式參見圖 2。
圖2 文件組織方式
在數(shù)據(jù)庫存儲(chǔ)模式下,數(shù)據(jù)組織采用與文件存儲(chǔ)類似的方案,不同的是,同級(jí)別數(shù)據(jù)以大對(duì)象格式存儲(chǔ)于有固定標(biāo)識(shí)的一批數(shù)據(jù)表中,即一個(gè)數(shù)據(jù)表相當(dāng)于一個(gè)文件目錄。元數(shù)據(jù)也存儲(chǔ)于相關(guān)的數(shù)據(jù)庫表中。
采用這種方式組織數(shù)據(jù)的優(yōu)勢(shì)為:系統(tǒng)初始化時(shí),首先將索引信息與元數(shù)據(jù)信息加載到內(nèi)存中。系統(tǒng)收到數(shù)據(jù)請(qǐng)求時(shí),在內(nèi)存中快速分級(jí)檢索,如果檢索到數(shù)據(jù),則直接定位到數(shù)據(jù)葉結(jié)點(diǎn)的文件路徑下,如果是數(shù)據(jù)庫模式則讀出該記錄。
1.基于 ISAPI的應(yīng)用程序模塊
ISAPI(internet server application program interface)是微軟提供的一套面向Web服務(wù)的API接口,它能實(shí)現(xiàn) CGI(公共網(wǎng)關(guān)接口)提供的全部功能。ISAPI應(yīng)用大多數(shù)以 DLL動(dòng)態(tài)庫的形式使用,可以在被用戶請(qǐng)求后執(zhí)行,在處理完一個(gè)用戶請(qǐng)求后不會(huì)馬上消失,而是繼續(xù)駐留在內(nèi)存中等待處理別的用戶輸入。此外,ISAPI的DLL應(yīng)用程序和Web服務(wù)器處于同一個(gè)進(jìn)程中,效率要明顯高于 CGI。
對(duì)于本系統(tǒng) ISAPI應(yīng)用程序模塊,數(shù)據(jù)庫模式數(shù)據(jù)源在系統(tǒng)初始化時(shí),會(huì)自動(dòng)建立一個(gè)可伸縮的數(shù)據(jù)庫連接池。數(shù)據(jù)庫連接池通過提供一套連接的分配、使用策略,來解決連接頻繁分配、釋放所造成的問題,最終實(shí)現(xiàn)高效的連接、安全的復(fù)用[6]。而對(duì)文件系統(tǒng)則需要對(duì)索引文件進(jìn)行加載。大量數(shù)據(jù)請(qǐng)求并發(fā)而來時(shí),可以同時(shí)從多個(gè)連接池棧中獲取數(shù)據(jù)庫連接,用于從數(shù)據(jù)庫中獲取數(shù)據(jù),或者從索引中快速定位并讀取數(shù)據(jù)。通過對(duì)系統(tǒng)相關(guān)配置,可以實(shí)時(shí)對(duì)當(dāng)前系統(tǒng)的運(yùn)行配置狀態(tài)進(jìn)行動(dòng)態(tài)調(diào)整。由于數(shù)據(jù)在服務(wù)器端,數(shù)據(jù)安全可以得到保證,而且由于只需處理用戶請(qǐng)求的區(qū)域,數(shù)據(jù)傳輸量恒定,不會(huì)隨著數(shù)據(jù)量加大而導(dǎo)致性能線性下降[7]。
2.基于OGC標(biāo)準(zhǔn)的元數(shù)據(jù)服務(wù)接口與數(shù)據(jù)服務(wù)接口
接口設(shè)計(jì)是系統(tǒng)多種地理信息服務(wù)應(yīng)用實(shí)現(xiàn)數(shù)據(jù)共享的關(guān)鍵所在。本系統(tǒng)數(shù)據(jù)服務(wù)接口基于OGC標(biāo)準(zhǔn)設(shè)計(jì),數(shù)據(jù)與服務(wù)通訊借助 URL來實(shí)現(xiàn),每個(gè)數(shù)據(jù)瓦片 tile通過一個(gè)URL來唯一定位。URL的結(jié)構(gòu)為:http:∥host[:port]/path[?{name=[value]&}][8]。本系統(tǒng)目前支持 DescribeTiles與 Get-Tile兩種操作。
DescribeTiles操作用于獲取服務(wù)元數(shù)據(jù),服務(wù)元數(shù)據(jù)描述了服務(wù)的信息內(nèi)容以及服務(wù)器可以接受的請(qǐng)求參數(shù)值。元數(shù)據(jù)的請(qǐng)求字符串為:
http:∥127.0.0.1/mapserver.dll?SERV ICE= WMS&VERS ION=*&REQUEST=DescribeTiles。
返回結(jié)果采用 xml格式文檔來描述,基本元素包括:"WMS_DescribeTilesResponse","TiledLayer","TiledStyles","TiledFor mats","TiledDimension","Value","TiledCrs","TileMatrixSet","Tile-Matrix","NonEmptyString"等節(jié)點(diǎn)。
GetTile操作用于請(qǐng)求數(shù)據(jù),服務(wù)器會(huì)對(duì)應(yīng)返回符合URL請(qǐng)求參數(shù)的各種格式的地圖數(shù)據(jù)瓦片。本系統(tǒng)目前支持兩種基本的數(shù)據(jù)格式,png/jpeg圖片與柵格數(shù)據(jù)瓦片。其中 png/jpeg圖片主要用于顯示使用,而柵格數(shù)據(jù)與DEM數(shù)據(jù)主要用于計(jì)算與三維建模?;菊?qǐng)求格式為:http:∥127.0.0.1/ mapserver.dll??SERV I CE=WMS&VERS ION=*&REQUEST=GetTile&LAYER=*&STYLE=*&CRS=*&FORMAT=*&SCALE=*&T IME=*&T ILEROW=*&T ILECOL=*。
1.系統(tǒng)測(cè)試結(jié)果與分析
在W indow XP/Server 2003環(huán)境下,通過配置IIS+SQL Server 2000集成運(yùn)行環(huán)境,進(jìn)行系統(tǒng)壓力測(cè)試。測(cè)試結(jié)果參見表 1。
表1 壓力測(cè)試結(jié)果
從表 1分析可知,在一定并發(fā)量請(qǐng)求下,通過配置符合系統(tǒng)環(huán)境的數(shù)據(jù)庫連接池,系統(tǒng)具備以較高的服務(wù)性能響應(yīng)數(shù)據(jù)服務(wù)請(qǐng)求的能力。
2.系統(tǒng)應(yīng)用
目前該系統(tǒng)已經(jīng)在實(shí)際項(xiàng)目中部署應(yīng)用,可以同時(shí)為二維與三維應(yīng)用提供各種服務(wù)。在二維應(yīng)用中,可以通過OpenLayers(JavaScript編寫)在 IE中顯示瀏覽影像數(shù)據(jù)。在三維地理信息系統(tǒng)中,對(duì)外同時(shí)提供DEM與影像瓦片數(shù)據(jù)服務(wù),響應(yīng)速度良好。其中DEM數(shù)據(jù)用于顯示地形,影像數(shù)據(jù)在對(duì)應(yīng)地理位置進(jìn)行背景顯示。
[1] 劉岳峰.地理信息服務(wù)概述[J].地理信息世界,2004, 2(6):26-29.
[2] 唐桂芬.面向地理數(shù)據(jù)服務(wù)的集成空間查詢處理技術(shù)[D].長沙:國防科學(xué)技術(shù)大學(xué),2007.
[3] 任建武,閭國年,王橋.多層體系 GIS與模型集成研究[J].測(cè)繪學(xué)報(bào),2003,32(2):178-182.
[4] 符海月,趙軍,李慢春.從 Google Maps看我國全球化地理信息服務(wù)面臨的挑戰(zhàn)和對(duì)策[J].地理與地理信息科學(xué),2006,22(2):1-3.
[5] 李科,游雄.地理信息服務(wù)網(wǎng)格關(guān)鍵技術(shù)研究[C]∥第十屆中國科協(xié)年會(huì)論文集.鄭州:[s.n.],2008.
[6] 王繼周,李成名,付俊娥.面向分布式異構(gòu)數(shù)據(jù)庫的WebGIS連接池服務(wù)研究[J].地理與地理信息科學(xué), 2003,19(3):18-21.
[7] 劉志勇,許曉宏,邵彥蕊.網(wǎng)絡(luò)地圖發(fā)布技術(shù)研究[J].測(cè)繪與空間地理信息,2007,30(2):112-115.
[8] Open Geospatial Consortium Inc.OpenGIS Tiled WMS Discussion Paper[EB/OL].(2010-01-02)[2010-01-15].http:∥www.opengeospatial.org.
Study on Tile Service for Raster Data Based on ISAPI
KANG Xiaochen,ZHANG Yanling,YAN Haowen
0494-0911(2010)07-0012-03
P208
B
2010-01-19
多尺度地理空間相似關(guān)系計(jì)算模型及其在地圖自動(dòng)綜合中的應(yīng)用研究(40871208)
亢曉琛(1983—),男,山西襄汾人,碩士生,主要從事網(wǎng)絡(luò)地理信息系統(tǒng)研究。