1. 程式人生 > >ArcGIS for Android中座標的轉換

ArcGIS for Android中座標的轉換

      在我們的GIS應用專案裡,常常遇見座標轉換的問題。最常見的就是WGS84座標轉其他座標系,原因是WGS84座標系是目前GPS資料採集所用的座標系,而我國實際生產專案裡常用的地圖卻是北京54座標系,西安80座標系以及中國大地2000座標系等。所以當我們用裝置採集到GPS經緯度以後,需要將其進行座標轉換才可以正確顯示到我們使用的地圖上。

      對於座標轉換,有一種高精度而且任何時候都可以採用的方法是七引數座標轉換法,對於這種方法,我在之前一篇部落格進行了詳細的說明,地址是:http://blog.csdn.net/bit_kaki/article/details/52733429 。

      但是在實際情況下,我們不一定擁有七引數,而且對採集的精度要求也並不那麼高。在這個時候,其實ArcGIS for Android的庫裡已經給我們封裝了個一個方法,我們可以直接呼叫就可以。這個方法就是

public static Geometry project(Geometry geometry, SpatialReference inputSR, SpatialReference outputSR) {
    return GeometryEngineCore.project(geometry, inputSR, outputSR);
}

      這個方法裡三個引數分別是需要轉換向量物件(點、線、面),輸入物件的空間參考座標系,輸出物件的空間參考座標系。最後得到一個轉換後的向量物件。

      比如我們程式裡的MapView引數為mMapView,那麼要將一個點從WGS84座標系轉換為MapView上載入圖層的座標系,我們只需要:

Point point=(Point) GeometryEngine.project(wgs, SpatialReference.create(4326),mMapView.getSpatialReference());

      其中wgs是一個WGS84座標系上的點的座標,SpatialReference.create(4326)指的是輸入點的空間座標系mMapView.getSpatialReference()是mMapView目前載入圖層所使用的座標系。

      方法挺簡單的,但是對於這個方法我們可以稍作一下研究裡面SpatialReference引數的意義。

      SpatialReference在指的ArcGIS裡的地理座標系物件,裡面主要包含了五個引數:

  • WKID:空間參考系統編號。
  • WKT:空間參考系統文字。
  • Unit:空間參考系統單位。
  • Tolerance:系統容差。
  • GCS:地理座標系。
      這五個引數裡第一個或者第二個是必須存在的,根據編號或者文字就可以獲取到對應的空間座標系。其中通過WKID來建立地理座標系物件是最常見的,WKID,全稱是Well Known ID,即ArcGIS對眾多的空間座標系進行的編號。只要我們知道空間參考座標系所對應的編號,就可以通過這個編號獲取到該控制元件參考座標系。比如上個例子用到的SpatialReference.create(4326),4326對應的是WGS84座標系,所以SpatialReference.create(4326)就是WGS85地理座標系物件了。       通過閱讀Esri官方SDK文件,可以知道投影座標列舉esriSRProjCSType包含1442個WKID,esriSRProjCS4Type包含1224個WKID。在這裡將國內常用座標系統的WKID整理如下:
