ARCGIS PRO SDK 访问Geometry对象

一、Geometry常用对象

二、主要类

1、ReadOnlyPartCollection:Polyline 和 Polygon 使用的 ReadOnlySegmentCollection 部件的只读集合,属性成员:​

|------------------|----------------------------------|
| 名字 | 描述 |
| Count | 获取 ICollection 中包含的元素数。 |
| TIEM | 获取位于指定索引处的元素。 |
| SpatialReference | 获取或设置用于此只读部件集合的 SpatialReference |

方法: GetEnumerator 返回循环访问集合的枚举器。

2、ReadOnlyPointCollection 返回Geometry所有点(拐点或顶点)的MapPoints 的只读集合,属性成员:

|------------------|----------------------------------|
| 名字 | 描述 |
| Count | 获取 ICollection 中包含的元素数。 |
| TIEM | 获取位于指定索引处的元素。 |
| SpatialReference | 获取或设置用于此只读部件集合的 SpatialReference |

方法:

|-------------------------|--------------------------------------|
| 名字 | 描述 |
| Copy2DCoordinatesToList | 重载。 |
| Copy3DCoordinatesToList | 重载。 |
| CopyPointsToList | 将此列表中的 MapPoint 复制到给定的 MapPoint 列表中。 |
| GetEnumerator | 返回循环访问集合的枚举器。 |

三、ReadOnlySegmentCollection :Segment 类的只读集合。,属性成员:

|------------------|----------------------------------|
| 名字 | 描述 |
| Count | 获取 ICollection 中包含的元素数。 |
| TIEM | 获取位于指定索引处的元素。 |
| SpatialReference | 获取或设置用于此只读部件集合的 SpatialReference |

方法:GetEnumerator 返回循环访问集合的枚举器

四、GetEnumerator 方法:返回循环访问集合的枚举器

例如:

1、枚举数据段以获得长度

复制代码
 Dim polylineParts As ReadOnlyPartCollection = Polyline.Parts

 '枚举数据段以获得长度
 Dim Len As Double = 0
 Dim lsegments As IEnumerator(Of ReadOnlySegmentCollection) = polylineParts.GetEnumerator()
 While lsegments.MoveNext()
     Dim seg As ReadOnlySegmentCollection = lsegments.Current
     For Each s As Segment In seg
         Len += s.Length
         '类型执行一些特定的操作 
         Select Case s.SegmentType
             Case SegmentType.Line
                 MsgBox("SegmentType.SegmentType.Line")
             Case SegmentType.Bezier
                 MsgBox("SegmentType.SegmentType.Bezier")
             Case SegmentType.EllipticArc
                 MsgBox("SegmentType.SegmentType.EllipticArc")
         End Select
     Next
 End While

2、ReadOnlyPointCollection示例

复制代码
​
Dim segments As IEnumerator(Of MapPoint)
Dim parts As ReadOnlySegmentCollection
Dim x As Double 
Dim y As Double 
segments = polygon1.Points.GetEnumerator
'获取图形所有顶点坐标
Dim ppts As ReadOnlyPointCollection = polygon1.Points
'坐标总数
Dim ppts_Count As long=ppts.Count
'坐标访问
For i = 0 To ppts_Count - 1
    x = ppts.item(i).X
    y = ppts.item(i).Y
Next 

Dim enumPts As IEnumerator(Of MapPoint) = polygon1.Points.GetEnumerator()

Dim coordinates As IReadOnlyList(Of Coordinate2D) = polygon1.Copy2DCoordinatesToList()
Dim coordinate2Ds As IList(Of Coordinate2D) = New List(Of Coordinate2D)(10)
Dim subsetCoordinates2D As ICollection(Of Coordinate2D) = coordinate2Ds

'获取PPTS点集中从ID1开始,取10个坐标点,ID1是从0开始
ppts.Copy2DCoordinatesToList(ID1, 10, subsetCoordinates2D)
'subsetCoordinates2D坐标访问
For i = 0 To subsetCoordinates2D.Count - 1
    pv_x(i) = subsetCoordinates2D(i).X
    pv_y(i) = subsetCoordinates2D(i).Y
Next

​

3、获取多边形外环坐标

