沈 鑫,肖書成,何 宏,楊振東,劉光霆
(重慶后勤工程學院,重慶 401331)
隨著社會的發展,應對和處置突發事件是國家的一項重要工作,如搶險救災[1-2]、處置暴力恐怖事件[3]、應對突發的局部戰爭等。這項工作的關鍵是需要在較短的時間內獲取該區域大比例尺的地圖。但當前常見的紙質和電子地圖精度不高[4],同時大比例尺軍用地圖[5]密級高,管理嚴格,短時間獲取也很困難,Google Earth[6]的出現恰好可以很好地解決這一問題。
它能夠下載、顯示高清的實物地圖,最高精度可達5年前軍用級水平,全球地貌影像的有效分辨率至少為100 m,中國大陸通常為30 m[7],因此能滿足突發事件的應對和處置要求,也能很好地解決高精度地圖不易獲得的難題。但是直接將Google Earth軟件用于處置突發事件具有以下缺點:一是需要連接互聯網在線產生,但是在很多緊急情況下很難滿足聯網需求,同時不便于安全保密。二是它作為一個商業軟件,限制了每天下載地圖的數量,如220張圖元,從而制約了獲取地圖大小的范圍[7]。因此,本文針對以上2個問題,提出了一種基于Google Earth的地圖離線生成方法,通過建立和維護大型圖庫,無需聯網便可以生成任何區域的大比例尺地圖。該方法能為突發事件的處置實時地提供任意區域的大比例尺地圖。下面首先概述基于Google Earth的地圖離線生成方法,然后詳細介紹各個模塊的實現方法,最后給出其系統的實現。
如圖1所示,基于Google Earth的地圖離線生成方法基本原理如下:首先,通過連接互聯網預先從Google Earth服務器中下載大量的地圖圖元;其次,基于這些圖元,構建和維護一個大型的地圖圖庫;然后,根據所需地圖的區域范圍,基于地圖圖庫中的圖元拼接所需地圖;最后,進行地圖配準生成所需的地圖。該方法主要包括以下4個模塊:
地圖圖元下載:從Google Earth服務器中下載地圖圖元。
地圖圖庫管理:對圖庫中的圖元進行編號和存儲,便于圖元的檢索、更新和拼接。
地圖無縫拼接:根據所需地圖的區域范圍,搜索該區域的地圖圖元,并對圖元進行完整無縫拼接。
地圖自動配準:對生成的地圖進行自動配準,便于與當前的GIS軟件兼容。

圖1 基于Google Earth的地圖離線生成方法基本原理
本節主要依次從地圖圖元下載、地圖圖庫管理、地圖無縫拼接以及地圖自動配準4個模塊對所提方法進行詳細介紹。
如圖2所示,地圖圖元下載主要包括以下3個步驟:
首先,輸入需要下載地圖范圍的經緯度,如地圖左上角和右下角的經緯度;
然后,根據這個經緯度范圍計算圖元編號范圍;
最后,根據圖元編號范圍,構造圖元的請求數據包(即 URL 地址,如 http://kh.google.com/kh?v=34&t=trtqtt),從Google Earth服務器中依次下載每一個圖元。
在這3個步驟中,最關鍵的是第2步,即圖元編號的換算。如圖3所示,它主要包括2個步驟:
坐標投影:將地理坐標(即經緯度)進行坐標投影,轉化為平面坐標;
編號計算:根據平面坐標計算圖元編號。

圖2 地圖圖元下載的流程

圖3 圖元編號換算的流程
2.1.1 坐標投影
Google Earth采用網絡地理常用的地圖投影,即墨卡托投影[8]。墨卡托投影又稱等角正切圓柱投影,是將與地軸方向一致的圓柱切于地球,然后將經緯網按照等角條件投影到圓柱面,即為投影后的平面坐標[9]。地理坐標經過墨卡托投影后,經緯線垂直相交,沒有角度變形,有一定的面積變形,但是保持了方向和相對位置關系的不變。設B和L分別表示地理坐標的緯度和經度,X和Y分別表示平面坐標的橫坐標和縱坐標。因此,根據墨卡托投影的正解公式[10],其地理坐標(B,L)向平面坐標(X,Y)換算的公式為:

2.1.2 圖元編號計算
Google Earth中的地圖以圖元(tile)為組織和調度的基本單位[7]。每個圖元是一個256×256的柵格圖片。因此,為了下載地圖圖元,需要將地理坐標換算成圖元編號。對于衛星影像,Google Earth采用QRST編碼方式來表示,其中編碼長度表示縮放級別[11]。當縮放級別為1時,整個地球平面為一個圖元,即用t表示。當縮放級別增大時,則將整個平面坐標劃分成4個象限,按照順時針方向,每個象限分別用 q,r,s,t來表示,如圖4所示,tr表示地圖的右上象限區域。因此,隨著縮放級別的增大,圖元的劃分粒度越來越細。

圖4 地圖圖元編號原理
地圖圖元下載后,需要將這些大量的圖元進行存儲和管理。本文設計了一種大型圖庫來存儲、管理和維護地圖圖元。圖庫的具體設計如下:
1)圖庫由多個子庫組成。1個子庫存儲1個縮放級別的所有圖元,以便于圖元的檢索和拼接。由于縮放級別最多有18個(即0到17)[11],因此,圖庫最多包含18個子庫。
2)對每個子庫構建1個配置文件,記錄該子庫中圖元的范圍,以便圖元的管理,如檢查圖元是否存在以及檢索是否越界等。配置文件主要包含3個要素:縮放級別、起始圖元編號和終止圖元編號。
3)將圖元編號映射到地理坐標,便于圖元的搜索。圖元編號轉化為平面坐標的方法與2.1.2節的圖元編號計算方法類似。根據式(1),平面坐標(X,Y)轉化為地理坐標(B,L)的公式如下:

