C# UWP应用中基于ArcGISRuntime实现UTM坐标显示方法问询
在ArcGIS Runtime for .NET (UWP)中实现UTM坐标转换与显示
核心思路
ArcGIS Runtime没有直接返回UTM坐标的属性,但可以通过坐标投影转换实现,步骤分为:确定目标UTM空间参考、投影转换原始坐标、格式化UTM坐标字符串。
1. 计算当前坐标对应的UTM带号与半球
UTM按经度每6度分带,带号范围1-60,北半球/南半球区分北向坐标的基准。Coordinate.Point.Position默认是WGS84坐标系(空间参考ID 4326),据此计算:
- 带号公式:
带号 = (int)Math.Floor((经度 + 180) / 6) + 1 - 半球判断:纬度 ≥ 0 为北半球,否则为南半球
2. 执行坐标投影转换
使用GeometryEngine.Project方法将原始WGS84坐标投影到目标UTM空间参考:
using Esri.ArcGISRuntime.Geometry; // 获取当前位置的WGS84坐标 MapPoint wgs84Point = new MapPoint( coordinate.Point.Position.Longitude, coordinate.Point.Position.Latitude, SpatialReferences.Wgs84); // 计算UTM带号与半球 int utmZone = (int)Math.Floor((wgs84Point.X + 180) / 6) + 1; bool isNorthHemisphere = wgs84Point.Y >= 0; // 创建UTM空间参考 SpatialReference utmSr = SpatialReference.CreateUtm(utmZone, isNorthHemisphere); // 投影坐标到UTM MapPoint utmPoint = (MapPoint)GeometryEngine.Project(wgs84Point, utmSr);
3. 格式化UTM坐标显示
UTM坐标由带号+半球、东向值(Easting)、**北向值(Northing)**组成,格式化示例:
// 保留两位小数格式化坐标 string utmCoordinate = $"UTM {utmZone}{(isNorthHemisphere ? "N" : "S")}: " + $"E {utmPoint.X:F2}, N {utmPoint.Y:F2}"; // 将结果绑定到UI控件(如TextBlock) YourUtmDisplayTextBlock.Text = utmCoordinate;
注意事项
- 若应用覆盖跨180度经线的区域,需处理边界情况(例如经度=180时,带号为60)
- 若原始坐标不是WGS84,需先转换为WGS84再进行UTM投影
内容的提问来源于stack exchange,提问作者joseph
相关产品推荐
相关产品推荐

