ArcGISEngine中的几何对象分析
牟乃夏ArcEngine教程-第11章 三维分析

详细代码见程序
2. MultiPatch
• MultiPatch编辑 • MultiPatch有多种编辑操作,常用的主要有移动、旋转和缩放等。 MultiPatch的编辑需要用到ITransform3D接口,通过该接口的 Move3D、RotateVector3D和Scale3D等方法实现。实现思路如下:
2. MultiPatch
实例按钮功能介绍 按钮名称 创建axes 按钮功能 创建一个带有箭头的三维坐标轴
创建TriangleStrip
创建TriangleFan 创建Triangles 创建Ring 创建RingGroup Extrusion Composite
创建一个TriangleStrip样式的阶梯
1. 三维数据模型
• 三维数据(X,Y,Z)的定义中包含一个额外的维度:Z值。Z值具有 测量单位,同传统的二维数据(X,Y)相比,它能存储和显示更多 的信息。Z值可表示很多内容,如:海拔高度、深度、温度、化 学物浓度、噪声指数等。Z值是二维数据成为三维数据的标志。 • ArcGIS中三维数据有3D要素数据和表面数据两种形式。
• 在ArcGIS中,不能通过ArcGIS Desktop产品来创建MultiPatch,只能通过以 下几种方法创建: • 1)通过某些地理处理(Geoprocessing)工具创建,例如Extrude Between、 Layer 3D to Feature Class等。 • 2)通过从已有的模型中导入ArcGIS创建,例如SketchUp、COLLADA、3D Studio Max或OpenFlight等。 • 3)通过在ArcGIS Engine中编写代码创建。
《ArcGIS Engine开发从入门到精通》 第3章 几何对象和空间坐标系

IFeatureLayer featureLayer = layer as IFeatureLayer; IFeatureClass featureClass = featureLayer.FeatureClass; //要素类 IDataset dataset = (IDataset)featureClass; //要素类强制转换为数据集 IWorkspace workspace = dataset.Workspace; //获取要素集的工作空间 //开始空间编辑 IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)workspace; workspaceEdit.StartEditing(true); workspaceEdit.StartEditOperation(); IFeatureBuffer featureBuffer = featureClass.CreateFeatureBuffer(); IFeatureCursor featureCursor; //清除图层原有的实体对象 featureCursor = featureClass.Search(null, true); IFeature feature; feature = featureCursor.NextFeature(); while(feature != null) { feature.Delete(); feature = featureCursor.NextFeature(); }
是一个 模型概 念
就是在处理一个包含几何形体的矢量对象。在Geometry 模型中,几何形体对象分为两个层次,一个是构成要 素形状的几何图形,另一个是组成这些这些形状的构 件。前者包括Point、Multipoint、Envelope、Polyline、 Polygon等。Geometry的主要对象模型如图3-1所示。 本章着重围绕这些主要对象进行介绍。 父类,抽象类
arcengine 要素类的几何范围

arcengine 要素类的几何范围【实用版】目录1.引言2.ArcEngine 要素类的几何范围概述3.ArcEngine 要素类的几何范围的计算方法4.ArcEngine 要素类的几何范围的应用示例5.结论正文【引言】在 GIS 领域,地理要素的空间位置和范围信息是地理信息系统中的核心内容。
ArcEngine 作为 Esri 公司开发的 GIS 软件开发工具包,提供了丰富的地理要素类和相应的操作。
本篇文章将介绍 ArcEngine 要素类的几何范围及其计算方法。
【ArcEngine 要素类的几何范围概述】ArcEngine 要素类包含了几何、属性和符号等信息。
其中,几何范围是指地理要素在空间中的位置和范围信息。
这些信息可以为 GIS 分析和地图制图提供基础数据。
在 ArcEngine 中,要素类的几何范围可以通过一系列的 API 进行计算和操作。
【ArcEngine 要素类的几何范围的计算方法】在 ArcEngine 中,要素类的几何范围主要包括以下几个方面的计算:1.几何中心:几何中心的计算可以通过 GeometryEngine.Centroid 方法实现。
该方法接收一个几何对象作为输入参数,返回一个包含几何中心坐标的点对象。
2.几何边界:几何边界的计算可以通过 GeometryEngine.Boundary 方法实现。
该方法接收一个几何对象作为输入参数,返回一个包含几何边界坐标的线对象。
3.几何面积:几何面积的计算可以通过 GeometryEngine.Area 方法实现。
该方法接收一个几何对象作为输入参数,返回一个包含几何面积的数值。
【ArcEngine 要素类的几何范围的应用示例】在实际的 GIS 应用中,ArcEngine 要素类的几何范围可以被用于各种分析和地图制图任务。
例如,在城市规划中,可以通过计算不同区域的几何中心、边界和面积等信息,来进行城市用地分析、交通网络规划等任务。
gis二次开发 几何形体对象Geometry

