陳 軍, 王廣杰, 呂朝陽
(1. 成都信息工程大學(xué) 資源環(huán)境學(xué)院, 四川 成都 610225;2. 四川師范大學(xué) 西南土地資源評價(jià)與監(jiān)測重點(diǎn)實(shí)驗(yàn)室, 四川 成都 610066)
近年來,網(wǎng)絡(luò)地圖作為新的地圖網(wǎng)絡(luò)表達(dá)逐漸走進(jìn)人們的視線,它通過分層緩存靜態(tài)瓦片地圖,隨客戶顯示窗口大小提供顯示范圍適當(dāng)分辨率的瓦片數(shù)據(jù),從而為用戶提供流暢、便捷、數(shù)據(jù)豐富的地圖資源[1].然而,隨著在線地圖應(yīng)用的不斷普及,用戶已經(jīng)不滿足通過瀏覽器進(jìn)行在線瓦片地圖的簡單訪問[2].在許多專業(yè)領(lǐng)域,迫切需要利用瓦片地圖顯示流暢、數(shù)據(jù)資源豐富等優(yōu)點(diǎn),將其直接集成到現(xiàn)有的GIS桌面應(yīng)用程序上,實(shí)現(xiàn)瓦片地圖與GIS數(shù)據(jù)的無縫疊加和整合分析.
在國外,美國環(huán)境系統(tǒng)研究所公司及很多開源社區(qū)都有類似的項(xiàng)目.開源社區(qū)Codeplex的BruTile基于C#的開源庫訪問各種瓦片服務(wù),如TMS、ArcGIS Tile Server、OpenStreetMap和Bing;GMap.NET作為一款功能強(qiáng)大、免費(fèi)的NET控件,也支持在C/S模式下訪問Google、雅虎、必應(yīng)、OpenStreetMap等地圖服務(wù)[3].在國內(nèi),巫細(xì)波等[4]采用C#設(shè)計(jì)了一個(gè)基于Google Maps的應(yīng)用程序,通過這個(gè)程序可以獲取免費(fèi)的地圖或者衛(wèi)星影像數(shù)據(jù);韋勝[5]闡述了在Arc Engine環(huán)境下實(shí)現(xiàn)瓦片地圖的訪問與拼接方法,并基于開源項(xiàng)目ArcBruTile將瓦片地圖集成到ArcEngine,拓展了瓦片地圖應(yīng)用范圍;張業(yè)舟等[6]闡述了GoogleMaps瓦片組織,分析了Google地圖的原理,并對Google瓦片進(jìn)行了應(yīng)用;戴侃等[7]通過對異構(gòu)GIS平臺瓦片地圖數(shù)據(jù)和瓦片數(shù)據(jù)國際標(biāo)準(zhǔn)的研究,提出了適用于不同平臺的瓦片數(shù)據(jù)轉(zhuǎn)換共享方法.
從技術(shù)實(shí)現(xiàn)上來看,這些研究和項(xiàng)目都提供了訪問瓦片數(shù)據(jù)、數(shù)據(jù)緩存及瓦片拼接的解決方法.由于未考慮在線地圖投影顯示問題,要求客戶端其他空間數(shù)據(jù)只能投影到在線地圖上顯示,而客戶端系統(tǒng)往往需要定義不同的顯示坐標(biāo)系統(tǒng).為解決該問題,韋勝[8]申請了《一種動態(tài)地圖投影下的網(wǎng)絡(luò)地圖配準(zhǔn)及繪制方法》的專利,該專利采用多個(gè)“特征點(diǎn)”獲取到的瓦片地圖誤差偏移值對每個(gè)瓦片的地理范圍值進(jìn)行誤差校正.“特征點(diǎn)”不僅獲取算法復(fù)雜,而且僅用少量“特征點(diǎn)”投影轉(zhuǎn)換,容易導(dǎo)致較大誤差[9].為此,本文提出一種客戶端在線地圖點(diǎn)對點(diǎn)的實(shí)時(shí)動態(tài)投影方法,在保證一定的投影精度的同時(shí),能提高動態(tài)投影的實(shí)時(shí)性.
在線地圖是一種基于金字塔模型的靜態(tài)瓦片地圖,將全球按不同層次劃分為大小相同的數(shù)據(jù)分片,以瓦片文件形式存儲在服務(wù)器上.每一個(gè)分片代表地球表面上特定區(qū)域,并按一定的主題來表現(xiàn)區(qū)域的地理信息.隨著層級的增加,數(shù)據(jù)分片代表的地面區(qū)域越小,對地理信息的表征越為詳盡.用戶在瀏覽地圖時(shí),根據(jù)當(dāng)前比例尺,自動計(jì)算出最佳顯示層級,并從服務(wù)器上下載分片數(shù)據(jù).由于用戶只能在一定大小的屏幕上瀏覽在線地圖,并且使用了數(shù)據(jù)緩存技術(shù),從而實(shí)現(xiàn)在線地圖的低帶寬、快速展示[10-12].
設(shè)地圖上某點(diǎn)的坐標(biāo)為(x,y),將其轉(zhuǎn)換為該點(diǎn)的經(jīng)緯度(lon,lat),利用(1)式可求取在顯示層次為L時(shí)該點(diǎn)的像素坐標(biāo)(Px,Py)為
(1)
根據(jù)像素坐標(biāo)(Px,Py),利用(2)式可求取該點(diǎn)在給定層次L的瓦片行列位置(Tx,Ty):
(2)
其中Int為取整函數(shù).
在線地圖以瓦片組合的方法完成顯示區(qū)域內(nèi)地圖的顯示[13-15].如果客戶端顯示坐標(biāo)系統(tǒng)采用在線地圖的存儲坐標(biāo)系統(tǒng),瓦片在客戶端顯示時(shí)仍保持為矩形,此時(shí),將客戶端左上角(x1,y1)和右下角(x2,y2)地圖坐標(biāo)依據(jù)(1)和(2)式分別求得瓦片行列位置(Tx1,Ty1)和(Tx2,Ty2),則待顯示的瓦片序列為
Ts={(Tx,Ty)|x1≤x≤x2,y1≤y≤y2}.
(3)
由于不考慮投影轉(zhuǎn)換,將瓦片序列的所有瓦片按空間位置直接在客戶端顯示設(shè)備對應(yīng)矩形區(qū)域繪制,就能實(shí)現(xiàn)在線地圖的無縫顯示.
GIS空間數(shù)據(jù)顯示有2個(gè)重要的坐標(biāo)系統(tǒng),即圖層坐標(biāo)系統(tǒng)和顯示坐標(biāo)系統(tǒng).圖層坐標(biāo)系統(tǒng)是指空間數(shù)據(jù)層在存儲時(shí)所采用的坐標(biāo)系統(tǒng),如在線地圖一般采用Web Mercator坐標(biāo)系統(tǒng)存儲瓦片數(shù)據(jù).地圖以圖層方式組織,一幅地圖一般包含多個(gè)圖層,但不同的圖層可能具有不同的圖層坐標(biāo)系統(tǒng).為使同一個(gè)區(qū)域不同坐標(biāo)系的圖層能在地圖上正確疊放,必須采用統(tǒng)一的地圖坐標(biāo)系統(tǒng),即顯示坐標(biāo)系統(tǒng).當(dāng)圖層的坐標(biāo)系統(tǒng)和地圖的顯示坐標(biāo)系統(tǒng)不一致時(shí),需要在顯示時(shí)實(shí)時(shí)轉(zhuǎn)換圖層的坐標(biāo)系,這個(gè)過程為GIS的動態(tài)投影顯示過程.
當(dāng)在線地圖坐標(biāo)系統(tǒng)和地圖顯示坐標(biāo)系統(tǒng)不一致時(shí),需要對在線地圖進(jìn)行動態(tài)投影轉(zhuǎn)換.在線地圖動態(tài)投影轉(zhuǎn)換分為2步,首先獲取動態(tài)投影的瓦片序列,然后對瓦片序列各瓦片投影轉(zhuǎn)換顯示.
2.1在線地圖動態(tài)投影的瓦片序列獲取在無投影轉(zhuǎn)換條件下,直接依據(jù)顯示范圍左上角和右下角坐標(biāo)按照(3)式求取瓦片序列.在投影轉(zhuǎn)換過程中,由于源坐標(biāo)系統(tǒng)與目標(biāo)坐標(biāo)系統(tǒng)一般不是線性關(guān)系,左上角和右下角坐標(biāo)轉(zhuǎn)換后得到的矩形范圍可能小于目標(biāo)矩形范圍.為相對精確地獲取轉(zhuǎn)換后的目標(biāo)矩形,在源矩形4個(gè)邊上按一定間隔重樣,獲取一定數(shù)量的采樣點(diǎn),將所有采樣點(diǎn)轉(zhuǎn)換為在線地圖坐標(biāo)系統(tǒng),獲取轉(zhuǎn)換后采樣點(diǎn)的外接矩形,該外接矩形作為請求瓦片地圖范圍,如圖1.
圖 1 地圖范圍的投影轉(zhuǎn)換
2.2點(diǎn)對點(diǎn)的在線地圖動態(tài)投影方法在線地圖的每一個(gè)瓦片在自身坐標(biāo)系統(tǒng)中代表地面的一個(gè)矩形范圍.從圖1可見,在投影轉(zhuǎn)換過程中,在線地圖坐標(biāo)系統(tǒng)的瓦片在客戶端坐標(biāo)系統(tǒng)中不再保持矩形邊緣,簡單的瓦片矩形拼接不能得到正確的地圖.有效的解決辦法是,將各瓦片分別投影轉(zhuǎn)換,先繪制到臨時(shí)的瓦片內(nèi)存位圖上,再映射到客戶系統(tǒng)的顯示設(shè)備上.
1) 瓦片內(nèi)存位圖的創(chuàng)建.瓦片內(nèi)存位圖采用客戶坐標(biāo)度量,單位為像素,瓦片內(nèi)存位圖的大小與客戶顯示設(shè)備的分辨率密切相關(guān).為避免數(shù)據(jù)顯示變形,要求客戶坐標(biāo)與地圖坐標(biāo)在水平和垂直方向均呈線性關(guān)系.客戶坐標(biāo)和地圖坐標(biāo)轉(zhuǎn)換公式為
X=ax*X′+bx,
(4)
Y=ay*Y′+by,
(5)
其中,X、Y為地圖上某點(diǎn)的坐標(biāo),X′、Y′為客戶像素坐標(biāo),ax、ay為轉(zhuǎn)換系數(shù),bx、by為偏移常數(shù).
利用(4)和(5)式,將瓦片投影到顯示坐標(biāo)系統(tǒng)下的矩形范圍轉(zhuǎn)換為客戶區(qū)坐標(biāo)范圍,得到瓦片顯示區(qū)域的水平和垂直方向的像素?cái)?shù),據(jù)此創(chuàng)建同樣大小的內(nèi)存位圖用于存放投影后的瓦片地圖.瓦片地圖先繪制在內(nèi)存位圖上,然后再顯示到屏幕上,從而實(shí)現(xiàn)在線地圖的動態(tài)投影顯示.
2) 瓦片的點(diǎn)對點(diǎn)動態(tài)投影轉(zhuǎn)換.將內(nèi)存位圖每一個(gè)像元作為一個(gè)“特征點(diǎn)”,將像元中心的客戶坐標(biāo)轉(zhuǎn)換為地圖坐標(biāo),再根據(jù)投影變換關(guān)系轉(zhuǎn)換為在線地圖坐標(biāo);最后,根據(jù)在線地圖坐標(biāo)求取瓦片的像元位置,將其像素值賦給源內(nèi)存位圖的像元.逐像元對內(nèi)存位圖所有像元求取像素值后,瓦片就實(shí)現(xiàn)了投影轉(zhuǎn)換.點(diǎn)對點(diǎn)投影轉(zhuǎn)換如圖2.
圖 2 點(diǎn)對點(diǎn)投影轉(zhuǎn)換
3.1在線地圖實(shí)時(shí)動態(tài)投影基本思路為獲取高精度的投影地圖,點(diǎn)對點(diǎn)動態(tài)投影要求內(nèi)存位圖所有像元均作為“特征點(diǎn)”,通過投影變換從瓦片對應(yīng)位置上獲取像素值;但投影轉(zhuǎn)換算法復(fù)雜度高,大量“特征點(diǎn)”的批量轉(zhuǎn)換,會導(dǎo)致性能降低,并影響在線地圖顯示的實(shí)時(shí)性.本文嘗試使用簡單的規(guī)則減少“特征點(diǎn)”,即對內(nèi)存位圖的行和列均按一定間隔采樣,將采樣后的“特征點(diǎn)”投影轉(zhuǎn)換后,對坐標(biāo)進(jìn)行雙線性內(nèi)插,獲取內(nèi)存位圖所有像元的坐標(biāo).
設(shè)待計(jì)算內(nèi)存像元坐標(biāo)為(x,y),其相鄰4個(gè)“特征點(diǎn)”坐標(biāo)為(j,i)、(j+1,i)、(j+1,i)和(j+1,i+1).以求取該像元投影坐標(biāo)X為例,設(shè)投影坐標(biāo)的X分量分別為X(j,i)、X(j+1,i)、X(j+1,i)和X(j+1,i+1).首先利用(6)式在X方向線性內(nèi)插:
(6)
然后利用(7)式在Y方向再做一次線性插值,得到最終的X坐標(biāo):
X=(Xb-Xt)×(y-i)+Xt,
(7)
對于像元投影坐標(biāo)Y,替換(6)和(7)式投影坐標(biāo)分量Y,得到最終的Y坐標(biāo).
3.2實(shí)時(shí)動態(tài)投影最佳間隔的確定為定量研究采樣間隔對投影精度和效率的影響,選擇相對Web Mercator投影變形較大的多個(gè)坐標(biāo)系統(tǒng),在同一個(gè)區(qū)域?qū)ο噜彽?5塊瓦片反復(fù)進(jìn)行投影拼接實(shí)驗(yàn).以間隔1像元采樣(即所有像元均投影轉(zhuǎn)換)的投影坐標(biāo)序列為參照,采用STD(均方差)、SUMP(像元總誤差)、MAXP(最大像元誤差)和TIME(處理時(shí)間)4個(gè)指標(biāo)評價(jià)不同采樣間隔的精度和效率.STD為內(nèi)存位圖同位置上采樣內(nèi)插的投影坐標(biāo)與參照坐標(biāo)的距離均方差,SUMP和MAXP分別表示由于坐標(biāo)值差異導(dǎo)致推算的瓦片像元的距離誤差和與最大距離誤差,TIME表示25個(gè)瓦片動態(tài)投影總時(shí)間.前2個(gè)指標(biāo)均以單個(gè)瓦片為統(tǒng)計(jì)對象,即各瓦片的指標(biāo)平均值.實(shí)驗(yàn)結(jié)果如表1所示.
表 1 不同采樣間隔的動態(tài)投影精度和效率對比
從表1可見,隨著采樣間隔增大,動態(tài)投影總時(shí)間不斷減少,投影誤差不斷增大.從變化趨勢上看,當(dāng)采樣間隔增大時(shí),動態(tài)投影效率提升幅度不斷下降,投影誤差則以近似指數(shù)曲線方式快速上升;因此,僅通過少量“特征點(diǎn)”進(jìn)行在線地圖動態(tài)投影,不可避免產(chǎn)生較大誤差.當(dāng)采樣間隔為2時(shí),處理時(shí)間減少到可以實(shí)時(shí)處理的程度,并且誤差相對較小.在單個(gè)瓦片上,投影總誤差在4個(gè)像元左右,最大像元誤差為1個(gè)像元,相對于256×256的瓦片總像元個(gè)數(shù)而言,投影誤差肉眼很難察覺:因此,本文將采樣間隔為2作為實(shí)時(shí)動態(tài)投影的采樣間隔.
3.3瓦片數(shù)據(jù)的無縫拼接由于坐標(biāo)系統(tǒng)之間并非簡單的線性關(guān)系,瓦片數(shù)據(jù)在瓦片地圖坐標(biāo)系統(tǒng)中為矩形,投影后不一定保持矩形,導(dǎo)致經(jīng)過點(diǎn)對點(diǎn)投影轉(zhuǎn)換后,有部分像元推算出來的瓦片行列位置在瓦片數(shù)據(jù)之外.將這些像元設(shè)置為透明,以實(shí)現(xiàn)相鄰?fù)咂瑔卧貓D能無縫拼接.圖3展示了無縫拼接過程,左圖為瓦片數(shù)據(jù)拼接的中間截圖,由于顯示坐標(biāo)系統(tǒng)和在線地圖坐標(biāo)系統(tǒng)并非線性關(guān)系,拼接邊緣并非矩形;右圖為拼接完成的顯示效果圖,瓦片之間無拼接縫隙,相鄰?fù)咂^渡自然,證明了本文方法的有效性.
圖 3 瓦片數(shù)據(jù)的無縫投影拼接
為解決在線地圖在GIS客戶端實(shí)時(shí)投影顯示問題,提出了一種點(diǎn)對點(diǎn)的客戶端在線地圖動態(tài)投影方法.首先,將顯示范圍投影轉(zhuǎn)換到在線地圖坐標(biāo)范圍內(nèi),計(jì)算顯示的瓦片序列.對于待顯示的每一個(gè)瓦片,先計(jì)算內(nèi)存位圖大小,并每隔2個(gè)像素采集顯示坐標(biāo)點(diǎn),并轉(zhuǎn)換到在線地圖坐標(biāo)系統(tǒng),求取像素值.然后,利用雙線性內(nèi)插方法完成瓦片內(nèi)存位圖所有像素值的求取并繪制到屏幕上.實(shí)驗(yàn)證明,本文算法計(jì)算精度和效率相對較高,能保證相鄰?fù)咂g無縫拼接,滿足了在線地圖實(shí)時(shí)動態(tài)投影展示;同時(shí),也驗(yàn)證了“少量特征點(diǎn)”存在較大的投影誤差,影響動態(tài)投影精度.本文的研究思路和成果具有一定的理論意義和實(shí)踐價(jià)值.
[1] 姚真凱. 瓦片地圖技術(shù)在水利WebGIS系統(tǒng)中的開發(fā)研究與應(yīng)用[J]. 浙江水利科技,2009(6):40-42.
[2] 黃夢龍. 瓦片地圖技術(shù)在桌面端GIS中的應(yīng)用[J]. 地理空間信息,2011,9(4):149-151.
[3] REGUERAS L M, CASTRO J P D. A neural network based intelligent system for tile prefetching in web map services[J]. Expert Systems with Applications,2013,40(10):4096-4105.
[4] 巫細(xì)波,胡偉平. Google Maps運(yùn)行機(jī)制以及應(yīng)用研究[J]. 華南師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2009,34(2):107-108.
[5] 韋勝. ArcEngine環(huán)境下實(shí)現(xiàn)瓦片地圖的訪問與拼接[J]. 華南師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2012,37(6):737-740.
[6] 張業(yè)舟,黃興. Google Maps瓦片組織分析和應(yīng)用研究[J]. 測繪時(shí)空,2012(2):22-25.
[7] 戴侃,李衛(wèi)紅,初潤潤. 異構(gòu)GIS瓦片地圖轉(zhuǎn)換共享模式研究[J]. 地理空間信息,2014(2):33-39.
[8] 韋勝. 一種動態(tài)地圖投影下的網(wǎng)絡(luò)地圖配準(zhǔn)及繪制方法:CN 103065544A[P]. 2013-4-24.
[9] 韋勝. ArcEngine環(huán)境下實(shí)現(xiàn)瓦片地圖的訪問與拼接[J]. 武漢大學(xué)學(xué)報(bào)(信息科學(xué)版),2012,37(6):737-740.
[10] 宮凈敏,黃鈺,李成名. 基于NewMap在線專題地圖制作[J]. 地理信息世界,2016,23(3):9-12.
[11] 蘇旭明,譚建成. WebGIS中瓦片地圖關(guān)鍵技術(shù)研究[J]. 北京測繪,2012(2):9-12.
[12] 羅智勇,黎小東. 基于數(shù)據(jù)庫存儲方案的高性能瓦片地圖服務(wù)研究[J]. 地理與地理信息科學(xué),2013,29(3):48-52.
[13] 劉冰,謝軻,陳小樂,等. 基于GIS的瓦片式地圖切圖算法的設(shè)計(jì)與實(shí)現(xiàn)[J]. 科技信息,2011(7):66-67.
[14] 郭明武,彭清山,李黎. ArcGIS Server中地圖瓦片實(shí)時(shí)在線局部更新方法研究[J]. 測繪通報(bào),2012(2):35-38.
[15] 趙麗娟. 瓦片地圖在遙感影像專題圖中的應(yīng)用研究[J]. 測繪,2014,37(1):17-19.