You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 21:30:45