Path几何对象 Path是连续的Segment的集合,除了路径的第一个Segment和最后一个 Segment外其余的Segment的起始点都是前一个Segment的终止点,即 Path对象的中的Segment不能出现分离,Path可以是任意数的Segment 子类的组合。
Path几何对象 该Path对象有很多我们经常用到的方法,如平滑曲线,对曲线抽稀等操作, 如下图: 。
IEnvelope接口
• 属性
– 空间坐标XMax XMin YMax YMin Height Width – 四个角点的坐标:UpperLeft UpperRight LowerLeft LowerRight – – – – – – – PutCoords:构造包络线的方法 QueryCoords:查询包络线的 Expand:按比例缩放包络线的范围 offset:偏移包络线本身 CenterAt:改变包络线的中心点 Intersect:两个包络线相交的方法 Union:两个包络线对象的并集
Polyline几何对象 Polyline是有序path组成的集合,可以拥有M、Z和ID属性值,Polyline对象的 IPointCollection接口包含了所有的节点信息,IGeometryCollection接口可以获取 polyline的paths,ISegmentCollection接口可以获取 polyline的segments。 一个Polyline对象必须满足以下准则: 1.组成Polyline对象的所有Path对象必须是有效的。 2.组成Polyline对象的所有Path对象不能重合,相交或自相交。 3.组成Polyline对象的多个Path对象可以连接与某一点,也可以分离。 4.Path对象的长度不能为0. IPolyline是Polyline类的主要接口,IPolyline的Reshape方法可以使用一个Path对象为 一个Polyline对象整形,IPolyline的SimplifyNetwork方法用于简化网络。 Polyline对象可以使用IGeometryCollection接口添加Path对象的方法来创建,使用该 接口需注意以下情况: 1.每一个Path对象必须是有效的,或使用IPath::Simplify方法后有效。 2.由于Polyline是Path对象的有序集合,所以添加Path对象时必须注意顺序和方向。 3.为了保证Polyline是有效的,可以创建完Polyline对象后使用 ITopologicalOperator接口的Simplify方法。
GIS二次开发几何对象与空间参考

国土信息工程系
交集
国土信息工程系
并集
国土信息工程系
IEnvelope运算
object Missing = Type.Missing;
IEnvelope penv, penv2, penv3;
penv = (IEnvelope)g1.Envelope;
penv2 = (IEnvelope)g2.Envelope;
5.1 几何对象概述
Geometry对象用于表达要素或元素的几何形状。 ArcGIS的几何对象被分为两个层次
一是构成要素形状的几何图形,称为“高级 几何对象”
另一种是组成这些高级几何对象的构件
国土信息工程系
GEOMETRY模型图
国土信息工程系
国土信息工程系
国土信息工程系
高级几何对象包括以下类型:
Point:具有X、Y坐标值,以及可选的属性,如高程(Z 值),测量值(M)和ID号。
Multipoint:是无序点的群集,它用于表示具有相同属 性设置的同一组点。
Polyline:是一个有序路径(Path)的集合,这些路径既可 以是连续的,也可以是离散的。
Polygon:是环(Ring)的集合,环是一种封闭的路径。 Polygon可以由一个或者多个环组成,甚至环内套环, 形成岛环的情况,但是内外环之间不能重叠。
Points are used to build Segments or Polyline
Points
图 Polyline及相关对象结构图
国土信息工程系
Polygon对象
Polygon(多边形)对象是一个有序环对象的集合, 这些环可以是一个或者多个。多边形对象通常可 以用于描述具有面积的多边形离散矢量对象。
ArcGISEngine中的几何对象分析

