唐曉春 任曉東 陸建偉
谷歌地球(Google Earth,GE)是一款谷歌公司開(kāi)發(fā)的虛擬地球軟件,它把衛(wèi)星照片、航空照相和GIS布置在一個(gè)地球的三維模型上。GE中的位置點(diǎn)可以導(dǎo)出為KML或KMZ文件,方便文件交換,供他人使用。凱立德是深圳市凱立德科技股份有限公司的一款國(guó)產(chǎn)GPS導(dǎo)航軟件。K碼(9位短碼)是凱立德獨(dú)創(chuàng)的位置編碼功能,用于精確描述和分享位置信息。
功能區(qū)監(jiān)測(cè)中需要每個(gè)月從相同的采樣點(diǎn)采集水樣,GE中的采樣點(diǎn)雖可以導(dǎo)出經(jīng)緯度信息,但國(guó)內(nèi)的導(dǎo)航軟件不支持采用經(jīng)緯度直接導(dǎo)航。凱立德K碼雖可以在導(dǎo)航軟件中直接輸入進(jìn)行單點(diǎn)定位,但并不能將所有采樣點(diǎn)全部顯示在一張地圖上進(jìn)行合理的路線規(guī)劃。如何將GE與凱立德各自的優(yōu)點(diǎn)結(jié)合起來(lái),實(shí)現(xiàn)以合理的采樣線路完成采集水樣的任務(wù),是一個(gè)值得思考的問(wèn)題。

圖1 K碼轉(zhuǎn)GCJ02圖
國(guó)內(nèi)采用的地圖坐標(biāo)主要有三種, 分別為WGS84、GCJ02和BD09ll。
GE使用的是WGS84的坐標(biāo)系統(tǒng)。WGS84為一種大地坐標(biāo)系,也是目前廣泛使用的GPS全球衛(wèi)星定位系統(tǒng)使用的坐標(biāo)系。
GCJ02是由中國(guó)國(guó)家測(cè)繪局制訂的地理信息系統(tǒng)的坐標(biāo)系統(tǒng)。它是一種對(duì)經(jīng)緯度數(shù)據(jù)的加密算法,即加入隨機(jī)的偏差。國(guó)內(nèi)出版的各種地圖系統(tǒng)(包括電子形式),出于國(guó)家安全考慮,必須至少采用GCJ02對(duì)地理位置進(jìn)行首次加密。
百度坐標(biāo)是在GCJ02加密的基礎(chǔ)上,進(jìn)行了BD09ll二次加密措施。
由于GE使用的是WGS84的坐標(biāo)系統(tǒng),國(guó)家從安全角度考慮不允許直接引用,因此凱立德為了方便導(dǎo)航者易于導(dǎo)航,就把經(jīng)緯度坐標(biāo)網(wǎng)格化,每一個(gè)網(wǎng)格單位代表縱橫向0.1秒。
凱立德K碼的具體格式如下:
K碼是9位碼,K碼將地圖分成了四塊進(jìn)行編碼,中心點(diǎn)在內(nèi)蒙的阿拉善左旗境內(nèi),經(jīng)緯度是東經(jīng)105度0分0秒,北緯40度0分0秒。以該點(diǎn)為中心分別在東西方向和南北方向畫(huà)一條線當(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碼實(shí)際上就是一個(gè)凱立德特有的34進(jìn)制數(shù),(26個(gè)字母加10個(gè)阿拉伯?dāng)?shù)字,再去掉不用的小寫(xiě)L和O共34個(gè)字符),這個(gè)34進(jìn)制數(shù)從左向右從低位向高位排列,K碼與火星坐標(biāo)可相互轉(zhuǎn)換。
因?yàn)閯P立德K碼是在WGS84基礎(chǔ)上,采用GCJ02(火星坐標(biāo))一次加密后,通過(guò)節(jié)3的算法得到的,因此首先要將K碼轉(zhuǎn)換成以經(jīng)緯度表示的GCJ02格式,圖1為凱立德K碼轉(zhuǎn)GCJ02的主要代碼。
同時(shí)因?yàn)檗D(zhuǎn)換完成后的經(jīng)緯度是GCJ02格式的,并不是真實(shí)的WGS84經(jīng)緯度,直接將這樣的經(jīng)緯度標(biāo)注到GE上,就會(huì)產(chǎn)生偏差,因此還要對(duì)轉(zhuǎn)換過(guò)后的經(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ù)輸入次序返回如下的一個(gè)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}]
首先通過(guò)網(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)航的問(wèn)題。
按上述步驟將太倉(cāng)片功能區(qū)用K碼定位的所有采樣點(diǎn)轉(zhuǎn)換成無(wú)偏差的、GE所支持的WGS84坐標(biāo)點(diǎn)并展匯到GE中的效果圖,就可以直觀地對(duì)太倉(cāng)片功能區(qū)的采樣點(diǎn)進(jìn)行合理分片,并對(duì)各片的采樣路線事先進(jìn)行規(guī)劃,對(duì)分片后的采樣點(diǎn)采樣時(shí)間有一個(gè)總體上的把握。
本文通過(guò)網(wǎng)絡(luò)糾偏接口,實(shí)現(xiàn)了凱立得K碼與GE的相互轉(zhuǎn)換,克服了凱立得K碼不能同時(shí)顯示多個(gè)采樣點(diǎn)、GE不能單獨(dú)導(dǎo)航的缺點(diǎn),為水文功能區(qū)監(jiān)測(cè)采樣點(diǎn)的合理分片,優(yōu)化采樣路徑提供了一種有效的方法