張小波,石吉寶,張俊,楊益群,劉剛(成都市勘察測(cè)繪研究院,四川成都 610081)
移動(dòng)GIS系統(tǒng)Android終端地方坐標(biāo)轉(zhuǎn)換模塊開(kāi)發(fā)
張小波?,石吉寶,張俊,楊益群,劉剛
(成都市勘察測(cè)繪研究院,四川成都 610081)
摘 要:基于A(yíng)ndroid終端的行業(yè)移動(dòng)GIS應(yīng)用越來(lái)越多,而GIS終端獲取的位置數(shù)據(jù)與地理底圖及專(zhuān)題數(shù)據(jù)坐標(biāo)系不匹配,常常困擾GIS開(kāi)發(fā)人員。本文介紹了坐標(biāo)轉(zhuǎn)換的基本原理,并根據(jù)移動(dòng)GIS的需要將轉(zhuǎn)換過(guò)程簡(jiǎn)化,描述了坐標(biāo)轉(zhuǎn)換模塊開(kāi)發(fā)的過(guò)程并列出了核心代碼。
關(guān)鍵詞:移動(dòng)GIS;Android ;坐標(biāo)轉(zhuǎn)換
隨著移動(dòng)互聯(lián)網(wǎng)的迅速發(fā)展以及Android智能移動(dòng)終端設(shè)備的普及,移動(dòng)GIS也迎來(lái)了新的發(fā)展機(jī)遇,并在各行業(yè)得到了廣泛的應(yīng)用,Esri、超圖等GIS軟件廠(chǎng)商均推出了適用于A(yíng)ndroid的開(kāi)發(fā)包,用戶(hù)能夠基于此搭建自己的行業(yè)移動(dòng)GIS應(yīng)用。
Android移動(dòng)GIS終端通過(guò)GPS獲取的位置信息為WGS-84坐標(biāo)系下的大地坐標(biāo),而行業(yè)移動(dòng)GIS系統(tǒng)采用的城市坐標(biāo)系為了滿(mǎn)足投影變形小于2.5 cm/ km的要求,多為任意帶投影的地方坐標(biāo)系,這就需要進(jìn)行坐標(biāo)轉(zhuǎn)換。
高精度的轉(zhuǎn)換,可以在線(xiàn)服務(wù)的形式提供,容易實(shí)現(xiàn)包括用戶(hù)管理、區(qū)域管理、精度分級(jí)控制、服務(wù)無(wú)縫升級(jí)等功能,但是移動(dòng)端必須與服務(wù)器交互數(shù)據(jù),一旦無(wú)法連接網(wǎng)絡(luò)將無(wú)法使用,影響用戶(hù)體驗(yàn)。在行業(yè)移動(dòng)GIS應(yīng)用中,廣泛使用的基于A(yíng)ndroid操作系統(tǒng)的移動(dòng)終端,單點(diǎn)定位的精度多在5 m~50 m,米級(jí)精度的轉(zhuǎn)換即可滿(mǎn)足要求,可以采用本地轉(zhuǎn)換的方式實(shí)現(xiàn):開(kāi)發(fā)一個(gè)坐標(biāo)轉(zhuǎn)換模塊,集成低精度的轉(zhuǎn)換參數(shù),實(shí)現(xiàn)Android移動(dòng)GIS終端WGS84坐標(biāo)到地方坐標(biāo)的轉(zhuǎn)換。
將WGS-84坐標(biāo)轉(zhuǎn)換為任意帶投影的地方坐標(biāo)系,通常有兩種轉(zhuǎn)換方式,第一種是先進(jìn)行WGS-84橢球到當(dāng)?shù)貦E球的基準(zhǔn)轉(zhuǎn)換,再利用投影帶參數(shù)進(jìn)行高斯投影正算,共涉及基準(zhǔn)轉(zhuǎn)換的3個(gè)平移參數(shù)、3個(gè)旋轉(zhuǎn)參數(shù)和1個(gè)尺度參數(shù)以及投影帶的中央子午線(xiàn)、縱橫軸加常數(shù)和比例因子,總計(jì)11個(gè)參數(shù);第二種是先進(jìn)行高斯投影正算,得到基于WGS-84橢球平面坐標(biāo),再進(jìn)行解析變換,轉(zhuǎn)換為地方坐標(biāo)系下的平面坐標(biāo),需要高斯投影正算的4個(gè)參數(shù)以及解析變換的2個(gè)平移參數(shù)、1個(gè)旋轉(zhuǎn)參數(shù)和1個(gè)尺度參數(shù),總計(jì)8個(gè)參數(shù)。
以上是高精度的嚴(yán)密轉(zhuǎn)換,涉及參數(shù)較多,轉(zhuǎn)換過(guò)程復(fù)雜,若選用合適的轉(zhuǎn)換參數(shù),轉(zhuǎn)換精度可達(dá)±10 cm。在移動(dòng)GIS終端,可將上述過(guò)程簡(jiǎn)化,通過(guò)擬合的方式求得滿(mǎn)足精度要求的中央子午線(xiàn)、縱橫軸加常數(shù)和比例因子4個(gè)近似投影帶參數(shù)后,直接進(jìn)行高斯正算,即可得到地方坐標(biāo)。
設(shè)L0為中央子午線(xiàn),X0為縱軸加常數(shù),Y0為橫軸加常數(shù),S為比例因子,計(jì)算過(guò)程如下:
首先投影至橢球面,進(jìn)行高斯正算:

式中:t=tanB;l=L-L0;l(B)為赤道到投影點(diǎn)的子午線(xiàn)弧長(zhǎng)。
再進(jìn)一步計(jì)算當(dāng)?shù)刈鴺?biāo):
dfx=S×x+X0
dfy=S×y+Y0
坐標(biāo)轉(zhuǎn)換的原理及過(guò)程,對(duì)于一般GIS開(kāi)發(fā)人員而言較為抽象,因此將坐標(biāo)轉(zhuǎn)換模塊編譯為JAR包發(fā)布,GIS開(kāi)發(fā)人員只需要導(dǎo)入此文件,即可調(diào)用坐標(biāo)轉(zhuǎn)換模塊。
Android應(yīng)用程序使用Java作為編程語(yǔ)言進(jìn)行編寫(xiě),需要先搭建開(kāi)發(fā)環(huán)境,包括Java運(yùn)行環(huán)境,Eclipse開(kāi)發(fā)工具,Android軟件開(kāi)發(fā)工具包,Android開(kāi)發(fā)工具等。需要注意的是,Android不是使用傳統(tǒng)的Java虛擬機(jī)執(zhí)行,而是用一個(gè)定制的稱(chēng)為Dalvik的虛擬機(jī)執(zhí)行,因此已編譯的Java類(lèi)和可執(zhí)行程序不能在不經(jīng)過(guò)修改的情況下就運(yùn)行在A(yíng)ndroid上,若已有基于Java的坐標(biāo)轉(zhuǎn)換模塊,也需要在A(yíng)ndroid開(kāi)發(fā)環(huán)境下重新編譯。
建立一個(gè)Android應(yīng)用程序工程,勾選“Mark this project as a library”表明建立的為庫(kù)文件,新建一個(gè)名為cotr84的類(lèi),在其中實(shí)現(xiàn)坐標(biāo)轉(zhuǎn)換的功能,坐標(biāo)轉(zhuǎn)換的核心代碼如下:
計(jì)算子午線(xiàn)弧長(zhǎng):
private double l(){
double a,b,c,d,e,lb;
a= ((a84 + b84)?(1 + Math.pow(n84,2) /4 + Math.pow (n84,4) /64)) /2;
b=-3?n84/2+9?Math.pow(n84,3) /16-3?Math.pow (n84,5) /32;
c=15?Math.pow(n84,2) /16-15?Math.pow(n84,4) /32;
d=-35?Math.pow(n84,3) /48+105?Math.pow(n84,5) / 256;
e=315?Math.pow(n84,4) /512;
lb=a?(blb+b?Math.sin(blb?2)+c?Math.sin(blb?4)+ d?Math.sin(blb?6)+e?Math.sin(blb?8));
return lb;
}
高斯正算:
public void w84tcd(double inblb,double inbll){
blb=Math.toRadians(inblb);
bll=Math.toRadians(inbll);
N=a84/ Math.sqrt(1-e2?Math.pow(Math.sin(blb),2));
t=Math.tan(blb);
ll=bll-l0;
nn=e12?Math.pow(Math.cos(blb),2);
xyx=l()+t?N?Math.pow(Math.cos(blb),2)?Math.pow (ll,2) /2
+t?N?Math.pow(Math.cos(blb),4)?(5-Math.pow(t, 2)+9?nn+4?Math.pow(nn,2))?Math.pow(ll,4) /24
+t?N?Math.pow(Math.cos(blb),6)?(61-58?Math.pow(t,2)+Math.pow(t,4) +270?nn-330?nn?Math.pow(t, 2))?Math.pow(ll,6) /720
+t?N?Math.pow(Math.cos(blb),8)?(1385-3111?Math.pow(t,2) +543?Math.pow(t,4) -Math.pow(t,6))?Math.pow(ll,8) /40320;
xyy=N?Math.cos(blb)?ll
+N?Math.pow(Math.cos(blb),3)?(1-Math.pow(t,2)+ nn)?Math.pow(ll,3) /6
+N?Math.pow(Math.cos(blb),5)?(5-18?Math.pow(t, 2)+Math.pow(t,4)+14?nn-58?Math.pow(t,2)?nn)?Math.pow(ll,5) /120
+N?Math.pow(Math.cos(blb),7)?(61-479?Math.pow (t,2)+179?Math.pow(t,4)-Math.pow(t,6))?Math.pow(ll, 7) /5040;
}
計(jì)算當(dāng)?shù)刈鴺?biāo):
public long getXyx() {
return (long) (s?xyx+x0);
}
public long getXyy() {
return (long) (s?xyy+y0);
}
代碼編寫(xiě)完成后,按圖1、圖2所示,將該類(lèi)導(dǎo)出為JAR文件即可。