ConstructArcPoints构造圆弧点 ConstructDivideEqual构造等分点法
ConstructIntersection 构造交点法
ConstructDivideL的主要接口, 它定义了一系列的方法和属性来控制Ring。
• Polygon对象也可以使用 IGeometryCollection的AddSegment方法 添加Ring来产生。
GIS二次开发
湖南城市学院
13
面对象
• IPolygon对象的主要属性和方法:
四、开始编辑
IWorkspaceEdit pWorkspaceEdit = pWorkspace as IWorkspaceEdit; pWorkspaceEdit.StartEditing(true); pWorkspaceEdit.StartEditOperation(); IFeatureBuffer pFeatureBuffer = pFeatureClass.CreateFeatureBuffer(); IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, true);
例:在某个图层中添加新的要素
思路: 1、设置要素保存的图层(Layer); 2、通过在地图控件中绘制图形,获取要添加 的Geometry对象; 3、调用自定义的AddFeature方法,将 Geometry对象添加到Layer图层中。
设置图层 (Layer)
获取 Geometry对象
调用 AddFeature方法
➢ IGeometry接口的主要属性和方法: Dimension—查询几何形体对象的维度; Project—设置几何对象的空间参考属性; GeometryType—返回对象的几何类型; IsEmpty—查看对象是否为空。
ArcGIS教程:第11章 三维分析

(1)获取TIN图层,并得到TIN表面 (2)点击TIN表面一点,获得该点的高度信息、等高线和 最陡线
因为TIN能较好地表示地理现象的三维可视化
3.TIN数据
25
加载TIN数据
加载TIN数据集需要用到ITINWorkspaceFactory接口、ITINWorkspace接 口、ITIN接口和ITINLayer接口
(1)获取TIN数据的文件路径 (2)实例化一个TIN的工作空间工厂类对象 (3)提取TIN中的数据,并将其转化为一个图层 (4)添加图层并进行刷新,以显示TIN
一种是加载有限个三维点数据创建TIN 一种是加载矢量数据图层创建TIN
3.TIN数据
29
创建TIN数据
由矢量要素创建TIN
3.TIN数据
30
创建TIN数据
由矢量要素创建TIN
3.TIN数据
由离散点图层创建TIN的结果
注:生成TIN 前要先选择点 图层和设置 TIN的保存路 径
31
创建TIN数据
Triangle Strip 1.三维数据模型
Triangle Fan
Ring
3
表面数据
(1)表面数据是指具有空间连续特征的地理要素的集合 (2)表示地球表面某部分或整体范围内的地理要素或现象。 (3)ArcGIS中常用的表面数据有:
栅格表面--通过栅格数据(行和列的形式)呈现的表面 不规则三角网(TIN)--以数字形式表示表面形态 Terrain数据集--一种基于TIN的数据集
ArcEngine类库介绍

