将坐标UTM转换为DMS

时间:2015-05-29 05:24:41

标签: c# arcgis esri

我需要将UTM转换为DMS。例如:x 6518585.31 y 13343143.32 - >度分秒。

人们引用此库esri.arcgis.defensesolutions.dll,但我无法找到下载位置。

3 个答案:

答案 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 :(得分:0)

enter image description here enter image description here

坐标系“Meters”到“Degrees Minutes Seconds”

            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返回错误的坐标

答案 2 :(得分:0)

您完全可以使用CoordinateSharp

示例

 UniversalTransverseMercator utm = new UniversalTransverseMercator("T", 32, 233434, 234234);
 Coordinate c = UniversalTransverseMercator.ConvertUTMtoLatLong(utm);
 Console.WriteLine(c); //Outputs DMS formatted coordinate by default.

您还可以访问Coordinate对象中的各个经/纬度属性。