僅限於如下ArcGIS在線地圖服務(高德提供數據):
//概述:彩色中文含興趣點版中國基礎地圖 //投影:WGS 1984 Web-Mercator //切片格式:MIXED90 //服務類型:基礎地圖服務 //數據提供商:高德軟件有限公司 //數據獲取時間:2014年秋季 //地圖最后更新時間:2015年3月1日 //版權所有:北京捷泰天域信息技術有限公司 String chinaMapURL = "http://cache1.arcgisonline.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer";
在使用上述地圖服務進行APP開發時,發現手機GPS定位后的位置在地圖上存在較大偏差,想必這應該是地圖審查后導致的問題。如下圖:紅圈中心紅點處為真實位置,黃色圖釘符號為未糾偏位置:
采用了一個簡單的方法進行局部區域(山東淄博)坐標糾偏:
1、打開GPS,首先使用未糾偏的手機APP測出偏移后的坐標;
2、在本地地圖上找出真實的地理坐標;
3、進行投影變換(經緯度到Web墨卡托);
4、計算坐標差,進行局部參數糾偏,代碼如下:
1 package cn.edu.sdut.duchazhushou; 2 3 import com.esri.core.geometry.GeometryEngine; 4 import com.esri.core.geometry.Point; 5 6 /** 7 * Created by jeff on 2015/5/19. 8 */ 9 public class ClsGeometryEngine_AdjustedWarpper { 10 public static double adj_x = 649.3711175937206; 11 public static double adj_y = 38.62131773866713; 12 13 public static Point project_point_adjusted(Point geometry, com.esri.core.geometry.SpatialReference inputSR, com.esri.core.geometry.SpatialReference outputSR) { 14 Point pnt = (Point) GeometryEngine.project(geometry,inputSR,outputSR); 15 pnt.setXY(pnt.getX()+adj_x, pnt.getY()+adj_y); 16 return pnt; 17 } 18 }
實測該地圖服務在山東淄博區域內,東西方向坐標偏差約為649.37米,南北方向坐標偏差約為38.62米。
上述數據均為Android手機所帶GPS功能測得,誤差約為3~4米。