资源预览内容
第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
第9页 / 共24页
第10页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
牟乃夏 ArcGIS Engine 地理信 息系统开发教程 配套PPT- 第7章 矢量数据空间分析 目录 1. 空间拓扑分析 2. 空间关系运算 3. 叠加分析 4. 数据格式转换 5. 添加X Y数据 6. 使用GP工具进行空间分析 1. 空间拓扑分析 通过一系列的基于一个或者多个几何图形间的逻辑比较,然后返 回另外一些几何图形的过程就是空间几何图形的拓扑运算。它是 空间分析的基础,各种空间分析的结果都可以通过几何图形之间 的拓扑运算实现。 相关类与接口(ITopologicalOperator接口) ITopologicalOperator接口的方法仅仅使用在高级别几何对象上,即Point 、MultiPoint、Polyline和Polygon,如果要使用在低等级的几何对象中, 如Segment(Line,Circular,Arc,Elliptic Arc,Bezier Curve)、Path或Ring上 ,需要先将他们组合成高级别几何对象才行。 1. 空间拓扑分析 ITopologicalOperator接口的主 要方法及属性有: 1)Boundary属性 2)Buffer方法 3)Clip方法 4)Union与ConstructUnion方法 5)ConvexHull方法 6)Cut方法 7)Difference方法与SymmetricDifference 方法 8)Intersection方法 9)Simplify方法 Boundary Buffer方法 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(string layerName); 添加Clip裁剪公共方法,利用IBasicGeoprocessor接口中的Clip方法实现 裁剪操作,生成ShapeFile数据作为保存在磁盘中,并输出结果 FeatureClass作为返回结果数据; 关于裁剪操作,在 7.1讲解ITopologicalOperator 接口时介绍了Clip方法,在IBasicGeoprocessor接 口中也有Clip方法。这两个方法的区别是: ITopologicalOperator是针对两矢量空间要素进行 图形信息的裁剪;IBasicGeoprocesso主要针对矢量 要素集(图层),其结果综合了原来两层或多层要 素所具有的属性信息。 4. 数据格式转换 矢量数据的格式转换是GIS软件常用的功能之一,在自己编写的应用软 件中,也经常用到该功能。常用的数据格式转换方法主要有ShapeFile 文件和CAD文件、Coverage文件等的转换。 相关类与接口(IFeatureDataConverter接口) 数据格式转换操作主要用到IFeatureDataConverter接口,它包含三个方法: ConvertFeatureClass、ConvertFeatureDataset和ConvertTable,分别可以将要素 类、要素集或表转换成其它数据集,它不仅可以转换单个的要素类或表,也可 以转换整个数据集(如ArcInfo Coverage)。 同时,FeatureDataConverter对象能够使数据在Geodatabase,ShapeFile和 Coverages等大多数的数据类型(除了标注)之间实现转换。在把数据引入 Geodatabase时,可以进行数据的条件筛选,只将符合条件的要素转换到目标要 素集;当进行数据转入到ArcSDE Geodatabase中时,还可以通过配置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数据导入到File Geodatabase 本实例通过IFeatureDataConverte接口的ConvertFeatureClass方法将 ShapeFile格式的数据转换导入到File Geodatabase数据库中,并可 以设置属性筛选条件进行部分导入。 实例步骤: 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. 添加X Y数据 ArcGIS软件中有添加X、Y数据的功能,目的是将以X、Y二维几何 坐标形式存储的数据转换为GIS中的图形数据。 相关类与接口 实现将包含X、Y坐标的文本文件、Excel文件或者Access文件生成GIS的点 数据的接口主要有:IXYEventSource、IXYEventSourceName和 IXYEvent2FieldsProperties等。 5. 添加X Y数据 相关类与接口 1)IXYEventSource接口 IXYEventSourceName接口的Open方法执行将X、Y数据转化为IFeatureClass的功能,形成空间 数据。 2)IXYEventSourceName接口 IXYEventSourceName接口主要用于初始化XYEventSourceNameClass对象,利用其 EventProperties属性赋予IXYEvent2FieldsProperties初始化对象值,完成属性的传递。同时 IXYEven
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号