ArcGIS 运行时 :如何将点的单位从度转换为米



我有两个坐标系(Wgs84(相同的几何体,但它们的数据单位不同,一个是度,另一个是米。我需要对它们执行一些操作,比如:

var g1 = GeometryEngine.Difference(geometry1, geometry2);

但我有一个错误:

System.ArgumentException:'Invalid argument: geometry1 and geometry2 must have equivalent spatial references.'

所以我想把度数的数据转换成米的数据,我不知道怎么做

以米为单位的数据来自shp文件。此shp文件已加载到SceneView中。

以度为单位的数据来自SceneView:的PreviewMouseLeftButtonDown事件

// Get the mouse position.
Point cursorSceenPoint = mouseEventArgs.GetPosition(MySceneView);
// Get the corresponding MapPoint.
MapPoint onMapLocation = MySceneView.ScreenToBaseSurface(cursorSceenPoint);

然后我想是否可以通过设置SceneView.SpatialReference.Unit来修改单元,但它是只读的。

.NET解决方案是最好的,其他语言也是可以接受的。

大多数几何体引擎操作都要求所有几何体位于同一空间引用中。正如错误所指出的,事实并非如此。在执行任何几何引擎操作之前,您可以使用以下代码将geometry2转换为与geometry1的空间参考相匹配(反之亦然(:

if (!geometry1.SpatialReference.IsEqual(geometry2.SpatialReference))
geometry2 = GeometryEngine.Project(geometry2, geometry1.SpatialReference);

SceneView始终以wgs84 lat/long为单位返回坐标。

var point1 = ...;
var point2= GeometryEngine.Project(point1, YourNewSpatialReference) as MapPoint;
public static Geometry? Project(Geometry geometry, SpatialReference outputSpatialReference);
public static Geometry? Project(Geometry geometry, SpatialReference outputSpatialReference, DatumTransformation? datumTransformation);

相关内容

  • 没有找到相关文章

最新更新