沈 鑫,肖書成,何 宏,楊振東,劉光霆
(重慶后勤工程學(xué)院,重慶 401331)
隨著社會的發(fā)展,應(yīng)對和處置突發(fā)事件是國家的一項重要工作,如搶險救災(zāi)[1-2]、處置暴力恐怖事件[3]、應(yīng)對突發(fā)的局部戰(zhàn)爭等。這項工作的關(guān)鍵是需要在較短的時間內(nèi)獲取該區(qū)域大比例尺的地圖。但當(dāng)前常見的紙質(zhì)和電子地圖精度不高[4],同時大比例尺軍用地圖[5]密級高,管理嚴(yán)格,短時間獲取也很困難,Google Earth[6]的出現(xiàn)恰好可以很好地解決這一問題。
它能夠下載、顯示高清的實(shí)物地圖,最高精度可達(dá)5年前軍用級水平,全球地貌影像的有效分辨率至少為100 m,中國大陸通常為30 m[7],因此能滿足突發(fā)事件的應(yīng)對和處置要求,也能很好地解決高精度地圖不易獲得的難題。但是直接將Google Earth軟件用于處置突發(fā)事件具有以下缺點(diǎn):一是需要連接互聯(lián)網(wǎng)在線產(chǎn)生,但是在很多緊急情況下很難滿足聯(lián)網(wǎng)需求,同時不便于安全保密。二是它作為一個商業(yè)軟件,限制了每天下載地圖的數(shù)量,如220張圖元,從而制約了獲取地圖大小的范圍[7]。因此,本文針對以上2個問題,提出了一種基于Google Earth的地圖離線生成方法,通過建立和維護(hù)大型圖庫,無需聯(lián)網(wǎng)便可以生成任何區(qū)域的大比例尺地圖。該方法能為突發(fā)事件的處置實(shí)時地提供任意區(qū)域的大比例尺地圖。下面首先概述基于Google Earth的地圖離線生成方法,然后詳細(xì)介紹各個模塊的實(shí)現(xiàn)方法,最后給出其系統(tǒng)的實(shí)現(xiàn)。
如圖1所示,基于Google Earth的地圖離線生成方法基本原理如下:首先,通過連接互聯(lián)網(wǎng)預(yù)先從Google Earth服務(wù)器中下載大量的地圖圖元;其次,基于這些圖元,構(gòu)建和維護(hù)一個大型的地圖圖庫;然后,根據(jù)所需地圖的區(qū)域范圍,基于地圖圖庫中的圖元拼接所需地圖;最后,進(jìn)行地圖配準(zhǔn)生成所需的地圖。該方法主要包括以下4個模塊:
地圖圖元下載:從Google Earth服務(wù)器中下載地圖圖元。
地圖圖庫管理:對圖庫中的圖元進(jìn)行編號和存儲,便于圖元的檢索、更新和拼接。
地圖無縫拼接:根據(jù)所需地圖的區(qū)域范圍,搜索該區(qū)域的地圖圖元,并對圖元進(jìn)行完整無縫拼接。
地圖自動配準(zhǔn):對生成的地圖進(jìn)行自動配準(zhǔn),便于與當(dāng)前的GIS軟件兼容。
圖1 基于Google Earth的地圖離線生成方法基本原理
本節(jié)主要依次從地圖圖元下載、地圖圖庫管理、地圖無縫拼接以及地圖自動配準(zhǔn)4個模塊對所提方法進(jìn)行詳細(xì)介紹。
如圖2所示,地圖圖元下載主要包括以下3個步驟:
首先,輸入需要下載地圖范圍的經(jīng)緯度,如地圖左上角和右下角的經(jīng)緯度;
然后,根據(jù)這個經(jīng)緯度范圍計算圖元編號范圍;
最后,根據(jù)圖元編號范圍,構(gòu)造圖元的請求數(shù)據(jù)包(即 URL 地址,如 http://kh.google.com/kh?v=34&t=trtqtt),從Google Earth服務(wù)器中依次下載每一個圖元。
在這3個步驟中,最關(guān)鍵的是第2步,即圖元編號的換算。如圖3所示,它主要包括2個步驟:
坐標(biāo)投影:將地理坐標(biāo)(即經(jīng)緯度)進(jìn)行坐標(biāo)投影,轉(zhuǎn)化為平面坐標(biāo);
編號計算:根據(jù)平面坐標(biāo)計算圖元編號。
圖2 地圖圖元下載的流程
圖3 圖元編號換算的流程
2.1.1 坐標(biāo)投影
Google Earth采用網(wǎng)絡(luò)地理常用的地圖投影,即墨卡托投影[8]。墨卡托投影又稱等角正切圓柱投影,是將與地軸方向一致的圓柱切于地球,然后將經(jīng)緯網(wǎng)按照等角條件投影到圓柱面,即為投影后的平面坐標(biāo)[9]。地理坐標(biāo)經(jīng)過墨卡托投影后,經(jīng)緯線垂直相交,沒有角度變形,有一定的面積變形,但是保持了方向和相對位置關(guān)系的不變。設(shè)B和L分別表示地理坐標(biāo)的緯度和經(jīng)度,X和Y分別表示平面坐標(biāo)的橫坐標(biāo)和縱坐標(biāo)。因此,根據(jù)墨卡托投影的正解公式[10],其地理坐標(biāo)(B,L)向平面坐標(biāo)(X,Y)換算的公式為:
2.1.2 圖元編號計算
Google Earth中的地圖以圖元(tile)為組織和調(diào)度的基本單位[7]。每個圖元是一個256×256的柵格圖片。因此,為了下載地圖圖元,需要將地理坐標(biāo)換算成圖元編號。對于衛(wèi)星影像,Google Earth采用QRST編碼方式來表示,其中編碼長度表示縮放級別[11]。當(dāng)縮放級別為1時,整個地球平面為一個圖元,即用t表示。當(dāng)縮放級別增大時,則將整個平面坐標(biāo)劃分成4個象限,按照順時針方向,每個象限分別用 q,r,s,t來表示,如圖4所示,tr表示地圖的右上象限區(qū)域。因此,隨著縮放級別的增大,圖元的劃分粒度越來越細(xì)。
圖4 地圖圖元編號原理
地圖圖元下載后,需要將這些大量的圖元進(jìn)行存儲和管理。本文設(shè)計了一種大型圖庫來存儲、管理和維護(hù)地圖圖元。圖庫的具體設(shè)計如下:
1)圖庫由多個子庫組成。1個子庫存儲1個縮放級別的所有圖元,以便于圖元的檢索和拼接。由于縮放級別最多有18個(即0到17)[11],因此,圖庫最多包含18個子庫。
2)對每個子庫構(gòu)建1個配置文件,記錄該子庫中圖元的范圍,以便圖元的管理,如檢查圖元是否存在以及檢索是否越界等。配置文件主要包含3個要素:縮放級別、起始圖元編號和終止圖元編號。
3)將圖元編號映射到地理坐標(biāo),便于圖元的搜索。圖元編號轉(zhuǎn)化為平面坐標(biāo)的方法與2.1.2節(jié)的圖元編號計算方法類似。根據(jù)式(1),平面坐標(biāo)(X,Y)轉(zhuǎn)化為地理坐標(biāo)(B,L)的公式如下:
其中,B根據(jù)式(2)進(jìn)行迭代計算,可以很快收斂。
地圖拼接采用MFC中圖片操作的GDI+類庫[12]來實(shí)現(xiàn),庫中的主要函數(shù)如表1所示。
表1 地圖拼接主要利用的函數(shù)
如圖5所示,地圖拼接主要過程如下:首先,輸入要拼接地圖的范圍,用該地圖左上角和右下角的經(jīng)緯度來表示;其次,根據(jù)地圖范圍的經(jīng)緯度來計算地圖邊界的圖元編號以及總的圖元數(shù);然后,根據(jù)圖元編號在圖庫中搜索所需圖元,并調(diào)用DrawImage函數(shù)將這些圖元進(jìn)行拼接。最后,將拼接好的圖片進(jìn)行保存。
圖5 地圖拼接的流程
地理信息系統(tǒng)(geographic information system,GIS)是當(dāng)前分析、處理和管理地理空間數(shù)據(jù)的最為常見的工具,因此拼接后產(chǎn)生的地圖通常都需要輸入到GIS軟件中使用[13]。為了提高方法的兼容性,需將拼接后的柵格圖片進(jìn)行配準(zhǔn)。雖然一般的GIS軟件都具有柵格圖像的配準(zhǔn)功能,如MapInfo[14],但是這些方法都需要手動參與,不便于使用。因此,本文分析和借鑒MapInfo的配準(zhǔn)原理[15],提出了一種簡單的自動配準(zhǔn)方法。
MapInfo主要通過產(chǎn)生一個tab配置文件來配準(zhǔn)柵格地圖。這個配置文件主要用來記錄該柵格地圖的基本信息:地圖名稱和4個配準(zhǔn)標(biāo)記點(diǎn)的經(jīng)緯度,如表2所示。因此,通過以上的分析,得出地圖配準(zhǔn)方法如下:自動地為每一個拼接后的地圖生成一個類似于MapInfo的tab配置文件,同時利用地圖的4個頂點(diǎn)作為該地圖的配準(zhǔn)點(diǎn)。
表2 柵格地圖配準(zhǔn)的tab配置文件示例
本文以Visual C++為開發(fā)平臺,以MapX控件為顯示平臺,根據(jù)第2節(jié)敘述的方法構(gòu)建了基于Google Earth的地圖離線生成原型系統(tǒng)。其系統(tǒng)實(shí)現(xiàn)的核心代碼主要包括地理坐標(biāo)換算成圖元編號的代碼(如表3所示)和地圖拼接代碼(如表4所示)。系統(tǒng)實(shí)現(xiàn)界面如圖6所示。通過系統(tǒng)測試,本文提出的基于Google Earth的地圖離線生成方法能在不連接互聯(lián)網(wǎng)的情況下生成所需區(qū)域的高精度地圖,可滿足應(yīng)急任務(wù)的需要。
表3 地理坐標(biāo)換算成圖元編號的核心代碼
表4 地圖拼接的核心代碼
續(xù)表
圖6 基于Google Earth的地圖離線生成系統(tǒng)的界面
本文提出了一種基于Google Earth的地圖離線生成方法。該方法通過構(gòu)建和維護(hù)大型圖庫,在離線的情況下也能生成任何區(qū)域、任何范圍和任何數(shù)量的高精度地圖,可很好地滿足當(dāng)前應(yīng)急搶險的需要。本文最終實(shí)現(xiàn)了該方法的原型系統(tǒng)。實(shí)驗(yàn)結(jié)果表明:所提方法能離線生成所需區(qū)域的高精度地圖。后續(xù)的工作將基于本文的方法和原型系統(tǒng),結(jié)合實(shí)際情況,開發(fā)出能用于實(shí)際應(yīng)急搶險任務(wù)的系統(tǒng)。
[1]楊崇俊,張福慶,伍勝,等.汶川地震災(zāi)區(qū)三維地理信息系統(tǒng)[J].遙感學(xué)報,2008(6):893-899.
[2]陳強(qiáng),姜立新,帥向華.Google Earth在地震應(yīng)急中的應(yīng)用[J].地震,2008,28(1):121-127.
[3]劉歡.由昆明火車站暴恐案引發(fā)的對我國恐怖主義犯罪的思考[J].長春教育學(xué)院學(xué)報,2014,30(16):25-26.
[4]肖文漢,吳孝斌,曹瑩瑩,等.基于百度地圖API的停車場查尋系統(tǒng)的設(shè)計[J].計算機(jī)技術(shù)與發(fā)展,2014,24(4):227-230.
[5]冷冕冕,孫少斌.軍用地圖三維可視化及二/三維互動映射研究[J].微計算機(jī)信息,2010(7):173-175.
[6]Jones M T.Google’s Geospatial Organizing Principle[J].IEEE Computer Graphics and Applications,2007,27(4):8-13.
[7]Google Earth.http://en.wikipedia.org/wiki/Google_Earth.
[8]李長春,蔡伯根,上官偉.基于Web墨卡托投影的地圖算法研究與實(shí)現(xiàn)[J].計算機(jī)應(yīng)用研究,2012,29(12):4793-4796.
[9]Mercator projection.http://en.wikipedia.org/wiki/Mercator_projection#cite_ref-1
[10]李厚樸,邊少鋒.高斯投影與墨卡托投影解析變換的復(fù)變函數(shù)表達(dá)式[J].武漢大學(xué)學(xué)報:信息科學(xué)版,2009,34(3):277-279.
[11]侯立鵬.Google map的數(shù)據(jù)管理和表現(xiàn)機(jī)制的討論研究[J].計算機(jī)光盤軟件與應(yīng)用,2011,16:94-94.
[12]候俊杰.深入淺出MFC[B].第2版.武漢:華中科技大學(xué)出版社,2001.
[13]陶陶,尹軼華,陶以欣.GIS軟件共享CAD圖塊的關(guān)鍵技術(shù)[J].計算機(jī)輔助設(shè)計與圖形學(xué)學(xué)報,2006,18(9):1460-1464.
[14]趙玲,謝樹春,湯井田.動態(tài)分段思想在MapInfo中的實(shí)現(xiàn)[J].測繪學(xué)報,2005,34(2):175-178.
[15]陳思璘,魏萍.如何用MapInfo實(shí)現(xiàn)油田開發(fā)地理查詢[J].石油工業(yè)計算機(jī)應(yīng)用,1998(3):33-36.