复制代码
'获取
ppv = poly.Points
Dim parts As ReadOnlyPartCollection = poly.Parts
dbx_zds = parts.First.Count()
dbx_zds = parts.First.Count()      '不包含闭合点
Dim coordinate2Ds As IList(Of Coordinate2D) = New List(Of Coordinate2D)
Dim subsetCoordinates2D As ICollection(Of Coordinate2D) = coordinate2Ds
ppv.Copy2DCoordinatesToList(0, dbx_zds + 1, subsetCoordinates2D)   '坐标起点序号,从0开始,共dbx_zds + 1点,含多边形闭合点
'获取的坐标在subsetCoordinates2DIList(Of Coordinate2D)

五、GeometryBag :是 Geometry 对象的异构集合,成员如下:

|------------------|-------------------------------------------------------------------------------|
| 名字 | 描述 |
| Dimension | 获取几何图形的尺寸。 (继承自 ArcGIS.Core.Geometry.Geometry) |
| Extent | 重写。 获取此实例的最小封闭信封。 |
| Geometries | 获取此 GeometryBag 中的几何图形列表。 |
| GeometryType | 重写。获取几何类型。始终返回 GeometryType.GeometryBag。 |
| HasID | 获取一个值,该值指示几何图形是否具有 ID。 (继承自 ArcGIS.Core.Geometry.Geometry) |
| HasM | 获取一个值,该值指示几何图形是否具有 M。 (继承自 ArcGIS.Core.Geometry.Geometry) |
| HasZ | 获取一个值,该值指示几何图形是否具有 Z。 (继承自 ArcGIS.Core.Geometry.Geometry) |
| IsEmpty | 重写。 获取一个值,该值指示此实例是否为空。 |
| IsKnownSimple | 指示根据数据库中存储的几何类型,此几何图形是否已知拓扑一致。 (继承自 ArcGIS.Core.Geometry.Geometry) |
| IsKnownSimpleOgc | 指示根据开放地理空间联盟 (OGC) 验证规范,此几何是否已知在 拓扑上是一致的。 (继承自 ArcGIS.Core.Geometry.Geometry) |
| Length | 获取此几何图形的长度 (继承自 ArcGIS.Core.Geometry.Geometry) |
| PartCount | 获取此实例中的零件(几何图形)数。 |
| PointCount | 重写。 获取此实例的所有部件中所有点的计数。 |
| SpatialReference | 获取此实例的空间参考。(继承自 ArcGIS.Core.Geometry.Geometry) |

方法:

|-------------|------------------------------------------------------------------------------------------|
| 名字 | 描述 |
| Clone | 克隆此几何实例。由于几何对象是不可变的,因此永远不会更改, 因此返回的克隆将是此对象,而不是 这个实例。 (继承自 ArcGIS.Core.Geometry.Geometry) |
| IsEqual | 重载。 |
| ToEsriShape | 重载。重写。 |
| ToJson | 将此几何实例序列化为 ArcGIS JSON 几何制图表达。 (继承自 ArcGIS.Core.Geometry.Geometry) |
| ToXml | 将此几何实例序列化为 ArcGIS XML 几何制图表达。 (继承自 ArcGIS.Core.Geometry.Geometry) |

相关推荐
小小弯_Shelby9 小时前
arcgis api for js 设置地图服务请求带有请求头信息
arcgis
白白李媛媛4 天前
上传Vue3+vite+Ts组件到npm官方库保姆级教程
前端·arcgis·npm
zm-v-159304339865 天前
ArcGIS 水文分析升级:基于深度学习的流域洪水演进过程模拟
人工智能·深度学习·arcgis
新中地GIS开发老师5 天前
新发布:26考研院校和专业大纲
学习·考研·arcgis·大学生·遥感·gis开发·地理信息科学
Cacciatore->5 天前
React 基本介绍与项目创建
前端·react.js·arcgis
杨超越luckly7 天前
ArcGISPro应用指南:ArcGISPro制图全流程详解
arcgis·信息可视化·gis·制图·arcgispro
~央千澈~8 天前
UniApp完全支持快应用QUICKAPP-以及如何采用 Uni 模式开发发行快应用优雅草卓伊凡
arcgis
敲敲敲-敲代码8 天前
【ArcGIS10.2】网络数据集构建---最短路径分析
网络·arcgis
人工智能教学实践9 天前
【基于Echarts的地图可视化】
arcgis
Cacciatore->9 天前
Electron 快速上手
javascript·arcgis·electron