其中,B根據式(2)進行迭代計算,可以很快收斂。
地圖拼接采用MFC中圖片操作的GDI+類庫[12]來實現,庫中的主要函數如表1所示。

表1 地圖拼接主要利用的函數
如圖5所示,地圖拼接主要過程如下:首先,輸入要拼接地圖的范圍,用該地圖左上角和右下角的經緯度來表示;其次,根據地圖范圍的經緯度來計算地圖邊界的圖元編號以及總的圖元數;然后,根據圖元編號在圖庫中搜索所需圖元,并調用DrawImage函數將這些圖元進行拼接。最后,將拼接好的圖片進行保存。

圖5 地圖拼接的流程
地理信息系統(geographic information system,GIS)是當前分析、處理和管理地理空間數據的最為常見的工具,因此拼接后產生的地圖通常都需要輸入到GIS軟件中使用[13]。為了提高方法的兼容性,需將拼接后的柵格圖片進行配準。雖然一般的GIS軟件都具有柵格圖像的配準功能,如MapInfo[14],但是這些方法都需要手動參與,不便于使用。因此,本文分析和借鑒MapInfo的配準原理[15],提出了一種簡單的自動配準方法。
MapInfo主要通過產生一個tab配置文件來配準柵格地圖。這個配置文件主要用來記錄該柵格地圖的基本信息:地圖名稱和4個配準標記點的經緯度,如表2所示。因此,通過以上的分析,得出地圖配準方法如下:自動地為每一個拼接后的地圖生成一個類似于MapInfo的tab配置文件,同時利用地圖的4個頂點作為該地圖的配準點。

表2 柵格地圖配準的tab配置文件示例
本文以Visual C++為開發平臺,以MapX控件為顯示平臺,根據第2節敘述的方法構建了基于Google Earth的地圖離線生成原型系統。其系統實現的核心代碼主要包括地理坐標換算成圖元編號的代碼(如表3所示)和地圖拼接代碼(如表4所示)。系統實現界面如圖6所示。通過系統測試,本文提出的基于Google Earth的地圖離線生成方法能在不連接互聯網的情況下生成所需區域的高精度地圖,可滿足應急任務的需要。

表3 地理坐標換算成圖元編號的核心代碼

表4 地圖拼接的核心代碼

續表

圖6 基于Google Earth的地圖離線生成系統的界面
本文提出了一種基于Google Earth的地圖離線生成方法。該方法通過構建和維護大型圖庫,在離線的情況下也能生成任何區域、任何范圍和任何數量的高精度地圖,可很好地滿足當前應急搶險的需要。本文最終實現了該方法的原型系統。實驗結果表明:所提方法能離線生成所需區域的高精度地圖。后續的工作將基于本文的方法和原型系統,結合實際情況,開發出能用于實際應急搶險任務的系統。
[1]楊崇俊,張福慶,伍勝,等.汶川地震災區三維地理信息系統[J].遙感學報,2008(6):893-899.
[2]陳強,姜立新,帥向華.Google Earth在地震應急中的應用[J].地震,2008,28(1):121-127.
[3]劉歡.由昆明火車站暴恐案引發的對我國恐怖主義犯罪的思考[J].長春教育學院學報,2014,30(16):25-26.
[4]肖文漢,吳孝斌,曹瑩瑩,等.基于百度地圖API的停車場查尋系統的設計[J].計算機技術與發展,2014,24(4):227-230.
[5]冷冕冕,孫少斌.軍用地圖三維可視化及二/三維互動映射研究[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墨卡托投影的地圖算法研究與實現[J].計算機應用研究,2012,29(12):4793-4796.
[9]Mercator projection.http://en.wikipedia.org/wiki/Mercator_projection#cite_ref-1
[10]李厚樸,邊少鋒.高斯投影與墨卡托投影解析變換的復變函數表達式[J].武漢大學學報:信息科學版,2009,34(3):277-279.
[11]侯立鵬.Google map的數據管理和表現機制的討論研究[J].計算機光盤軟件與應用,2011,16:94-94.
[12]候俊杰.深入淺出MFC[B].第2版.武漢:華中科技大學出版社,2001.
[13]陶陶,尹軼華,陶以欣.GIS軟件共享CAD圖塊的關鍵技術[J].計算機輔助設計與圖形學學報,2006,18(9):1460-1464.
[14]趙玲,謝樹春,湯井田.動態分段思想在MapInfo中的實現[J].測繪學報,2005,34(2):175-178.
[15]陳思璘,魏萍.如何用MapInfo實現油田開發地理查詢[J].石油工業計算機應用,1998(3):33-36.