類別 WKID 名稱
地理座標 4214  GCS_Beijing_1954 
地理座標 4326  GCS_WGS_1984 
地理座標 4490  GCS_China_Geodetic_Coordinate_System_2000 
地理座標 4555  GCS_New_Beijing 
地理座標 4610  GCS_Xian_1980 
投影座標 2327  Xian_1980_GK_Zone_13 
投影座標 2328  Xian_1980_GK_Zone_14
投影座標 2329  Xian_1980_GK_Zone_15 
投影座標 2330  Xian_1980_GK_Zone_16 
投影座標 2331  Xian_1980_GK_Zone_17 
投影座標 2332  Xian_1980_GK_Zone_18 
投影座標 2333  Xian_1980_GK_Zone_19 
投影座標 2334  Xian_1980_GK_Zone_20 
投影座標 2335  Xian_1980_GK_Zone_21 
投影座標 2336  Xian_1980_GK_Zone_22
投影座標 2337  Xian_1980_GK_Zone_23 
投影座標 2338  Xian_1980_GK_CM_75E 
投影座標 2339  Xian_1980_GK_CM_81E 
投影座標 2340  Xian_1980_GK_CM_87E 
投影座標 2341  Xian_1980_GK_CM_93E 
投影座標 2342  Xian_1980_GK_CM_99E 
投影座標 2343  Xian_1980_GK_CM_105E 
投影座標 2344  Xian_1980_GK_CM_111E
投影座標 2345  Xian_1980_GK_CM_117E 
投影座標 2346  Xian_1980_GK_CM_123E 
投影座標 2347  Xian_1980_GK_CM_129E 
投影座標 2348  Xian_1980_GK_CM_135E 
投影座標 2349  Xian_1980_3_Degree_GK_Zone_25 
投影座標 2350  Xian_1980_3_Degree_GK_Zone_26 
投影座標 2351  Xian_1980_3_Degree_GK_Zone_27 
投影座標 2352  Xian_1980_3_Degree_GK_Zone_28 
投影座標 2353  Xian_1980_3_Degree_GK_Zone_29 
投影座標 2354  Xian_1980_3_Degree_GK_Zone_30 
投影座標 2355  Xian_1980_3_Degree_GK_Zone_31 
投影座標 2356  Xian_1980_3_Degree_GK_Zone_32 
投影座標 2357  Xian_1980_3_Degree_GK_Zone_33 
投影座標 2358  Xian_1980_3_Degree_GK_Zone_34
投影座標 2359  Xian_1980_3_Degree_GK_Zone_35 
投影座標 2360  Xian_1980_3_Degree_GK_Zone_36 
投影座標 2361  Xian_1980_3_Degree_GK_Zone_37 
投影座標 2362  Xian_1980_3_Degree_GK_Zone_38 
投影座標 2363  Xian_1980_3_Degree_GK_Zone_39 
投影座標 2364  Xian_1980_3_Degree_GK_Zone_40
投影座標 2365  Xian_1980_3_Degree_GK_Zone_41 
投影座標 2366  Xian_1980_3_Degree_GK_Zone_42 
投影座標 2367  Xian_1980_3_Degree_GK_Zone_43 
投影座標 2368  Xian_1980_3_Degree_GK_Zone_44 
投影座標 2369  Xian_1980_3_Degree_GK_Zone_45 
投影座標 2370  Xian_1980_3_Degree_GK_CM_75E

相關推薦

ArcGIS for Android座標轉換

      在我們的GIS應用專案裡,常常遇見座標轉換的問題。最常見的就是WGS84座標轉其他座標系,原因是WGS84座標系是目前GPS資料採集所用的座標系,而我國實際生產專案裡常用的地圖卻是北京5

arcgis for android經緯度座標轉換成投影座標

下面是實現將經緯度座標轉換成投影座標的方法  double locy = loc.getLatitude(); double locx = loc.getLongitude();Point wgspoint = new Point(locx, locy);Point m

Arcgis for Js 之座標轉換

                      我們在做gis專案的時候會經常遇到座標轉換的問題,我最近就是遇到客戶要求無論輸入什麼座標系的座標都要能在天地圖上定位,我查看了下js api發現GeometryService類有提供方法project               

ArcGIS座標轉換與投影變換

1 、柵格資料的投影變換 1  1.1定義投影 1  1.2檢視投影 3  1.2.1 在ArcCatalog中檢視資料的投影資訊 3  1.2.2在ArcMap中檢視資料的投影資訊 3  1.3投影變換 4  2、向量資料的投影變換 6  2.1 定義投影 6  2.2檢視

Arcgis for Android 空間數據WKT與JSON描述

