ArcGIS WebMercator和Wgs84转换

问题描述 投票:-2回答:1

我正在使用ArcGIS .NET提供可在其上绘制多边形的地图。最初,我仅使用默认的WebMercator点,但必须集成使用Wgs84纬度和经度坐标的现有数据库。

因此,现在绘制多边形时,我先将其点从WebMercator转换为Wgs84,然后再将其保存到数据库中。当再次从数据库中加载该多边形时,我将其转换回WebMercator,然后再显示。但是我注意到多边形的点现在稍微偏离了。我发现自己的转变很糟糕here;在我为南非找到的四架飞机中,最接近1505架。

这是WebMercator的Wgs84,我在其他方面也做类似的事情。

MapPoint point = new MapPoint(lon, lat, SpatialReference.Create(4326));  

GeographicTransformationStep geoStep = new GeographicTransformationStep(1505);
GeographicTransformation geoTransform = new GeographicTransformation(geoStep);  

MapPoint convertedPoint = (MapPoint)GeometryEngine.Project(point, SpatialReference.Create(3857), geoTransform);

return new double[] { convertedPoint.X, convertedPoint.Y };

因此,这是多边形的WebMercator点,然后将其保存到数据库。[3121076.7072101468,-3057977.9195277137],[3121229.5809632977,-3055226.1919710007],[3127268.0942127509,-3054767.5707115484],[3127726.7154722032,-3058512.9776637414],[3121076.7072101468,-3057977.9195277137]

现在,多边形将转换为Wgs84并保存在数据库中。当它再次显示时,我从Wgs84转换回WebMercator。[3121076.7072101426,-3057977.9195277165],[3121229.5809632982,-3055226.1919709952],[3127268.094212749,-3054767.5707115442],[3127726.7154722032,-3058512.9776637396],[3121076.7072101426,-3057977.9195277165]

因此存在细微差异。转换后,有什么方法可以使这些坐标完全相同?或者我在想,也许这些差异是如此之小,以至于它们甚至都不会被注意到。我在第二个多边形下面显示了第一个多边形(从上面的坐标开始),并且在很高的缩放比例下,我看不到点之间的任何区别。

我在保存到数据库之前测试了第一次转换(WebMercator转换为Wgs84),并且这个转换似乎已经死了。但是第二次转换(从Wgs84到WebMercator的转换)似乎是稍有差异的地方。

.net wpf mapping transformation arcgis
1个回答
0
投票

如注释中所提到的,从WGS84投影到Web Mercator时,只需使用带有两个参数的Project方法。我假设运行时API

尽管我会说您所看到的差异可以忽略不计。

MapPoint wmPoint= (MapPoint) GeometryEngine.Project(wgs84Point, SpatialReferences.WebMercator);
MapPoint wgs84Point = (MapPoint) GeometryEngine.Project(wmPoint, SpatialReferences.Wgs84);
© www.soinside.com 2019 - 2024. All rights reserved.