将屏幕点转换为SP 4326
本文关键字:SP 4326 转换 屏幕 | 更新日期: 2023-09-27 17:59:54
我将Esri用于。NET。我使用ScreenToLocation函数通过鼠标点击捕获屏幕坐标。如何将此映射点转换为4326的SP?
MapPoint mapPoint = Mapview.ScreenToLocation(screenPoint);
我的地图点不是我点击地图的地方。我得到的坐标是5423799.44921864,-267641.097678069
您使用的是windows商店的ArcGIS运行时还是wpf的运行时?
不管怎样,你得到了WebMercator积分。为了在空间引用之间进行转换,您需要使用wpf上的GeometryService或winstore 上的GeometryEngine的项目方法
或者,如果你喜欢通过代码同步地将WebMercator(102100/3857)转换为WGS84(4326),你可以使用:
private const double R_MAJOR = 6378137.0;
private const double R_MINOR = 6356752.3142;
public MapPoint PointToWGS84(double x, double y)
{
double originShift = 2 * Math.PI * R_MAJOR / 2.0;
double mx = (x / originShift) * 180.0;
double my = (y / originShift) * 180.0;
my = (180 / Math.PI) * (2 * Math.Atan(Math.Exp(my * Math.PI / 180.0)) - Math.PI / 2.0);
return new MapPoint(mx, my, new SpatialReference(WGS84));
}
从WGS84转到WM
public MapPoint PointToWM(double x, double y)
{
double originShift = 2 * Math.PI * R_MAJOR / 2.0;
double mx = x * originShift / 180.0;
double my = Math.Log(Math.Tan((90.0 + y) * Math.PI / 360.0)) / (Math.PI / 180.0);
my = my * originShift / 180.0;
return new MapPoint(mx, my, new SpatialReference(102100));
}
请注意,此代码仅适用于WM/WGS。对于其他转换,您必须始终使用GeometryService