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

式中:t=tanB;l=L-L0;l(B)為赤道到投影點的子午線弧長。
再進一步計算當地坐標:
dfx=S×x+X0
dfy=S×y+Y0
坐標轉換的原理及過程,對于一般GIS開發人員而言較為抽象,因此將坐標轉換模塊編譯為JAR包發布,GIS開發人員只需要導入此文件,即可調用坐標轉換模塊。
Android應用程序使用Java作為編程語言進行編寫,需要先搭建開發環境,包括Java運行環境,Eclipse開發工具,Android軟件開發工具包,Android開發工具等。需要注意的是,Android不是使用傳統的Java虛擬機執行,而是用一個定制的稱為Dalvik的虛擬機執行,因此已編譯的Java類和可執行程序不能在不經過修改的情況下就運行在Android上,若已有基于Java的坐標轉換模塊,也需要在Android開發環境下重新編譯。
建立一個Android應用程序工程,勾選“Mark this project as a library”表明建立的為庫文件,新建一個名為cotr84的類,在其中實現坐標轉換的功能,坐標轉換的核心代碼如下:
計算子午線弧長:
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;
}
計算當地坐標:
public long getXyx() {
return (long) (s?xyx+x0);
}
public long getXyy() {
return (long) (s?xyy+y0);
}
代碼編寫完成后,按圖1、圖2所示,將該類導出為JAR文件即可。

圖1 導出為JAR文件

圖2 選擇需要導出的類
在移動GIS開發項目中,開發人員不需要了解坐標轉換的原理和參數,直接引用JAR文件,即可方便地將WGS-84坐標轉換為地方坐標。

圖3 利用坐標轉換模塊保證多源數據坐標系一致
我院開發的成都市自來水移動巡檢系統,是基于Android移動GIS終端的用于戶外管網設施巡查維護工作的應用系統,通過在移動GIS終端上使用GPS設備定位,數碼相機拍照,數據錄入,管網數據瀏覽查詢等手段,輔助巡查工作的進行,使得巡查的數據得以標準化地錄入,為管線設備的管理和決策工作提供保障。
系統中作為底圖的基礎地理數據和管網專題數據都是以地圖服務的形式提供給各子系統使用的,其坐標系為成都地方坐標。移動巡檢系統智能終端利用坐標轉換模塊將獲取到的WGS-84坐標系下的坐標轉換為成都地方坐標系下的坐標信息,可以將用戶的位置信息實時顯示在基礎地圖和管網專題圖上。
基于Android的移動GIS應用越來越普遍,并從面向公眾用戶的弱GIS應用擴展到面向行業用戶的強GIS應用,行業用戶的專題數據以及地理底圖多是基于當地城市坐標系,坐標系如何匹配的問題往往困擾GIS開發人員,通過地方坐標轉換模塊,開發人員無需坐標轉換的專業知識,即可開發出基于地方坐標系的應用。
參考文獻
[1] 董鴻聞,李國智,陳士銀等.地理空間定位基準及其應用[M].北京:測繪出版社,2004.
[2] 李振杰,聶慶微.GPS-RTK坐標與地方施工坐標系兩種轉換模精度分析[J].測繪與空間地理信息,2013,36 (5):210~212.
[3] Reto Meier.Android 4高級編程(第3版)[M].佘建偉,趙凱(譯).北京:清華大學出版社.
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
文章編號:1672-8262(2015)01-113-03中圖分類號:P226+.3,P209
文獻標識碼:B
收稿日期:?2014—11—18
作者簡介:張小波(1980—),男,高級工程師,主要從事工程測量和GPS技術應用、地理信息的研究與應用。