ArcGISEngine中的几何对象分析

合集下载

牟乃夏ArcEngine教程-第11章 三维分析

牟乃夏ArcEngine教程-第11章  三维分析
创建一个TriangleFan样式的棱锥 创建Triangles样式的多个三角片 创建一个Ring样式的迷宫 创建四个Ring样式的正方形环 拉伸一个正方形为棱柱 创建一个综合的房子样式
详细代码见程序
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章 几何对象和空间坐标系

《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 要素类的几何范围

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

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二次开发几何对象与空间参考

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中的几何对象分析

ArcGISEngine中的几何对象分析
• IConstructMultipoint接口定义了 Multipoint对象的属性和方法,接口中定 义了5种构造方法:
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章 三维分析

ArcGIS教程:第11章 三维分析
获得TIN表面某点的高度及该点所在的等高线和最陡线,需要使用 ISurface接口,通过ISurface接口的GetElevation方法、GetContour方法和 GetSteepestPath方法获取相应信息。
(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类库介绍

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体系结构中最底层的类库。

arcengine之Geometry对象模型

arcengine之Geometry对象模型

arcengine之Geometry对象模型(一)《转自ESRI中国》arcengine之Geometry对象模型(一)《转自ESRI中国》Geometry是ArcGIS Engine中使用最为广泛的对象集之一,用户在创建、删除、编辑和进行地理分析的时候,就是处理一个包含几何形体的矢量对象;除了显示要素意外,控件对象选择,要素符号化,标注要素,编辑要素都需要Geometry参与。

图1是Geometry的主要几何对象模型图,接下来将一一介绍这些几何对象。

几何对象Point:是一个0维的几何图形,具有X,Y坐标值,以及一些可选的属性:如高程值(Z值),度量值(M 值) 和ID号,点对象用于描述精确定位的对象。

MultiPoint:点集对象是一系列无序的点的群集,这些点具有相同的属性信息。

例如可以用一个点集来表示整个城市天然气调压站。

以下代码片段演示如何构建Multipoint对象://定义第一个点IPoint pPoint1 =new PointClass();pPoint1.X = 100;pPoint1.Y = 100;//定义第二个点IPoint pPoint2 =new PointClass();pPoint2.X = 200;pPoint2.Y = 200;……//构建其他点IPointCollection pMultipoint =new MultipointClass(); object o=Type.Missing;//添加第一个点,不需要设置点的顺序,参数设置为Type.Missing pMultipoint.AddPoint(pPoint1,ref o,ref o);//添加第二个点,不需要设置点的顺序,参数设置为Type.Missing pMultipoint.AddPoint(pPoint2,ref o,ref o);……//添加其他点Segment几何对象Path是连续的Segment的集合,除了路径的第一个Segment和最后一个Segment外其余的Segment的起始点都是前一个Segment的终止点,即Path对象的中的Segment不能出现分离,Path可以是任意数的Line,CircularArc,EllipticArc和BezierCurve的组合。

ArcGIS_Engine类库介绍

ArcGIS_Engine类库介绍

下面将概述ArcGISEngine中的各个类库。

本节中的各个模型图展示了ArcGISEngine的类库架构。

理解类库结构、它们的依赖关系和基本功能将有助于开发人员了解ArcGISEngine的组件。

下面根据依赖关系的顺序对类库进行讨论。

模型图中在每个类库框的右上角显示了其序列号。

例如,作为ArcGIS体系结构基础的System类库,其编号为1,而编号为7的GeoDatabase类库依赖于模型图中其前面的6个类库—SyStem、SystemUI、Geometry、Display、Server和Output。

System类库System类库是ArcGIS体系结构中最底层的类库。

System类库包含给构成ArcGIS的其他类库提供服务的组件。

System类库中定义了大量开发者可以实现的接口。

AoInitializer对象就是在System类库中定义的,所有的开发者必须使用这个对象来初始化ArcGISEngine和解除ArcGISEngine的初始化。

开发者不能扩展这个类库,但可以通过实现这个类库中包含的接口来扩展ArcGIS系统。

SystemUI类库SystemUI类库包含用户界面组件接口定义,这些用户界面组件可以在ArcGIS Engine中进行扩展。

包含ICommand、ITool和IToolControl接口。

开发者用这些接口来扩展UI组件,ArcGIS Engine开发人员自己的组件将使用这些UI组件。

这个类库中包含的对象是一些实用工具对象,开发人员可以通过使用这些对象简化用户界面的开发。

开发者不能扩展这个类库,但可以通过实现这个类库中包含的接口来扩展ArcGIS系统。

Geometry类库Geometry类库处理存储在要素类中的要素几何图形或形状或其他图形元素。

大多数用户会遇到的基本几何图形对象为Point、MultiPoint、Polyline和Polygon。

除了这些顶级实体外,就是作为多义线和多边形的组成部分的几何图形,是组成几何图形的子要素。

ArcEngine教程-第7章--矢量数据空间分析

ArcEngine教程-第7章--矢量数据空间分析
• 叠加分析所用到的主要接口是IBasicGeoprocessor接口,它提供了基本的 矢量数据处理的方法和属性,概括为叠置求交与叠置求和。该接口包括5 个方法(Intersect、Union、Clip、Dissolve、Merge)和2个属性 (SpatialReference和CancelTracker)。
① 添加缓冲区分析操作工具; ② 在其OnMouseDown方法中执行点击查询要素操作; ③ 将查询结果要素通过ITopologicalOperator. Buffer方法进行缓冲区生成操 作; ④ 将缓冲区生成结果利用空间要素渲染方式展示到地图上。
1. 空间拓扑分析
• 其程序设计具体步骤为:
① 向工程项目中添加继承自BaseTool类的文件,该类实现了BaseCommand 基础类和ITool接口的所有方法; ② 添加ToolBufferAnalysis 类中的OnClick方法的实现代码,用以判定是否符 合缓冲区操作的前提条件(地图中是否加载图层),并修改鼠标样式; ③ 添加ToolBufferAnalysis 类的OnMouseDown方法的实现,生成缓冲区并 将生成的缓冲区要素添加到地图中;
2. 空间关系运算
• 实例详解-查找一多边形要素的所有邻接要素
• 本例通过在地图上点击选择任意一个多边形,系统自动获取与该 多边形要素相邻接的其它多边形并显示到地图上。
核心代码
3. 叠加分析
• 叠加分析(也称叠置分析)是将同一区域,相同参考系统、相同 比例尺的两个或多个数据进行叠加产生一个新数据层的操作,其 结果综合了原来两层或多层要素所具有的属性信息,并且还能从 已有的数据中提取空间隐含的信息。 • 相关类与接口(IBasicGeoprocessor接口)

GIS技术第十一讲 ArcGIS Engine空间分析(培训)

GIS技术第十一讲 ArcGIS Engine空间分析(培训)

1 求交叠置(Interset)
Intersect_analysis (in_features, out_feature_class, join_attributes, cluster_tolerance, output_type)
output_type:确定输出要素的类型。
➢ 如果输入具有不同几何类型,则输出要素类几何类型默认与具有最低维 度几何的输入要素相同。
out_feature_class :用来设置输出要素的名称和存储路径。 cluster_tolerance :XY容限值,为可选项,没有特殊要求默认即可。
1 求交叠置(Interset)
Intersect_analysis (in_features, out_feature_class, join_attributes, cluster_tolerance, output_type)
第十一讲
本科生选修课《GIS开发技术》
ArcGIS Engine空间分析(2)
内容提纲
1 求交叠置 2 求和叠置 3 擦除叠置 4 同一性叠置 5 更新叠置 6 异或叠置
1 求交叠置(Interset)
交集操作计算两个要素的几何交集,两个要素的公共 部分保留。
输入要素类的属性值将被复制到输出要素类。
join_attributes:确定哪些属性要传递到输出要素类
➢ ALL —输入要素与相关要素的所有属性(包括 FID)都将传递 到输出要素类。这是默认设置
➢ NO_FID —除 FID 外,输入要素与相关要素的其余属性都将 传递到输出要素类
➢ ONLY_FID —输入要素的所有属性与相关要素的 FID 将传 递到输出要素类
输入图层和叠加图层都必须是多边形图层,还可以设置它 们的精度等级。

牟乃夏ArcEngine教程-第11章__三维分析

牟乃夏ArcEngine教程-第11章__三维分析
– (1)获得SceneControl中的某个TIN图层,并通过ISurface接口得到表面; – (2)设置基本高度和投影方向; – (3)获取结果显示。
3. TIN数据
TIN的体积、表面积和投影面积
3. TIN数据
• 获取TIN表面某点三维坐标、坡度和坡向 • 获得TIN表面某点的三维坐标信息、坡度信息和坡向信息,需要调用ISurface 接口,通过ISurface接口的GetElevation方法、GetSlopeDegrees方法和 GetAspectDegrees方法获取相应信息。实现思路如下:
去,刷新视图,让元素显示出来。
2. MultiPatch
实例按钮功能介绍 按钮名称 创建axes 按钮功能 创建一个带有箭头的三维坐标轴
创建TriangleStrip
创建一个TriangleStrip样式的阶

创建TriangleFan 创建Triangles 创建Ring 创建RingGroup Extrusion
3. TIN数据
• TIN表面分析 • 基于TIN表面可以做各种表面分析,如计算TIN的体积、表面积和投影面积,获取TIN 表面某点的三维坐标、坡度、坡向、等高线和最陡路径,也可以生成TIN图层表面坡 度和坡向图层,绘制TIN表面的剖面线。 • 计算TIN的体积、表面积和投影面积 • 计算TIN的体积、表面积和投影面积,需要用到ISurface接口,通过ISurface接口的 GetVolume方法、GetSurfaceArea方法和GetProjectedAre方法获得相应结果。实现 思路如下:
2. MultiPatch
• ArcGIS Engine提供了创建MultiPatch几何对象的类和接口,主要用到两个接口,分别 是IGeometryCollection和IConstructMultiPatch。 • 这两个接口创建MultiPatch的方式略有不同: 实现思路如下: • IGeometryCollection 接口是通过添加各个组件的组成部分来创建MultiPatch; (1)使用IPoint接口生成新的点对象,用IPointCollection接口的AddPoint方法将 • IConstructMultiPatch 接口是通过操作 Geometry对象,如拉伸 Polyline 对象(拉伸为墙) 点对象添加进集合,并用 IGeometryCollection 接口的AddGeometry 方法或 IconstructMultiPatch接口的ConstructExtrudeFromTo 和Polygon对象(拉伸为多面体)等来创建 MultiPatch。 方法将PointCollection对 象转换为一个Geometry对象; • 这两种方法的创建步骤相似,将要创建的 MultiPatch显示出来需要用到 (2)使用IElement接口实例化一个元素对象,并将该元素对象的 Geometry属性设置 IGeometryCollection 、IGraphicsContainer3D 、IPoint、IPointCollection 、IGeometry、 为步骤1得到的 Geometry对象,并设置元素对象显示时使用的 Symbol(符号); (3)使用IGraphicsContainer3D的AddElement方法把步骤2产生的元素添加到视图中 IElement 等接口。

3.3.1 Segment对象_ArcGIS Engine 开发从入门到精通_[共3页]

3.3.1 Segment对象_ArcGIS Engine 开发从入门到精通_[共3页]

ArcGIS Engine开发从入门到精通3.3.1 Segment对象Segment是由一个起点和终点,以及定义这两点之间的曲线函数组成的一纬几何形体对象。

Segment对象是一个抽象类,可以泛化为Line、CircularArc、EllipticArc、BezierCurve等4种类型,这4种类型将在本节的后一部分分别介绍。

这些Segment对象可以独立存在,也可以用于构造其他的几何形体对象,如Polyline、Polygon等。

由于Segment是从Curve继承而来,因此也拥有Curve的方法和属性,如FromPoint、ToPoint可用于确定曲线的起点和终点。

ISegment是Segment对象的主要接口,该接口提供了两个方法:SplitAtDistance、SplitDivideLength,将一个Segment对象分割成了多个Segment对象。

在分割Segment前会自动复制一份副本,然后对副本进行分割,分割操作对源对象不产生影响。

SplitAtDistance方法是通过一个给定的长度或比率,在Segment对象的起点到终点方向上,在给定长度距离的位置上产生一个分割点。

SplitDivideLength是将一个Segment对象分割成多个新的Segment,如图3-8所示。

图3-8 Segment对象下面的代码将演示如何使用该对象的一个常用方法和属性。

IPoint fromPoint = new PointClass();fromPoint.PutCoords(0, 0);IPoint toPoint = new PointClass();toPoint.PutCoords(100, 0);ILine line = new LineClass();line.FromPoint = fromPoint;line.ToPoint = toPoint;double offset = 0;double length = 10;bool asRatio = false;int numberOfSplittedSegments;ISegment[] splittedSegments = new ISegment[10];for (int i = 0; i < 10; i++){splittedSegments[i] = new PolylineClass() as ISegment;}ISegment segment = line as ISegment;IGeometryBridge2 geometryBridge = new GeometryEnvironmentClass();geometryBridge.SplitDivideLength(segment,offset,length,asRatio,outnumberOfSpli ttedSegments, ref splittedSegments);54。

ArcgisEngine(ae)接口详解(5):IGeometry几何基础操作

ArcgisEngine(ae)接口详解(5):IGeometry几何基础操作

ArcgisEngine(ae)接⼝详解(5):IGeometry⼏何基础操作//点操作~~~~~~~~~~~~~~~~~~~~~~~~~//通过坐标⽣成点IPoint point = new PointClass();point.PutCoords(100, 200);//获取点坐标double x = point.X;double y = point.Y;//线操作~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//通过点集⽣成线IPolyline polyline = new PolylineClass();//思路是通过点集接⼝IPointCollection添加线的点,创建线和⾯同样可⽤此⽅法IPointCollection pointColl = polyline as IPointCollection;point = new PointClass();point.PutCoords(100, 200);pointColl.AddPoint(point);point = new PointClass();point.PutCoords(300, 100);pointColl.AddPoint(point);//通过点集⽣成线完成~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//获取线的起点和终点IPoint pointStart = polyline.FromPoint;IPoint pointEnd = polyline.ToPoint;//获取线的长度double length = polyline.Length;//获取线的矩形范围(envelop),⾯的获取⽅式也⼀样//线和⾯都有envelope,不过点的envelop没有意义IEnvelope envelope = polyline.Envelope;//获取线是否是闭合的线bool isClosed = polyline.IsClosed;//把线的⽅向反转,就是起点和终点,点的顺序反转polyline.ReverseOrientation();//获取线的所有点,对于⾯同样可⽤此⽅法for (int i = 0; i < pointColl.PointCount; i++){IPoint point1 = pointColl.Point[i];}//⾯操作~~~~~~~~~~~~~~~~~~~~~~~~~~~IPolygon polygon = new PolygonClass();//通过点集⽣成线:与线⼀样//注意:⽣成⾯时点集要求第⼀个点做坐标和最后⼀个点的坐标⼀样,也可理解为同⼀个点添加了两次,否则会出错//获取⾯的周长length = polygon.Length;IArea area = polygon as IArea;//获取⾯的⾯积double area1 = area.Area;//获取⾯的所有点,跟线获取的⽅法⼀样//⼏何通⽤操作~~~~~~~~~~~~~~~~~~~~~~~~~~~//点线⾯都可以as到IGeometry,所有⼏何对象的类型都可以,因此所有⼏何类型接⼝都继承了IGeometryIGeometry geometry = polygon as IGeometry;//获取⼏何类型,可以区分出点,线,⾯等//如果有种情况获取到的⼏何对象的类型是IGeometry,那可以通过这个判断是什么⼏何类型,然后在as到对应的接⼝再做下⼀步操作esriGeometryType geometryType = geometry.GeometryType;//获取是否空⼏何对象//空⼏何对象和null不同,例如点对象可是没有点坐标,线对象没有⼀个点等等//空⼏何对象其中⼀种情况是,从feature获取到的⼏何对象,可能是空的,因为⼀条要素肯定有⼀个对应的⼏何对象,可是编辑时⼜可以不录⼊⼏何对象(⽽只是录⼊属性字段值)bool isEmpty = geometry.IsEmpty;//矩形范围(Envelope)操作~~~~~~~~~~~~~~~~~~~~~~~~~~~IEnvelope envelope2 = polygon.Envelope;//获取矩形的坐标,矩形⽤最⼩点(左下⾓的点)和最⼤点(右上⾓的点)两个点就⾜够表⽰double xmin = envelope2.XMin;double ymin = envelope2.YMin;double xmax = envelope2.XMax;double ymax = envelope2.YMax;//获取矩形的宽和⾼double height = envelope2.Height;double width = envelope2.Width;//通过坐标创建矩形envelope2 = new EnvelopeClass();envelope2.PutCoords(100, 200, 300, 400);//扩⼤和缩⼩//有两种情况,根据参数3设置,false=按长度,true=按⽐例//下例是⽔平扩⼤10(⽶),垂直扩⼤20(⽶)envelope2.Expand(10, 20, false);//下例是⽔平设为原来的0.8倍(可以理解为缩⼩了20%),垂直设为原来的1.1倍(可以理解为放⼤了10%) envelope2.Expand(0.8, 1.1, true);//移动//把矩形中⼼点移到某个点(实际是整个矩形移动)envelope2.CenterAt(point);//矩形转⾯//逻辑上矩形也是⾯,但在ae对象中IEnvelop和IPolygon不能互转,下⾯是edm的转换⽅法polygon = GeometryHelper.EnvelopeToPolygon(envelope);。

ArcGIS Engine第二章 对象模型

ArcGIS Engine第二章 对象模型
子类集成了抽象类的接口
抽象类的OMD 符号: 2维阴影矩形
组件类 (CoClass)
可以创建:使用 New关键字,如Arcmap中的 Maps,FeatureLayers类等
IMap pMap = new MapClass() 实例化: 从其它对象获得 IMap pMap = pMxDocument.FocusMap()
*
Map
*
Layer
FeatureLayer
OMD中的符号
一个空心三角形符号 表示继承 形的黑色菱形小块 表示组成 虚线线前头带个箭头 表示用来创建 * 表示对应关系1:N 一条直线表示 关联 入接口----空心圆 出接口----实心圆
查找接口
接口棒棒糖类型的图标 ( )
第二章 对象模型图
1 接口的概念 2 对象模型图 3 ArcGIS Engine的开发资源
接口概念
COM是微软提出的一种用于开发和支持程序对象组件的框架 ,是一种系 统构架模型二进制规范,而不是指特定语言;COM是一种自我描述,自 我生存的软件模块;它由操作系统的COM管理部分来注册和管理,并向 所有应用开放。 Com是软件模块之间连接的协议,客户调用服务器并等待服务器的响 应
在这张图上,一个业主能有拥有一块或多块宗地;同样地,一块宗地可以被一个或 多个业主所共有。 多重性关联就是限制对象类与其它对象关联的数目关系。以下是用于多重性关联的 符号: 1 —— 一个并且只有一个,这种多样性是可选的;如果不标明,则默认为“1” 0..1 —— 零个或一个 M..N —— 从M 到N(正整数) *或者0… * —— 从零到任意正整数 1… * —— 从一到任意正整数
属性传引用: 一些 ArcObjects的属性

ArcGIS几何形体理解解析

ArcGIS几何形体理解解析

(2)ConstructAngleBisector角平分线创建法
这种方法使用三个点,即起始点(FromPoint)、通 过点(Through Point)和终止点(ToPoint)。该方法通 过平分三点形成的夹角,并设置一个距离在平分线寻找 到一点。如果长度为负值,则沿着反方向放置点。
object.ConstructAngleBisector (from, through, to, distance, useAcuteAngle )
ArcMap几何形体
Points Multipoints Polylines Polygons
1 Line
1 Poly
线段:在曲线的起点和终点之间 2 Paths 线段集合成 paths/rings Paths/rings集合成lines/polygons 可以在任何层次上编辑
Bezier curve Ring继承至path
2、IConstructPoint接口
AO中Geometry模型的一个重要特点是它具 有一套丰富的,利用已经存在的几何对象的距离 、角度和空间关系,生成新的几何形体对象的方 法。
使用这些方法常常涉及使用角度和偏转角。 在AO编写程序时,角度使用的是弧度单位,而 长度单位使用地图投影单位。
IConstructPoint接口,可以使用多达10种方 法来创建所需要的点,下面需要介绍几种点的构 造方法:
(3)ConstructAngleIntersection构造角度 交点
通过给定的两个点和两个角度,这个方法 可以在两条射线的交点处产生一个点。两条射 线由点和角度来确定。
object.ConstructAngleIntersection (p1, angle1, p2, angle2 )
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ArcGIS Engine 中的几何对象
• 课 题:第三讲 几何对象 • 目的要求:通过本章的学习,学习了解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对象
相关文档
最新文档