ArcGIS Runtime API for .NET——空间和数据分析
几何运算可创建代表现实世界对象的几何,并比较和关联这些形状。
例如,你可能要测量代表湖泊或地区的多边形的面积。 也许你有多个几何形状,并且想知道它们之间的关系。 几何是执行空间分析的基本元素。 使用ArcGIS Runtime,可以通过几乎无数种方式关联几何来执行空间分析。 一些实例包括:
(1)在地图上的单击位置,显示土地面积的植被类型。
(2)验证图层中的所有建筑物多边形完全位于另一图层中的一个宗地多边形内。
(3)确定拟议的业务地点是否在任何竞争对手的300米范围内。
(4)查找最靠近火灾边缘的房屋。
(5)计算城市边界内已铺设道路的总长度。
一.创建几何
该API包括一个Geometry基类。 下表总结了从该类继承的类。 有关详细信息,请参见几何主题。
MapPoint
Multipoint
Segment
Polyline
Polygon
Envelope
二.几何构造器
几何形状是不可变的。 不可变的几何形状(无法更改的几何形状)为您的应用程序提供了一些重要的好处。它们可以防止几何被意外更改,并且允许某些性能优化。
尽管不变的几何图形似乎给编辑现有几何图形带来了问题,但这些问题可以通过使用几何图形生成器来解决。 几何图形生成器旨在表示正在构造的几何图形的状态,同时允许进行修改,从而使编辑工作流成为可能。
使用适当的构建器来处理每种类型的现有几何(例如,PolygonBuilder可以与Polygon一起使用)。
三.几何引擎
GeometryEngine可用于执行几何运算,测量几何形状,评估空间关系以及将几何形状投影到新的空间参考上,所有这些操作均在客户端上本地进行。 每个几何引擎方法都是静态的,这意味着可以直接在类上调用它们(无需实例化对象)。
四.将几何体投影到新的空间参考
有时,你可能在具有特定空间参考的地图或服务中具有几何图形,并希望在具有不同空间参考的地图上显示几何图形。 GeometryEngine允许通过简单的方法调用来执行此操作。 投影时,与修改几何对象相似,传入的几何对象的实例实际上并没有更改。 而是返回一个新的几何对象。 投影时,可以应用特定的变换。 不同的转换适用于世界的不同区域或不同的空间参考。
有关使用空间参考的更多详细信息,请参见空间参考主题。
五.测量距离
通常,你想知道几何图形的长度或面积。 你可能想知道一条河流的长度或一个县的面积。 有多种使用几何引擎测量长度和面积的方法。 您可以使用Length()和Area()方法测量简单的距离和面积。
但是,如果要测量的大区域或距离需要考虑地球的曲率,请使用LengthGeodetic()或AreaGeodetic()方法。
不相交的几何可以相互之间的距离进行比较,如下所示:
Distance(距离)-两个几何之间最接近的点之间的二维平面距离。
Nearest vertex(最近的顶点)-最接近指定点的线或面边界上的顶点。
Nearest coordinate(最近的坐标)-最接近指定点的线或面的边界上的坐标。 该坐标不必是顶点。
六.几何运算
可以通过执行以下操作,使用GeometryEngine从现有几何图形创建新的几何图形:
Buffer(缓冲)-在指定距离处缓冲几何图形,从而创建一个缓冲多边形。
Clip(剪切)-通过剪切包含信封的几何来创建几何。
Densify(密集化)-通过在现有顶点之间添加顶点来创建输入几何的密集副本。
Difference(差异)-创建是两个几何的拓扑差异的几何。
Offset(偏移)-创建输入几何的偏移版本。
Union(并集)-创建一个几何图形,该几何图形是两个或多个几何图形的并集。
Intersection(交集)-创建是两个几何的拓扑交集的几何。
Symmetric (对称差异)-创建是两个几何的拓扑对称差异的几何。
Simplify(简化)-根据几何类型使几何在拓扑上保持一致。 例如,它可纠正可能是自相交或包含不正确的环方向的多边形。
七.空间关系
当地图上有多个几何图形时,你可能想知道它们之间的关系。例如,你可能想知道代表小河的折线是否穿过给定的多边形。给定两个几何对象,几何引擎可以告诉这些几何的给定空间关系是否正确。空间关系取决于几何的边界或内部是否相交。对于每种基本几何类型,边界和内部的含义都得到了很好的定义。
Boundary(边界)-对于线,线的端点或多部分线中每条线的端点。对于多边形,是外接一个或多个内部区域(对于多部分多边形)或外接任何内部孔的线。
Interior(内部)-点完全是内部的,没有边界。对于线和面,内部是几何中不属于边界的任何部分。
GeometryEngine支持的基本关系如下:
Contains(包含)-基本几何完全包含比较几何。
Crosses(交叉)-几何共享一些内部区域,但不共享所有内部区域。
Disjoint(不相交)-基础几何的任何部分都不会与比较几何相交。
Intersects(相交)-不相交。
Overlaps(重叠)-两个点,线或面的交点分别也是点,线或面。
Touches(接触)-几何的边界相交,但内部不相交。
Within(内部)-基础几何完全位于比较几何内。
Equals(等于)-如果两个输入几何形状相同,则为真。如果为null,具有不同的几何类型或几何上不同,则为False。
对于每个空间关系,都有一种方法返回一个布尔值,该值指示该关系在两个几何中是否为真。对于仅适用于一种几何而不适用于另一种几何的空间关系(例如“内部”或“包含”),几何引擎将考虑输入的几何顺序。