您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 牟乃夏ArcEngine教程-第7章矢量数据空间分析
牟乃夏ArcGISEngine地理信息系统开发教程配套PPT---第7章矢量数据空间分析目录•1.空间拓扑分析•2.空间关系运算•3.叠加分析•4.数据格式转换•5.添加XY数据•6.使用GP工具进行空间分析1.空间拓扑分析•通过一系列的基于一个或者多个几何图形间的逻辑比较,然后返回另外一些几何图形的过程就是空间几何图形的拓扑运算。它是空间分析的基础,各种空间分析的结果都可以通过几何图形之间的拓扑运算实现。•相关类与接口(ITopologicalOperator接口)•ITopologicalOperator接口的方法仅仅使用在高级别几何对象上,即Point、MultiPoint、Polyline和Polygon,如果要使用在低等级的几何对象中,如Segment(Line,Circular,Arc,EllipticArc,BezierCurve)、Path或Ring上,需要先将他们组合成高级别几何对象才行。1.空间拓扑分析•ITopologicalOperator接口的主要方法及属性有:•1)Boundary属性•2)Buffer方法•3)Clip方法•4)Union与ConstructUnion方法•5)ConvexHull方法•6)Cut方法•7)Difference方法与SymmetricDifference方法•8)Intersection方法•9)Simplify方法BoundaryBuffer方法Clip方法Union方法ConvexHull方法Cut方法Difference方法SymmetricDifference方法Intersection方法Simplify方法1.空间拓扑分析•实例详解-缓冲区分析•本例的目的是实现在地图上点击选择任意一个多边形要素,程序自动生成该多边形一定范围内的缓冲区并渲染到地图上。•实现的基本思路为:①添加缓冲区分析操作工具;②在其OnMouseDown方法中执行点击查询要素操作;③将查询结果要素通过ITopologicalOperator.Buffer方法进行缓冲区生成操作;④将缓冲区生成结果利用空间要素渲染方式展示到地图上。1.空间拓扑分析•其程序设计具体步骤为:①向工程项目中添加继承自BaseTool类的文件,该类实现了BaseCommand基础类和ITool接口的所有方法;②添加ToolBufferAnalysis类中的OnClick方法的实现代码,用以判定是否符合缓冲区操作的前提条件(地图中是否加载图层),并修改鼠标样式;③添加ToolBufferAnalysis类的OnMouseDown方法的实现,生成缓冲区并将生成的缓冲区要素添加到地图中;1.空间拓扑分析•在主程序窗体的按钮事件中,利用ICommand接口调用ToolBufferAnalysis工具类,实现点击选择地理要素并生成缓冲区的操作;点击选择后的多边形生成缓冲区效果展示1.空间拓扑分析•实例详解-获取多边形要素边界•本例旨在实现通过在地图上点击选择任意一个多边形图形要素,系统自动获得该多边形的边界并渲染展示到地图上。核心代码2.空间关系运算•相关类与接口(IRelationalOperator接口)•几何对象之间空间关系主要有:包含、相等、在内部、相交等。矢量数据的空间关系运算需要用到IRelationalOperator接口,通过该接口的不同方法判定两个几何对象之间的关系是否存在。关系运算符用以比较两个几何体,并返回一个boolean型值来说明某种空间关系是否存在。•空间包含关系(Contains、Within)•交叉(Crosses)•相离(Disjoint)•重叠(Overlaps)•相等(Equals)•相接(Touches)2.空间关系运算•实例详解-查找一多边形要素的所有邻接要素•本例通过在地图上点击选择任意一个多边形,系统自动获取与该多边形要素相邻接的其它多边形并显示到地图上。核心代码3.叠加分析•叠加分析(也称叠置分析)是将同一区域,相同参考系统、相同比例尺的两个或多个数据进行叠加产生一个新数据层的操作,其结果综合了原来两层或多层要素所具有的属性信息,并且还能从已有的数据中提取空间隐含的信息。•相关类与接口(IBasicGeoprocessor接口)•叠加分析所用到的主要接口是IBasicGeoprocessor接口,它提供了基本的矢量数据处理的方法和属性,概括为叠置求交与叠置求和。该接口包括5个方法(Intersect、Union、Clip、Dissolve、Merge)和2个属性(SpatialReference和CancelTracker)。3.叠加分析Clip方法原理图Dissolve方法原理图Intersect方法原理图Merge方法原理图Union方法原理图3.叠加分析•实例详解:两相交面图层的裁剪(Clip)分析•本例利用IBasicGeoprocessor接口的Clip方法实现两个相交面图层的裁剪分析操作,通过输入被裁剪要素图层和裁剪要素图层,获得目标要素图层,该图层的数据结构同被裁剪要素的数据结构保持一致。•实现步骤如下:①主窗体中添加触发裁剪操作按钮事件的代码,通过获取裁剪图层和被裁剪图层,调用Clip公共方法,返回结果FeatureClass数据集,并加载到地图中;②添加通过图层名称从地图mapControl空间中获取对应图层公共方法函数GetLayerByName(stringlayerName);③添加Clip裁剪公共方法,利用IBasicGeoprocessor接口中的Clip方法实现裁剪操作,生成ShapeFile数据作为保存在磁盘中,并输出结果FeatureClass作为返回结果数据;关于裁剪操作,在7.1讲解ITopologicalOperator接口时介绍了Clip方法,在IBasicGeoprocessor接口中也有Clip方法。这两个方法的区别是:ITopologicalOperator是针对两矢量空间要素进行图形信息的裁剪;IBasicGeoprocesso主要针对矢量要素集(图层),其结果综合了原来两层或多层要素所具有的属性信息。4.数据格式转换•矢量数据的格式转换是GIS软件常用的功能之一,在自己编写的应用软件中,也经常用到该功能。常用的数据格式转换方法主要有ShapeFile文件和CAD文件、Coverage文件等的转换。•相关类与接口(IFeatureDataConverter接口)•数据格式转换操作主要用到IFeatureDataConverter接口,它包含三个方法:ConvertFeatureClass、ConvertFeatureDataset和ConvertTable,分别可以将要素类、要素集或表转换成其它数据集,它不仅可以转换单个的要素类或表,也可以转换整个数据集(如ArcInfoCoverage)。•同时,FeatureDataConverter对象能够使数据在Geodatabase,ShapeFile和Coverages等大多数的数据类型(除了标注)之间实现转换。在把数据引入Geodatabase时,可以进行数据的条件筛选,只将符合条件的要素转换到目标要素集;当进行数据转入到ArcSDEGeodatabase中时,还可以通过配置ArcSDE的某些关键字来指定存储参数。4.数据格式转换•以ConvertFeatureClass方法为例说明,其转换过程各参数意义如下:•1)InputDatasetName(IFeatureClassName)参数•用于指定输入要素类的一个Name对象,以确定待转换的矢量数据。•2)InputQueryFilter(IQueryFilter)参数•用于过滤要转换的要素的QueryFilter对象,用以筛选待转换的矢量数据。•3)outputFDatasetName(IFeatureDatasetName)参数•转换完成的要素类输出的新数据结果集成到现有数据集的IFeatureDatasetName对象中。•4)outputFClassName(IFeatureClassName)参数•转换完成后,输出要素类的Name对象。•5)OutputGeometryDef(IGeometryDef)参数•用于指定输出要素类的空间参考信息的GeometryDef对象。如果为null,就使用输入要素类的空间参考信息。•6)OutputFields(IFields)参数•用于指定输出要素类的字段集。如果把要素结果类输出为同样的数据格式,可以使用输入的要素类的字段集。如果格式有变化,建议使用FieldChecker以确保输出的格式有效。•7)configKey(string)参数•用于指定ArcSDE配置关键字的字符串。4.数据格式转换•实例详解-将ShapeFile数据导入到FileGeodatabase•本实例通过IFeatureDataConverte接口的ConvertFeatureClass方法将ShapeFile格式的数据转换导入到FileGeodatabase数据库中,并可以设置属性筛选条件进行部分导入。•实例步骤:4.数据格式转换•实例详解-通过数据解析方式实现ShapeFile数据转CAD格式数据•实现思路:首先通过对ShapeFile数据的遍历以及属性条件进行筛选,然后将符合条件的数据利用System.IO.TextWrite方法类进行CAD文件的写入,实现数据格式的转化。•实现步骤:①首先获取地图中加载的ShapeFile数据转换为ILayer接口的对象,然后选择转换成功后CAD格式数据的存储路径,调用封装的ConvertShapeToDXF类中的转换方法实现转换,转换成功后进行信息提示;②获取FeatureLayer对象的数据最大范围矩形,并据此进行CAD文件区域范围的写入;③初始化构建CAD文件属性表;④初始化构建CAD文件块;⑤初始化构建CAD文件实体,即将解析后的ShapeFile数据进行CAD文件格式的写入,此过程可以针对写入的要素进行条件筛选;⑥以Point对象为例,设置CAD对象的线长、颜色。此外,Polyline和Polygon也可以参照此方法进行设置,不过要比Point复杂,具体代码请读者参考随书光盘;5.添加XY数据•ArcGIS软件中有添加X、Y数据的功能,目的是将以X、Y二维几何坐标形式存储的数据转换为GIS中的图形数据。•相关类与接口•实现将包含X、Y坐标的文本文件、Excel文件或者Access文件生成GIS的点数据的接口主要有:IXYEventSource、IXYEventSourceName和IXYEvent2FieldsProperties等。5.添加XY数据•相关类与接口•1)IXYEventSource接口•IXYEventSourceName接口的Open方法执行将X、Y数据转化为IFeatureClass的功能,形成空间数据。•2)IXYEventSourceName接口•IXYEventSourceName接口主要用于初始化XYEventSourceNameClass对象,利用其EventProperties属性赋予IXYEvent2FieldsProperties初始化对象值,完成属性的传递。同时IXYEventSourceName对象强制转化为IName对象,借助IName对象的Open方法形成IXYEventSource空间要素数据集,即可强制转化为IFeatureClass空间矢量要素数据集,然后可进行数据加载。•3)IXYEvent2FieldsProperties接口•IXYEvent2FieldsProperties接口主要用于赋予EventProperties属性值,通过SpatialReference属性赋予坐标系统和EventTableName属性赋予事件数据结果表名称。5.添加XY数据•实例详解-带有X、Y字段的Excel数据表转为点数据•本例将带有X、Y字段的Excel数据表转化为点要素类,通过指定对应的数据字段和坐
本文标题:牟乃夏ArcEngine教程-第7章矢量数据空间分析
链接地址:https://www.777doc.com/doc-2220665 .html