我需要将UTM转换为DMS。例如:x 6518585.31 y 13343143.32 - >度分秒。
人们引用此库esri.arcgis.defensesolutions.dll,但我无法找到下载位置。
答案 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)
坐标系“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
对象中的各个经/纬度属性。