李向陽(yáng),盧 遙
(1.河南省基礎(chǔ)地理信息中心,河南鄭州 450003;2.國(guó)家測(cè)繪產(chǎn)品質(zhì)量檢驗(yàn)測(cè)試中心,北京 100830)
衛(wèi)星影像數(shù)據(jù)是一種以柵格形式存在的數(shù)據(jù),其最明顯的特點(diǎn)是數(shù)據(jù)量大,往往比計(jì)算機(jī)硬件可以顯示的數(shù)據(jù)量大一個(gè)或多個(gè)數(shù)量級(jí)[1]。因此在設(shè)計(jì)衛(wèi)星影像數(shù)據(jù)庫(kù)時(shí),需要將其存放在操作系統(tǒng)文件中,并在數(shù)據(jù)庫(kù)中定義其外部文件的指針[2-4];同時(shí)采用影像數(shù)據(jù)分塊的方法,將大影像數(shù)據(jù)切分為多個(gè)小影像——瓦片,并在數(shù)據(jù)庫(kù)中建立分塊索引表,以提高數(shù)據(jù)的查詢(xún)和提取速度[5-7];此外,為進(jìn)一步提高影像的實(shí)時(shí)縮放與顯示速度,快速獲取不同分辨率的影像信息,可根據(jù)不同顯示要求調(diào)用不同分辨率的原始影像[8,9]。因此,針對(duì)海量遙感影像空間數(shù)據(jù),如何采用高效的空間索引技術(shù),快速提取最適宜的影像范圍和顯示分辨率的影像數(shù)據(jù)塊,達(dá)到既不影響用戶(hù)視覺(jué)效果又減少實(shí)際調(diào)入內(nèi)存數(shù)據(jù)量的目的,從而滿(mǎn)足用戶(hù)需要顯示范圍的實(shí)際需求,是亟待解決的技術(shù)難點(diǎn)。
本文對(duì)柵格地圖切分技術(shù)的規(guī)則、參數(shù)選擇及相關(guān)算法進(jìn)行了深入的研究,提出利用地圖切片技術(shù)對(duì)地圖投影轉(zhuǎn)換、屏幕坐標(biāo)與大地坐標(biāo)轉(zhuǎn)化的解決方案,并對(duì)地圖切分參數(shù)的選擇原則、地圖切分算法、地圖切分規(guī)則等方面進(jìn)行了研究。在柵格地圖切分技術(shù)基礎(chǔ)上,采用Google Maps API設(shè)計(jì)出基于Microsoft Visual Studio 2008平臺(tái)的柵格地圖的切分程序,實(shí)現(xiàn)了基于Google Maps的遙感影像數(shù)據(jù)的整合與地圖縮放快速瀏覽功能。
瓦片是指將固定范圍內(nèi)的某一比例尺地圖按照指定的尺寸(通常為128×128或256×256像素)切分成若干行與列的正方形柵格圖片。切圖后得到的正方形柵格圖片,被形象地稱(chēng)為“瓦片”。瓦片技術(shù)也叫切片技術(shù),是指將某一比例尺的地圖提前分成若干個(gè)小單元??蛻?hù)端訪(fǎng)問(wèn)時(shí),可直接獲取所需的小單元然后拼接成地圖,服務(wù)器無(wú)需動(dòng)態(tài)創(chuàng)建一幅大的圖形送到客戶(hù)端,這極大地提高了反映速度。
由于空間數(shù)據(jù)庫(kù)是服務(wù)器、中間件、客戶(hù)端3級(jí)分層架構(gòu),因此數(shù)據(jù)的請(qǐng)求與發(fā)送都需要以網(wǎng)絡(luò)數(shù)據(jù)包通訊的方式傳送。通過(guò)瓦片技術(shù)將地圖分割成9×5方塊,客戶(hù)端發(fā)送數(shù)據(jù)請(qǐng)求時(shí),通過(guò)空間分析算法可計(jì)算出客戶(hù)端請(qǐng)求視圖的覆蓋范圍,這樣只需將20個(gè)瓦片切塊的封裝網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送至客戶(hù)端,減小了網(wǎng)絡(luò)數(shù)據(jù)包的大小。而客戶(hù)端每收到一個(gè)瓦片數(shù)據(jù)包即可顯示瓦片覆蓋區(qū)域的數(shù)據(jù),無(wú)需等待所有瓦片傳輸完即可顯示地圖,從而大大提高了用戶(hù)體驗(yàn)。
地圖預(yù)切分就是在柵格地圖發(fā)布之前將整幅圖像劃分成離散的比例,即事先對(duì)服務(wù)器端部分要素(集)按照影像金字塔模型進(jìn)行小尺寸的切片分級(jí)和緩存,每種比例的地圖根據(jù)切分規(guī)則分成若干個(gè)大小相等且互不重疊的塊,稱(chēng)為地圖的切片或瓦片(Tile)??蛻?hù)端可直接利用分級(jí)的靜態(tài)的圖切片組來(lái)代替地圖的動(dòng)態(tài)生成。分塊的大小由用戶(hù)決定,可以是2的任意整數(shù)冪,而且大小要適中,行列尺寸一般采用128×128或256×256。分塊時(shí),需要確定單個(gè)塊的數(shù)據(jù)量與塊的總個(gè)數(shù)之間的平衡關(guān)系,即要兼顧圖像局部的相關(guān)程度、網(wǎng)絡(luò)傳輸情況等。然后對(duì)切片按一定的規(guī)則進(jìn)行命名和存儲(chǔ),并建立切片名稱(chēng)與地圖坐標(biāo)的映射關(guān)系。
為保證一組柵格數(shù)據(jù)能夠相互疊合發(fā)布,必須選用統(tǒng)一的切圖參數(shù)對(duì)地圖進(jìn)行切分,切圖參數(shù)的設(shè)定應(yīng)遵循以下規(guī)則:
(1)按坐標(biāo)投影對(duì)柵格地圖進(jìn)行分組,每組地圖必須定義統(tǒng)一的切圖參數(shù)。
(2)地圖范圍的選取要兼顧同組其他柵格地圖的范圍,建立統(tǒng)一的地圖切圖范圍,以便將柵格地圖切片在同一坐標(biāo)范圍內(nèi)疊加發(fā)布。
(3)同組地圖縮放級(jí)數(shù)與各級(jí)比例尺要統(tǒng)一定義。
(4)地圖切片大小一般應(yīng)選用256×256像素,如果地圖切片粒度過(guò)小,會(huì)增加系統(tǒng)的管理難度;反之,如果粒度太大,會(huì)造成網(wǎng)絡(luò)傳輸速度過(guò)慢,達(dá)不到地圖切分和緩存的目的。
地圖切分不僅使服務(wù)器端將圖像能夠分塊傳輸,而且還可使客戶(hù)器端進(jìn)行無(wú)縫合成。因此,在地圖切分之前必須預(yù)先定義一組標(biāo)準(zhǔn)的地圖切分參數(shù)(簡(jiǎn)稱(chēng)切圖參數(shù)),使得切圖參數(shù)既能保證地圖切分過(guò)程的一致性,也能保證地圖切分后的地圖切片信息描述的完整性。切圖參數(shù)是柵格數(shù)據(jù)發(fā)布中坐標(biāo)映射、地圖顯示、地圖服務(wù)的核心參數(shù),包括柵格地圖范圍、地圖縮放級(jí)數(shù)、比例尺或分辨率、地圖切片大小、圖片格式、坐標(biāo)系統(tǒng)共6項(xiàng)參數(shù)。
切圖參數(shù)確定了屏幕坐標(biāo)與大地坐標(biāo)之間的對(duì)應(yīng)關(guān)系(見(jiàn)圖1),從而可以計(jì)算屏幕參數(shù)與地圖切片之間的對(duì)應(yīng)關(guān)系。
圖1 屏幕坐標(biāo)與大地坐標(biāo)對(duì)應(yīng)關(guān)系
1.5.1 切圖參數(shù)表示
在實(shí)施切圖之前,確定以下切圖參數(shù)。
切圖原點(diǎn):通常選取圖像的左上角大地坐標(biāo),記為(geoOrgX,geoOrgY),與之相對(duì)應(yīng)的屏幕坐標(biāo)原點(diǎn)以(winOrgX,winOrgY)表示;
縮放級(jí)別數(shù)目:以n表示,起始為0;
各級(jí)別的比例尺及分辨率,第n級(jí)比例尺以ZoomLevel[n]表示,分辨率以 Resolutions[n]表示;
地圖切圖范圍:以 minX,minY,maxX,maxY表示;地圖切片的大?。和ǔ?56×256像素,以TileSize表示;地圖切片對(duì)應(yīng)的大地坐標(biāo)長(zhǎng)度:在第n級(jí)比例下,地圖切片的大地長(zhǎng)度表示為geoTileSize[n];
地圖切片命名:在第n級(jí)比例下,第row行第col列的地圖切片命名為:Tile[row,col,n];行列(row,col)的起始下標(biāo)為 0。
1.5.2 地圖切片的大地坐標(biāo)長(zhǎng)度計(jì)算
在第n級(jí)比例下,地圖切片的大地坐標(biāo)長(zhǎng)度為:
1.5.3 地圖切片的坐標(biāo)計(jì)算
在第n級(jí)比例下,地圖切片Tile(row,col,n)的左上角坐標(biāo)(geoTileLeft,geoTileTop)和右下角坐標(biāo)(geoTileRight,geoTileBottom)分別為:
1.5.4 屏幕像素坐標(biāo)與大地坐標(biāo)換算
已知屏幕像素坐標(biāo)為(pixelX,pixelY),則與之相對(duì)應(yīng)的大地坐標(biāo)(geoX,geoY)為:
反之,已知大地坐標(biāo)為(geoX,geoY),則與之相對(duì)應(yīng)的屏幕坐標(biāo)(pixelX,pixelY)為:
在上述所述理論、方法和算法的基礎(chǔ)上,本文通過(guò)實(shí)例對(duì)“松花江小河?xùn)|至大崗段”的影像數(shù)據(jù)進(jìn)行了切分和發(fā)布。
地圖切分過(guò)程主要分為地圖坐標(biāo)參數(shù)配準(zhǔn)和轉(zhuǎn)換、地圖重采樣分級(jí)、地圖切片生成共3個(gè)步驟。
2.1.1 坐標(biāo)系統(tǒng)配準(zhǔn)和轉(zhuǎn)換
為使不同的地圖數(shù)據(jù)得以集成和發(fā)布,在地圖預(yù)先生成前應(yīng)將地圖的地理坐標(biāo)系和投影方式進(jìn)行統(tǒng)一,轉(zhuǎn)換到地圖發(fā)布所用的地理坐標(biāo)系統(tǒng)。通常使用GIS工具對(duì)柵格圖像進(jìn)行坐標(biāo)配準(zhǔn)和坐標(biāo)轉(zhuǎn)換,并獲取地圖范圍參數(shù)和坐標(biāo)系統(tǒng)參數(shù)。
2.1.2 地圖重采樣分級(jí)
按照切圖分級(jí)的比例尺或分辨率,對(duì)柵格地圖進(jìn)行重采樣,生成一組離散的比例地圖。
2.1.3 地圖切片生成
根據(jù)Tile(row,col,n)的坐標(biāo)范圍,在整幅地圖中剪裁輸出該范圍的圖片。切圖程序可以使用柵格圖像的屏幕像素坐標(biāo)進(jìn)行切分,從圖像的左上角開(kāi)始,依次按行列直接剪切Tile Size大小的圖片,這種方法常用于基于圖像處理軟件的切圖程序。也可以使用柵格圖像的大地坐標(biāo)對(duì)圖像進(jìn)行切分,同樣從左上角開(kāi)始,依次按行列計(jì)算地圖切片的大地坐標(biāo)范圍,并剪切出該范圍的地圖切片。分別對(duì)各級(jí)比例的地圖進(jìn)行切圖,從而生成金字塔結(jié)構(gòu)的地圖切片。
根據(jù)上述切圖步驟,基于Microsoft Visual Studio 2008平臺(tái),使用獨(dú)自開(kāi)發(fā)的程序?qū)Α八苫ń『訓(xùn)|至大崗段”影像數(shù)據(jù)進(jìn)行了切分,切分結(jié)果如圖2~5所示。
Google Maps API是Google公司提供的用以調(diào)用Google Maps服務(wù)的接口。網(wǎng)絡(luò)前端的開(kāi)發(fā)人員通過(guò)調(diào)用這些API,可以將Google Maps方便地嵌入自己的網(wǎng)頁(yè),并據(jù)此進(jìn)行快速的二次開(kāi)發(fā),從而為自己的網(wǎng)站創(chuàng)建功能強(qiáng)大的地圖應(yīng)用程序。Google Maps API的功能分為2部分:一是地圖的顯示功能,如GMap2,GPoint,GIcon,GLatLng 等;另一部分為 API的擴(kuò)展功能,比如想開(kāi)發(fā)自己的控件、標(biāo)注和地圖類(lèi)型等,可使用類(lèi)或函數(shù)包括 GControl,GMapPane,GMapType,GOverlay 等[10-13]。將切分好的“松花江小河?xùn)|至大崗段”影像數(shù)據(jù)整合到Google Maps平臺(tái)進(jìn)行發(fā)布,結(jié)果如圖6所示。
對(duì)地圖進(jìn)行放大后,結(jié)果如圖7所示。
圖2 第11級(jí)切分結(jié)果
圖3 第12級(jí)切分結(jié)果
圖4 第13級(jí)切分結(jié)果
圖5 第14級(jí)切分結(jié)果
圖6 松花江小河?xùn)|至大崗段
圖7 松花江小河?xùn)|至大崗段
本文在深入分析研究柵格數(shù)據(jù)的結(jié)構(gòu)、表示方法、編碼和壓縮的基礎(chǔ)上,針對(duì)海量柵格數(shù)據(jù)難以處理的技術(shù)難點(diǎn),提出以犧牲存儲(chǔ)空間來(lái)提高處理速度、對(duì)遙感柵格數(shù)據(jù)構(gòu)建影像金字塔的技術(shù)路線(xiàn),并對(duì)柵格地圖切分規(guī)則、切分算法和切分參數(shù)的設(shè)定進(jìn)行了深入研究,設(shè)計(jì)了柵格地圖切分的技術(shù)流程,并編程實(shí)現(xiàn)了柵格地圖的切分。最后基于Google Maps平臺(tái)成功實(shí)現(xiàn)了遙感柵格數(shù)據(jù)的發(fā)布,為海量遙感數(shù)據(jù)的應(yīng)用和發(fā)布提供了經(jīng)驗(yàn)和借鑒。
[1]李德仁,周月琴,金為銑.攝影測(cè)量與遙感概論[M].北京:測(cè)繪出版社,2001.
[2]盧小平,鄧安健,盧遙,等.基于結(jié)構(gòu)上下文分類(lèi)后小面元的后續(xù)處理方法[J].遙感信息,2009(6):47-50.
[3]李毅.山西省水利電子沙盤(pán)系統(tǒng)柵格影像處理機(jī)制的擴(kuò)展與完善[J].山西水利科技,2010(3):83-85.
[4]黃夢(mèng)龍.柵格地圖投影變換實(shí)驗(yàn)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:武漢大學(xué),2005.
[5]劉鎮(zhèn).遙感影像瓦片金字塔模型[J].科技創(chuàng)新導(dǎo)報(bào),2008(6):199-200.
[6]鄭群英,周曉光,欒柱曉.影像金字塔增量更新方法[J].地理空間信息,2009(5):38-41.
[7]盧小平,馬劍,盧遙,等.多源遙感數(shù)據(jù)融合在礦區(qū)土地覆蓋分類(lèi)中的應(yīng)用[J].河南理工大學(xué)學(xué)報(bào):自然科學(xué)版,2010(3):56-60.
[8]盧小平,田繼輝,張劍偉,等.多尺度DEM數(shù)據(jù)的組織與管理方法研究[J].測(cè)繪通報(bào),2010(6):12-15.
[9]薛水晶,盧小平,李英成,等.金字塔多級(jí)索引遙感影像數(shù)據(jù)服務(wù)的設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)繪通報(bào),2011(5):29-32.
[10]李學(xué)東.基于WEB的地學(xué)數(shù)據(jù)集成與發(fā)布技術(shù)研究[D].北京:中國(guó)地質(zhì)大學(xué),2009.
[11]劉德風(fēng).基于Ajax的數(shù)字校園柵格地圖發(fā)布與查詢(xún)優(yōu)化技術(shù)研究[D].北京:北京建筑工程學(xué)院,2010.
[12]鄧雪清.柵格型空間數(shù)據(jù)服務(wù)體系結(jié)構(gòu)與算法研究[D].鄭州:中國(guó)人民解放軍信息工程大學(xué),2003.
[13]巫細(xì)波,胡偉平.Google Maps運(yùn)行機(jī)制以及應(yīng)用研究[J].華南師范大學(xué)學(xué)報(bào):自然科學(xué)版,2009(2):106-110.