2015-05-29 112 views
-2

我需要將UTM轉換爲DMS。例如:x 6518585.31 y 13343143.32 - >度分秒。將座標UTM轉換爲DMS

人們引用此庫esri.arcgis.defensesolutions.dll,但我找不到要下載它的地方。

+0

我不得不這樣做是谷歌「[ESRI .arcgis.defensesolutions.dll](https://www.google.com/search?q=esri.arcgis.defensesolutions.dll)」。 –

+0

它? 116 MB。 http://www.esri.com/apps/products/download/index.cfm?fuseaction=download.main&downloadid=672 –

+0

是的,很容易找到。爲什麼沒有找到它? –

回答

2

嘗試ArcGIS Runtime SDK for .NET。您可以免費下載並使用它進行座標轉換。 Sample code可用,但這裏是您需要做的相關代碼。您可以使用http://spatialreference.org/ref/查找UTM區域的WKID;我使用的是32642,這是基於WGS84的UTM區域42N的WKID。

var utmSpatialReferenceWkid = 32642;//UTM zone 42N based on WGS84 
var pointUtm = new MapPoint(6518585.31, 13343143.32, utmSpatialReferenceWkid); 
var pointLonLat = GeometryEngine.Project(pointUtm, SpatialReference.Wgs84); 
var longitude = pointLonLat.X; 
var latitude = pointLonLat.Y; 

的defensesolutions DLL你提到的是舊的技術,你需要一個ArcGIS Desktop或Engine許可使用它,它會帶來成本。改爲使用ArcGIS Runtime。

+1

我加入了Esri.ArcGISRuntime項目。 錯誤:無法找到類型或命名空間名稱'Esri'(缺少使用指令或程序集引用嗎?) –

+0

該項目使用庫ESRI.ArcGis。*** 10.0.0.0版 –

0

enter image description here enter image description here

座標系 「米」 到 「度分秒」

  ISpatialReferenceFactory srEnv = new SpatialReferenceEnvironmentClass(); 
      var wgsIn = srEnv.CreateESRISpatialReferenceFromPRJFile(@"C:\111.prj"); 
      var wgsOut = srEnv.CreateESRISpatialReferenceFromPRJFile(@"C:\222.prj"); 

      var point = new PointClass(); 
      point.PutCoords(3304534.9530999996, 6859385.3066000007); 
      point.Project(wgsIn); 

      var dmsCoord = new DMSCoordinate 
      { 
       Precision = esriCoordinatePrecision.esriCPOneMeter, 
       InputSpatialReference = wgsIn, 
       OutputSpatialReference = wgsOut, 
       Point = point 
      }; 

      var dsd = dmsCoord.String; 

dmsCoord.String返回不正確的座標