圖1 導(dǎo)出為JAR文件

圖2 選擇需要導(dǎo)出的類(lèi)
在移動(dòng)GIS開(kāi)發(fā)項(xiàng)目中,開(kāi)發(fā)人員不需要了解坐標(biāo)轉(zhuǎn)換的原理和參數(shù),直接引用JAR文件,即可方便地將WGS-84坐標(biāo)轉(zhuǎn)換為地方坐標(biāo)。

圖3 利用坐標(biāo)轉(zhuǎn)換模塊保證多源數(shù)據(jù)坐標(biāo)系一致
我院開(kāi)發(fā)的成都市自來(lái)水移動(dòng)巡檢系統(tǒng),是基于A(yíng)ndroid移動(dòng)GIS終端的用于戶(hù)外管網(wǎng)設(shè)施巡查維護(hù)工作的應(yīng)用系統(tǒng),通過(guò)在移動(dòng)GIS終端上使用GPS設(shè)備定位,數(shù)碼相機(jī)拍照,數(shù)據(jù)錄入,管網(wǎng)數(shù)據(jù)瀏覽查詢(xún)等手段,輔助巡查工作的進(jìn)行,使得巡查的數(shù)據(jù)得以標(biāo)準(zhǔn)化地錄入,為管線(xiàn)設(shè)備的管理和決策工作提供保障。
系統(tǒng)中作為底圖的基礎(chǔ)地理數(shù)據(jù)和管網(wǎng)專(zhuān)題數(shù)據(jù)都是以地圖服務(wù)的形式提供給各子系統(tǒng)使用的,其坐標(biāo)系為成都地方坐標(biāo)。移動(dòng)巡檢系統(tǒng)智能終端利用坐標(biāo)轉(zhuǎn)換模塊將獲取到的WGS-84坐標(biāo)系下的坐標(biāo)轉(zhuǎn)換為成都地方坐標(biāo)系下的坐標(biāo)信息,可以將用戶(hù)的位置信息實(shí)時(shí)顯示在基礎(chǔ)地圖和管網(wǎng)專(zhuān)題圖上。
基于A(yíng)ndroid的移動(dòng)GIS應(yīng)用越來(lái)越普遍,并從面向公眾用戶(hù)的弱GIS應(yīng)用擴(kuò)展到面向行業(yè)用戶(hù)的強(qiáng)GIS應(yīng)用,行業(yè)用戶(hù)的專(zhuān)題數(shù)據(jù)以及地理底圖多是基于當(dāng)?shù)爻鞘凶鴺?biāo)系,坐標(biāo)系如何匹配的問(wèn)題往往困擾GIS開(kāi)發(fā)人員,通過(guò)地方坐標(biāo)轉(zhuǎn)換模塊,開(kāi)發(fā)人員無(wú)需坐標(biāo)轉(zhuǎn)換的專(zhuān)業(yè)知識(shí),即可開(kāi)發(fā)出基于地方坐標(biāo)系的應(yīng)用。
參考文獻(xiàn)
[1] 董鴻聞,李國(guó)智,陳士銀等.地理空間定位基準(zhǔn)及其應(yīng)用[M].北京:測(cè)繪出版社,2004.
[2] 李振杰,聶慶微.GPS-RTK坐標(biāo)與地方施工坐標(biāo)系兩種轉(zhuǎn)換模精度分析[J].測(cè)繪與空間地理信息,2013,36 (5):210~212.
[3] Reto Meier.Android 4高級(jí)編程(第3版)[M].佘建偉,趙凱(譯).北京:清華大學(xué)出版社.
Development of the Coordinate Transformation Module for Android Mobile GIS System
Zhang Xiaobo,Shi Jibao,Zhang Jun,Yang Yiqun,Liu Gang
(Chengdu Institute of Survey and Investigation,Chengdu 610081,China)
Abstract:The mobile GIS systems based on Android are very popular now ,it’s a problem that how to math the base map with thematic data.This article introduced the theory of coordinate transformation and simplified it for mobile GIS system,then described the development process and listed the main source code.
Key words:mobile GIS;Android;coordinate transformation
文章編號(hào):1672-8262(2015)01-113-03中圖分類(lèi)號(hào):P226+.3,P209
文獻(xiàn)標(biāo)識(shí)碼:B
收稿日期:?2014—11—18
作者簡(jiǎn)介:張小波(1980—),男,高級(jí)工程師,主要從事工程測(cè)量和GPS技術(shù)應(yīng)用、地理信息的研究與應(yīng)用。