1ArcEngine类库ESRI.ArcGIS.esriSystem; //包括IArray,ISet,IFile,等一些基础底层接口和类ESRI.ArcGIS.SystemUI; //包括ICommand,ITool,等一些用户界面的接口和类ESRI.ArcGIS.Geometry; //包括点,线,面,路径,环,等核心几何对象3D,地理坐标,投影坐标等ESRI.ArcGIS.Display; //包括ISymbol,IColor,IDraw,等一些用来在地图上显示或绘制的接口和类ESRI.ArcGIS.DisplayUI; //提供一些可视化的界面去设置display里的东西ESRI.ArcGIS.Controls; //MapControl,TOC,Toolbar,Licence,PageLa yout等核心可视化组件ESRI.ArcGIS.ArcMapUI; //提供一些ArcMap自带的可视化界面的接口,实现在ArcmapESRI.ArcGIS.Framework; //提供一些程序核心对象,如IApplication,IDocument,等ESRI.ArcGIS.Carto; //包括一些数据显示的接口和类,如ILegend,IMap,ILayer,等ESRI.ArcGIS.Geodatabase;//提供操作地理数据库的接口,如IWorkspace,IDataset,IFeature,IFileds,ITin等ESRI.ArcGIS.DataSourcesFile;//提供打开矢量数据的接口,如ICoverage,ICadTransformation等ESRI.ArcGIS.DataSourcesGDB;//提供打开Access及一些SDE支持的RDBMS接口ESRI.ArcGIS.DataSourcesOleDB;//提供打开一些支持oledb的数据库的接口ESRI.ArcGIS.DataSourcesRaster;//提供打开一些栅格数据及转换数据的接口ESRI.ArcGIS.OutPut //提供一些打印、转换输出接口,如IBmpExporter================以上为一些常用到的接口除了ESRI.ArcGIS.SystemUI外其余以UI结尾的namespace均属AO的范畴1.1System类库System类库是ArcGIS体系结构中最底层的类库。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 课 题:第三讲 几何对象 • 目的要求:通过本章的学习,学习了解GIS二次
开发中用到的各种几何对象,如Geometry对象、 Envelope对象、Curve对象等。 • 教学重点:掌握GIS二次开发中的各种几何对象 • 教学难点:实际开发中熟练应用各种几何对象 • 教学课时:6 • 学术前沿:
• Segment对象是有Curve对象继承而来, 因此拥有Curve对象的方法和属性。
ISegment是Segment对象的主要接口,该接口提 供了两个方法: •SplitAtDistance •SplitDivideLength
注意:在分割Segment前会自动复制一份副本,然后对副本进 行分割,分割操作对源对象不产生影响。
• 点对象
BezierCur CircularAr EllipticAr
Line
• 线对象 • 面对象
Geometry主要对象模型
Geometry对象
➢ Geometry对象具有坐标信息,它确定了要素在地球上 的位置。Geometry对象具有如下特征:
• 用户可以通过空间过滤器(SpatialFilter)对这些要素 进行空间查询操作;
CircularArc对象可用IConstructCircularArc接口提 供的方法进行构造,该接口提供了34种构造方法。
7 Curve对象-Segment-Line
• 由起点和终点构成的一条直线段,用于 构造Polyline、Polygon、Ring和Path 等对象。
Line
ILine
• QueryCoords • PutCoords
主要内容
• Geometry对象 • Envelope对象
Geometry
• Curve对象 Segment对象
Envelope
Curve
Point Multipoint
Path对象
Path
Segment PolyCurve
Ring对象
Ring
PolyCurve对象
Polyline Polygon
• Envelope也称包络线,是一个矩形区域, 是每个几何形体的最小外接矩形。
属性: • XMax • Xmin • YMax • Xmin • Height • Width
方法: • Expand • Offset • CenterAt • PutCoords • Intersect • Union
➢ IGeometry接口的主要属性和方法: Dimension—查询几何形体对象的维度; Project—设置几何对象的空间参考属性; GeometryType—返回对象的几何类型; IsEmpty—查看对象是否为空。
Geometry对象
C:\Program Files\ArcGIS\DeveloperKit\Diagrams\GeometryObjectModel.pdf
3 Curve对象
• 曲线对象。除了点、点集、包络线外, 可以将其他的几何体都看做是曲线 (Curve),如Line、Polyline、Path、 CircularArc、Polygon等,这些对象都 实现了ICurve接口。
ICurve
主要属性: •FromPoint •ToPoint •ReverseOrientation •IsClose
IConstructLine
• ConstructAngleBisectoris • ConstructExtended
8 Curve对象-Path对象
• 连续多个Segment对象的集合,每个 Segment通过首尾相连构成一条路径。 IPath是Path对象的主要接口。
• Path对象可以由两种途径构造:
说明:ICurve接口的 属性和方法,只能操 作已有曲线对象,不 能用于产生新的曲线 对象。
4 Curve对象
Curve对象 子对象
Segment
Path
Ring
PolyCurve
CircularArc
Line
EllipticArc
BezierCurve
5 Curve对象-Segment对象
• Segment是由一个起点和终点,以及定 义这两点之间的曲线函数组成的几何形 体对象。
6 Curve对象-Segment-CircularArc
• CircularArc的主要接口为ICircularArc, 主要属性:
FromAngle ChordHeight
ToAngle
CentralAngle CenterPoint
IsLine
IsPoint
IsMinor
IsCounterClockwise
➢ 使用ISegmentCollection接口的AddSegment 方法为Path对象添加子元素;
➢ 使用IConstructPath接口的 ConstructRigidStretch方法,旋转或缩放一个 已经存在的Path对象的形状。
• 可以进行空间运算,如缓冲区分析、相交、合并等。
Geometry
Geometry对象 及其坐标信息
空
间
查 询
对 象
的
Geometry对象
➢ Geometry类是所有几何形体对象的父类,是一个抽象 类,Geometry类实现了IGeometry接口。
? Geometry类和Geometry对象的关系是什么? Geometry类和IGeometry接口的关系是什么?
Geometry对象
➢ 例:添加Geometry对象
Private void AddFeature(string LayerName, IGeometry Geometry)
{ FeatureCursor = FeatureClass.Insert(true); FeatureBuffer.shape = Geometry; object FeatureOID = FeatureCursor.InsertFeature(FeatureBuffer); FeatureCursor.Flush();
}
Байду номын сангаас
• 思考题:
• 1. 各几何对象有哪些重要属性和方法?
• 2. 如何在某个图层中添加点、线、面要 素?请写出关键代码。
• 教学总结:
• 本次课程介绍了ArcGIS Engine开发中用 到的各种几何对象,重点在于理解这些对 象及其属性、方法,并能在实际开发中熟 练运用这些属性和方法。
2 Envelope对象