唐曉春 任曉東 陸建偉
谷歌地球(Google Earth,GE)是一款谷歌公司開發(fā)的虛擬地球軟件,它把衛(wèi)星照片、航空照相和GIS布置在一個地球的三維模型上。GE中的位置點可以導(dǎo)出為KML或KMZ文件,方便文件交換,供他人使用。凱立德是深圳市凱立德科技股份有限公司的一款國產(chǎn)GPS導(dǎo)航軟件。K碼(9位短碼)是凱立德獨創(chuàng)的位置編碼功能,用于精確描述和分享位置信息。
功能區(qū)監(jiān)測中需要每個月從相同的采樣點采集水樣,GE中的采樣點雖可以導(dǎo)出經(jīng)緯度信息,但國內(nèi)的導(dǎo)航軟件不支持采用經(jīng)緯度直接導(dǎo)航。凱立德K碼雖可以在導(dǎo)航軟件中直接輸入進(jìn)行單點定位,但并不能將所有采樣點全部顯示在一張地圖上進(jìn)行合理的路線規(guī)劃。如何將GE與凱立德各自的優(yōu)點結(jié)合起來,實現(xiàn)以合理的采樣線路完成采集水樣的任務(wù),是一個值得思考的問題。
圖1 K碼轉(zhuǎn)GCJ02圖
國內(nèi)采用的地圖坐標(biāo)主要有三種, 分別為WGS84、GCJ02和BD09ll。
GE使用的是WGS84的坐標(biāo)系統(tǒng)。WGS84為一種大地坐標(biāo)系,也是目前廣泛使用的GPS全球衛(wèi)星定位系統(tǒng)使用的坐標(biāo)系。
GCJ02是由中國國家測繪局制訂的地理信息系統(tǒng)的坐標(biāo)系統(tǒng)。它是一種對經(jīng)緯度數(shù)據(jù)的加密算法,即加入隨機(jī)的偏差。國內(nèi)出版的各種地圖系統(tǒng)(包括電子形式),出于國家安全考慮,必須至少采用GCJ02對地理位置進(jìn)行首次加密。
百度坐標(biāo)是在GCJ02加密的基礎(chǔ)上,進(jìn)行了BD09ll二次加密措施。
由于GE使用的是WGS84的坐標(biāo)系統(tǒng),國家從安全角度考慮不允許直接引用,因此凱立德為了方便導(dǎo)航者易于導(dǎo)航,就把經(jīng)緯度坐標(biāo)網(wǎng)格化,每一個網(wǎng)格單位代表縱橫向0.1秒。
凱立德K碼的具體格式如下:
K碼是9位碼,K碼將地圖分成了四塊進(jìn)行編碼,中心點在內(nèi)蒙的阿拉善左旗境內(nèi),經(jīng)緯度是東經(jīng)105度0分0秒,北緯40度0分0秒。以該點為中心分別在東西方向和南北方向畫一條線當(dāng)橫縱(XY)坐標(biāo)軸,那么第一象限(即東北方向的那塊)的K碼的第1位是5,第2、3、4象限的K碼的第一位分別是6、7、8。K碼的第2-5位表示東西方向上的坐標(biāo),第6-9位代表南北方向上的坐標(biāo)。K碼實際上就是一個凱立德特有的34進(jìn)制數(shù),(26個字母加10個阿拉伯?dāng)?shù)字,再去掉不用的小寫L和O共34個字符),這個34進(jìn)制數(shù)從左向右從低位向高位排列,K碼與火星坐標(biāo)可相互轉(zhuǎn)換。
因為凱立德K碼是在WGS84基礎(chǔ)上,采用GCJ02(火星坐標(biāo))一次加密后,通過節(jié)3的算法得到的,因此首先要將K碼轉(zhuǎn)換成以經(jīng)緯度表示的GCJ02格式,圖1為凱立德K碼轉(zhuǎn)GCJ02的主要代碼。
同時因為轉(zhuǎn)換完成后的經(jīng)緯度是GCJ02格式的,并不是真實的WGS84經(jīng)緯度,直接將這樣的經(jīng)緯度標(biāo)注到GE上,就會產(chǎn)生偏差,因此還要對轉(zhuǎn)換過后的經(jīng)緯度采用網(wǎng)絡(luò)糾偏接口進(jìn)行糾偏。
圖2 GCJ02轉(zhuǎn)K碼圖
strUrl = "http://api.zdoz.net/transmore.ashx?lats=" & strlat &"&lngs=" & strlon & "&type=2"
將GCJ02轉(zhuǎn)換成WGS84,根據(jù)輸入次序返回如下的一個JSON格式的數(shù)組。
參數(shù):lats=34.123;34.332;55.231&lngs=113.123;112.213;115.321&type=2
返回 :{"Lng":113.129429 37312582,"Lat":34.1217618507 60855},{"Lng":112.2191171095 7568,"Lat":34.3306763095054},{"Lng":115.33036232125529,"L at":55.232930158541052}]
首先通過網(wǎng)絡(luò)糾偏接口將WGS84轉(zhuǎn)換成GCJ02。
strUrl = "http://api.zdoz.net/transmore.ashx?lats=" & strlat &"&lngs=" & strlon & "&type=1"
然后按照節(jié)3中的算法將GCJ02轉(zhuǎn)換成凱立德K碼。這樣就可以解決在先有GE經(jīng)緯度的情況下,如何采用凱立德K碼進(jìn)行導(dǎo)航的問題。
按上述步驟將太倉片功能區(qū)用K碼定位的所有采樣點轉(zhuǎn)換成無偏差的、GE所支持的WGS84坐標(biāo)點并展匯到GE中的效果圖,就可以直觀地對太倉片功能區(qū)的采樣點進(jìn)行合理分片,并對各片的采樣路線事先進(jìn)行規(guī)劃,對分片后的采樣點采樣時間有一個總體上的把握。
本文通過網(wǎng)絡(luò)糾偏接口,實現(xiàn)了凱立得K碼與GE的相互轉(zhuǎn)換,克服了凱立得K碼不能同時顯示多個采樣點、GE不能單獨導(dǎo)航的缺點,為水文功能區(qū)監(jiān)測采樣點的合理分片,優(yōu)化采樣路徑提供了一種有效的方法