nbsp gis str ext 10.9 select exception json字符串 spatial 點線面數據標準格式 一、 點 WKT: POINT(-118.4 -45.2) JSON: { "x": -118.4, "y": -45.2, "

Arcgis for android的離線數據庫小記

pan eat 下載失敗 roi 一模一樣 數據 ID 找到 code 最近在使用arcgis for android,要實現本地數據的編輯,esri的解決方案搞的太復雜,遇到了不少問題,特此記錄 1.Desktop生成的runtime geodatabase無法在本地進

如何在ArcGIS for Desktop實現批量任務?

ModelBuilder 是 ArcGIS for Desktop 產品中最可愛的功能之一,它可以儘可能免程式碼地將我們從重複勞動中解放出來。使用 ModelBuilder 的過程常常被比喻為“搭積木”,我們只需要拿著 ArcGIS for Desktop 中為我們提供的“積木”去搭建滿

arcgis for android 呼叫公網天地圖註記重影問題

      最近在android專案開發中,使用arcgis for android 地圖api呼叫公網的天地圖。有一個問題,天地圖的註記層,在地圖縮放的時候重新整理滯後,導致註記層有重影,使用者體驗差。    &nb

ArcGIS for qml - 地址地標轉換為經緯度(地理編碼)

實現輸入地址地標轉換為其經緯度 源地址:https://www.cnblogs.com/suRimn/p/9963221.html   一、地理編碼 1、地理編碼含義 地址編碼(或地理編碼)是使用地址中包含的資訊來插入地圖上的相應位置的過程。使用參考資料來源(稱為定

SLAM“camera類座標轉換"方法解讀

/* p_p : position_pexil ; p_c:position_camera ; p_w : position_world ; T_c_w : 歐式矩陣(包含R,t資訊) from camera to world cpp功能:實現關於pexil,camera,worl

ArcGIS for Android 100.3的學習與應用(三) 實現地圖新增自定義指北針

圖為高德地圖實現指北針的效果,那麼ArcGIS如何實現呢? 實現方式: 新增地圖的旋轉監聽: map.addMapRotationChangedListener(new MapRotationChangedListener() { @Override

ArcGIS for Android 100.3的學習與應用(二) 如何移除指定的點和線?

在地圖上新增點和線的時候,我們有時候會遇到要移除或者切換指定的點和線的操作。那麼如何移除指定的點和線呢? ArcGIS的api裡點和線都是由GraphicsOverlay類來進行建立新增的。通過Graphic物件將點或者線的圖形物件(SimpleMarkerSymbol,SimpleLine

ArcGIS for Android 100.3的學習與應用(一) 如何繪製點和線?

平時工作中,我們接觸到的地圖類開發平臺有很多,最常用的有高德,百度,騰訊地圖。而且它們都有自己的開發者平臺和文件供我們使用。基本能滿足我們的業務需求。 由於公司裡的專案會涉及一些地圖資料統計和展示方面的需求,同時也會發布一些地圖服務,所以選擇了使用在地圖方面比較牛逼的ArcGIS。 把平時遇

ArcGIS for Android載入WMS(1)——WMS基本介紹

今天開始寫ArcGIS for Android載入WMS系列的一些記錄,主要包括WMS的基本介紹,ArcGIS for Android載入WMS,用MapGuide和GeoServer釋出WMS並在ArcGIS for Android中載入以及其中存在的一些問題等。因為前兩天

SLAM“camera類座標轉換"方法解讀

/* p_p : position_pexil ; p_c:position_camera ; p_w : position_world ; T_c_w : 歐式矩陣(包含R,t資訊) from camera to world cpp功能:實現關於pe

ArcGIS for Android 的學習與應用(二) 如何移除指定的點和線?

在地圖上新增點和線的時候,我們有時候會遇到要移除或者切換指定的點和線的操作。那麼如何移除指定的點和線呢? ArcGIS的api裡點和線都是由GraphicsOverlay類來進行建立新增的。通過Graphic物件將點或者線的圖形物件(SimpleMarkerSy

mono for android使用dapper或petapoco對sqlite進行資料操作

在mono for android中使用dapper或petapoco,很簡單,新建android 類庫專案,直接把原來的檔案複製過來,對Connection連線報錯部分進行註釋和修改就可以運行了.(用可移植類庫PCL專案也可以的.) 如果需要原始碼可以聯絡我.10元收費哈.. 以下內容包括 1.在安卓中建

【月入41萬】Mono For Android使用百度地圖SDK

    藉助於Mono For Android技術,.Net開發者也可以使用自己熟悉的C#語言以及.Net來開發Android應用。由於Mono For Android把Android SDK中絕大部分類庫都已經實現,基本直接參考Java開發Android的書就可以掌握Mono for android技術。

ArcGIS for Android示例解析之地圖旋轉-----MapRotation

  MapRotation 新增地圖控制元件,並且為地圖容器中新增地圖服務上面已經介紹完了,下面我們來個複雜一點的,這個例子主要實現了地圖的旋轉功能,下面來看一下應用的佈局檔案main.xml,內容如下: <com.esri.android.map.MapView

ArcGIS for Android示例解析之高亮要素-----HighlightFeatures

  HighlightFeatures 要素高亮化功能,相信有其他gis開發經營的開發人員都有過相應的實現經驗,對於高亮要素,簡單說起來就是我們查詢的或識別出來的要素進行渲染,讓其突出顯示而已,這個例子中涉及後面要介紹的識別的內容,我們只簡單介紹相關的知識,主要介紹要素物件