Arcgis操作及开发实习报告

时间:2019-05-13 09:13:00下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《Arcgis操作及开发实习报告》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《Arcgis操作及开发实习报告》。

第一篇:Arcgis操作及开发实习报告

内容摘要:第一部分:学会使用A.第二部分:能够进行空.第五部分:熟悉并掌握.Arcgis操作及A.第一部分:“使用Ar.1.了解地理数据是如.3.通过浏览与地理要.4.掌握GIS两种基.5.初步了解设置图层.第二部分:”空间数据.1.利用ArcCat.2.掌握在ArcMa.3.掌握根据数据文件.4.理解图层属性表间.第三部分:“影像配准.1.利用影像配准(G.2.编辑器的使用(点.3.熟悉GRAMIN.注意:在基于ArcM.第四部分:”空间分析.1.了解基于矢量数据.2.掌握矢量数据与栅.3.为选择合适的空间.第五部分:“基于Ar.1.了解ArcObj.2.知道ArcObj.3.学会基于ArcO.《GIS应用开发实习.Arcgis软件,V.第一部分:学会使用A.第二部分:能够进行空.第五部分:熟悉并掌握.第一部分:”使用Ar.第二部分:“空间数据.1、启动ArcCat.4、创建个人地理数据.6、编辑属性数据及进.第三部分:”影像配准.第1步:地形图的配准.第4步:矫正并重采样.第5步:分层矢量化-.第6步:从已配准的地.第四部分:“空间分析.1、确定问题并确定分.第五部分:”基于Ar.第一步:使用VC向导.第二步:添加MapC.第三步:向视图类Ao.第一步:在工程资源中.根据条件通过对要素属.根据对象的空间相关位.用ArcObject.通过此次实习,使我了.1.ArcGis平台.答:ArcGIS9所.ArcSDE――一个.ArcIMS――是一.ArcGISServ.2.矢量数据,栅格,.答:空间数据包括坐标.ESRI公司的Spa.3.ArcGis空间.答:ESRI使用“g.4.空间数据库建库是.答:从整个的建库过程.1、数据库建模过程,Arcgis操作及开发实习报告--:张占阳。.2、数据监理过程。这.3、利用各种工具将各.为了保证数据库的一致.5.配准的目的是什么.答:以现有的已知控制.将适量数据或者栅格数.欢迎光临68互助网第一部分:学会使用ArcMap浏览地理数据;第二部分:能够进行空间数据库管理及属性编辑;第三部分:掌握影像配准及矢量化;第四部分:学会空间分析基本操作;第五部分:熟悉并掌握基于ArcObjects组件开发GIS;Arcgis操作及ArcObjects开发

一、实习课时和类型:学时:5周;实习类型:实践操作与软件开发;

二、实习目的:第一部分:”使用ArcMap浏览地理数据“实习目的:1.了解地理数据是如何进行组织及基于”图层“进行显示的。2.认识ArcMap图形用户界面。3.通过浏览与地理要素关联的数据表,你可以了解地理数据是如何与其属性信息进行连接的。4.掌握GIS两种基本查询操作,加深对其实现原理的理解。5.初步了解设置图层显示方式-图例的使用。第二部分:”空间数据库管理及属性编辑“实习目的:1.利用ArcCatalog管理地理空间数据库,理解personal Geodatabse空间数据库模型的有关概念及其特点。2.掌握在ArcMap中编辑属性数据的基本操作。3.掌握根据数据文件生成矢量图层的方法和过程。4.理解图层属性表间的连接(Join)或关联(Link)关系。第三部分:”影像配准及矢量化“实习目的:1.利用影像配准(Georeferencing)工具进行影像数据地理配准。2.编辑器的使用(点要素、线要素、多边形要素的数字化)。3.熟悉GRAMIN GpS手持机的基本使用方法。注意:在基于ArcMap的操作过程当中请注意保存地图文档。第四部分:”空间分析基本操作“实习目的:1.了解基于矢量数据和栅格数据基本空间分析的原理和操作。2.掌握矢量数据与栅格数据间的相互转换、栅格重分类(Raster Reclassify)、栅格计算-查询符合条件的栅格(Raster Calculator)、面积制表(Tabulate Area)、分区统计(Zonal Statistic)、缓冲区分析(Buffer)、采样数据的空间内插(Interpolate)、栅格单元统计(Cell Statistic)、邻域统计(Neighborhood)等空间分析基本操作和用途。3.为选择合适的空间分析工具求解复杂的实际问题打下基础。第五部分:”基于ArcObjects组件开发GIS“shi(实)习目的:1.了解ArcObjects的开发简介及其强大的功能。2.知道ArcObjects的组成以及常用的控件。3.学会基于ArcObjects进行二次开发。

三、适用专业:地理信息系统专业;

四、采用教材:《GIS应用开发实习指导》包含五部分内容;

五、仪器与工具:p3以上配置计算机;Arcgis软件,Vc++6.0软件,GIS开发实习数据等;

六、实习内容:第一部分:学会使用ArcMap浏览地理数据;第二部分:能够进行空间数据库管理及属性编辑;第三部分:掌握影像配准及矢量化;第四部分:学会空间分析基本操作;第五部分:熟悉并掌握基于ArcObjects组件开发GIS;

七、实习步骤第一部分:”使用ArcMap浏览地理数据“主要操作步骤:第一步:启动ArcMap;第2步:检查要素图层;第3步:显示其它图层;第4步:查询地理要素;第5步:检查其它属性信息;第6步:设置并显示地图提示信息;第7步:根据要素属性设置图层渲染样式;第8步:根据属性选择要素;第9步:使用空间关系选择地理要素;第10步:退出ArcMap;第二部分:”空间数据库管理及属性编辑“主要操作步骤:

1、启动ArcCatalog打开一个地理数据库;

2、预览地理数据库中的要素类;

3、创建缩图,并查看元数据;

4、创建个人地理数据库(personal Geodatabase-pGD);

5、拖放数据到ArcMap中;

6、编辑属性数据及进行1:M的空间查询;

7、导入数据,生成图层;第三部分:”影像配准及矢量化“主要操作步骤:第1步:地形图的配准-加载数据和影像配准工具;第2步:输入控制点;第3步:设定数据框的属性;第4步:矫正并重采样栅格生成新的栅格文件;第5步:分层矢量化-在ArcCatalog中创建一个线要素图层;第6步:从已配准的地图上提取等高线并保存到创建的要素类中;第7步:根据GpS观测点数据配准影像并矢量化;第四部分:”空间分析基本操作“主要操作步骤:

1、确定问题并确定分析的目标和满足的条件;

2、针对应用问题选择合适的分析工具;

3、准备空间分析中需要的数据;

4、制定分析计划并执行分析操作;

5、显示并评价分析结果;第五部分:”基于ArcObjects组件开发GIS“主要操作步骤:

一、创建AoSample工程;第一步:使用VC向导AppWizard创建单文档,工程命名为AoSample;第二步:添加MapControl控件,管理图层数据;第三步:向视图类AoSampleView中添加MapControl控件变量,使得其与视图连接起来;

二、图层数据加载及图层管理;

1、添加图层数据;

2、图层控制;(1)图层的删除;(2)图层压盖关系调整;(3)地图浏览操作;

三、空间分析;1:缓冲区分析:第一步:在工程资源中增加一个对话框资源,设置新的对话框,作为设置缓冲区的条件;第二步:在对话框中添加变量;第三步:在视图类中增加函数及变量;第四步:编写实现代码;2:空间查询:1)、基于属性查询;根据条件通过对要素属性信息查找相对应位置的要素,并在地图上高亮度显示出来,实习报告《Arcgis操作及开发实习报告--:张占阳》。主要用到的对象模型QueryFilter。QueryFilter为查询过滤器。2)、空间位置查询;根据对象的空间相关位置查询有关属性信息。要点:注意要素间的空间关系(相交、相接,叠加、穿越、包含,、在内部)。涉及对象模型为SpatialFilter。

八、实习结果用ArcObjects开发后得到一个基于矢量地图操作处理的小型软件,该软件包含图层控制模块(具体包括矢量地图的初始化、图层的添加、图层的调整、图层控件位置的自动调整、图层的删除等功能)和空间分析模块(具体包括空间属性查询、空间位置查询以及缓冲区分析等功能)。

九、个人收获通过此次实习,使我了解并掌握了Arcgis的基本操作,能够使用ArcMap浏览地理数据并进行空间数据库管理及属性编辑,而且能够对各种空间数据和信息影像进行影像配准及矢量化,同时也掌握了对空间物体进行空间分析的基本操作。此外,我们还熟悉并掌握了基于ArcObjects组件开发GIS系统,从而使得我们对自己的专业和所学的知识有了更进一步的了解和加深。

十、问题讨论1.ArcGis平台软件由哪几部分组成,每部分实现哪些功能?答:ArcGIS 9所包含的三种服务端产品:ArcSDE――一个在多种关系型数据库管理系统中管理地理信息的高级空间数据服务器。ArcSDE是一个位于ArcGIS其它软件产品和关系型数据库之间的数据服务器,其广泛的应用使得在跨任何网络的多个用户群体中共享空间数据库以及在任意大小的数据级别中伸缩成为可能。ArcIMS――是一个可伸缩的,通过开放的Internet协议进行GIS地图,数据和元数据发布的地图服务器。ArcIMS已经在不计其数的应用中部署了,主要是为Web上的用户提供数据分发服务和地图服务。ArcGIS Server――是一个应用服务器,包含了一套在企业和Web框架上建设服务端GIS应用的共享GIS软件对象库。ArcGIS Server是一个新产品,用于构建集中式的企业GIS应用,基于SOAp的Web services和Web应用。2.矢量数据,栅格,DEM数据在ArcGis的空间数据中是如何存储的(ArcGis的库结构形式)?答:空间数据包括坐标数据和属性数据两大部分。通常属性数据在关系数据库的存储中非常方便。但是对于坐标数据就比较麻烦,这是因为一个空间目标的坐标数据不定长,往往包括很多个坐标对,在关系数据库中不能使用一个字段来记坐标值。ESRI公司的Spatial Database Engine(SDE)、Mapinfo公司SpatialWare、Intergraph公司的GeoMedia。它们都是把空间数据(矢量数据中的几何数据、拓扑数据或栅格数据)以二进制数据块的形式存储在数据库中,而属性数据以常用数据类型的形式存储,空间数据一般存储为矢量要素和栅格数据,以及传统意义上属性表。比如:一个DBMS表可以用来存放一个要素的集合,表中的每行可以用来保存一个要素。每行中的shape字段存储要素的空间几何或形状信息。3.ArcGis空间数据库是如何操纵的?针对矢量,栅格,DEM数据各有那些处理功能?答:ESRI使用”geodatabase"这个术语来描述一个完整的地理信息集合。Geodatabase是使用ArcGIS软件管理的,并且可以虚拟地存储任何类型的空间数据。Geodatabase能够管理大容量的数据,在一个多用户的环境中,仍然有很好的表现。Geodatabase不仅可以管理所有的基本地理数据类型,包括简单矢量要素数据类型(点、线和多边形),也能够存储更复杂的高级要素,这些要素使用规则区定义关系、拓扑和要素行为。Geodatabase也能够管理要素属性、要素链接标注、表面模型、测量数据、地址数据、3D对象、CAD数据和图片。ArcGIS软件可以用于维护高质量的数据,并让它在编辑gong(工)作流中更易于控制。Geodatabase的结果就是可以比其它任何地理数据管理环境更好地模拟这个世界。4.空间数据库建库是处理的什么阶段,涉及空间参照系统(地理坐标系)?答:从整个的建库过程来看,建库主要由以下3个过程组成:

1、数据库建模过程。这一过程主要是根据行业应用特点及对其的理解,制定出比较规范的数据规范,在逻辑上建设数据库。

2、数据监理过程。这一过程主要是检测数据的正确性,从而保证建库的准确性。

3、利用各种工具将各种数据入库的过程。此过程主要是将可以得到的各种数据纸制数据,矢量数据,栅格数据,遥感数据等快速、准确的入到库中。为了保证数据库的一致性、可操作性,数据库cai(采)用统一的坐标系、统一的编码体系和统一的属性数据。统一的坐标系是指,无论是地理坐标系还是平面坐标系都要求统一,以保证地物要素的连续。统一编码体系是指,相同的地物要素用相同的编码,否则数据库间、图幅间会出现无法接边的逻辑错误。统一属性数据是指,相同的地物要素在不同比例尺上有不同的表示方法,但应有相同的属性。5.配准的目的是什么?要实现矢量与栅格数据的同时显示需要哪些步骤?答:以现有的已知控制点为基础查找处理图像的地理标准点来实现对图像的准确配准,从而将图像坐标系由平面坐标或佚名坐标系转换到与控制点相对应的地理坐标系统,这样,将图像校正后即可以校正后的图像为基础尽享相应的地物提取或空间分析等。将适量数据或者栅格数据读入后,将其转化为栅格或者矢量数据图层,可以关闭或者打开相应的矢量或者栅格数据图层来实现矢量和栅格数据的同时可视化,也能够上下拖拽两种数据图层实现两种数据图层的上下压盖显示。欢迎光临68互助网更多精彩论文,网站建设,交流,互助论坛请到www.xiexiebang.com阳新晴到多云28℃到38℃

第二篇:ARCGIS实习报告

《ArcGIS实习报告》

号:

班级序号:

名:

指导教师:

绩:

ArcGIS软件操作实习报告

实习目的:

通过学习Arcgis这款Gis应用软件熟练我们的实际应用能力,深入理解GIS软件应用的核心部分,通过熟练Arcgis能掌握类似相关软件操作,加强动手能力。

实习过程:

1.对Arcgis软件整体掌握,并与之前各类软件操作对比和学习。

2.具体对软件操作掌握空间数据的采集与组织、数据的处理与变换、数据的可视化表达。

3.Arcgis的空间分析能力的掌握:矢量数据的空间分析、栅格数据的空间分析、三维分析、地统计分析、水文分析等。4.掌握Arcgis的空间分析建模。

实习内容:

根据学习内容,我们选择了《地理信息系统分析与应用》第三章作为实习内容,本章内容分别为:初识ArcGIS、农田保护区域分析、度假村选址、屏幕矢量化及拓扑建库、投影转换及图形裁剪、注记及属性编辑与连接、燕麦试验田选址、商店选址评价、土壤肥沃度分析、统计图表、网络分析、ArcGIS中DEM 的建立及应用。

以下是实习内容截图

3.1 初识ArcGIS 1启动ArcCatalog

2.在arcmap 中加载数据

3.图层操作

(1)放大、缩小

4、改变drelief图层的显示图例

6.改变dsoils图层的显示图例

3更改地图显示比例尺

4、将ArcCatalog 右侧窗口中的Water Use 图层拖到 ArcMap 中。

3.2农田保护区域分析

3.2.1 问题和数据分析

1.问题提出

有一块受洪水影响的地区。政府为了保护土地,决定在河流北岸建一个水坝。我们的任务是找出水坝保护的农田范围。

3.2.2连接并添加数据

1.连接并添加数据,并改变dsoils

drelief 图层的地图符号。

3.1.5 找出洪水淹没区域

在本例中我们需要找出所有高程低于8米的区域。利用

栅格计算器(Raster

112

3.1.6 寻找可耕种区域

3.1.7 确定水坝保护的可耕种区域

314

3设置地图单元

516 选择记录 为area 字段赋值

718

2将选中区域保存为一个新图层

920

4.122

3重分类

4查看重分类结果

324

3.3.4 确定坡度小于3%的区域

1添加图层 2求取坡度 3图层显示 4统计坡度分布 5 取出失真坡度数据 6提取坡度小于3%的地区 7重命名

3.3.5 提取年平均温度高于 16.5 摄氏度 的区域

526

3.4屏幕矢量化及拓扑建库

添加了控制点

将CropLine图层设定为编辑状态

数字化

728

3.5投影转换及图形裁剪

3.5-5 裁剪结果 CropCov

930

3.7 燕麦试验田选址

3.7-5 加载roads 和 hydro 特征类

3.7-28 计算地块总价

3.8 商店选址评价

3.8-11 设置重分类边界值

132

3.9-19 建立一个标准差圆

3.10 统计图表

3.10-8 趋势线

334

3.12 ArcGIS 中 DEM 的建立及应用

3.12-4 离散点生成的DEM

3.12-12 离散点生成TIN

536

3.12-31 坡度图

3.12-34 曲率图

3.12-37 坡向图

738

3.12-45 可视域图

3.12-49 统计计算结果

940

实习心得体会

在这次软件操作实习中,我们按照课本的指导,亲自体验了如何用ArcGIS实现数据的采集与组织、数据的处理与变换、数据的可视化表达。空间分析能力、矢量数据的空间分析、栅格数据的空间分析、三维分析、地理统计分析、水文分析等。

在一个个案例与任务中。我们熟悉了软件的操作,软件可以实现的功能,了解到了gis可以帮助我们解决生活中哪些方面的问题。这使课堂理论与实际紧密联系,帮助我们更好地理解了GIS知识。在软件的使用过程中,我们训练了自己解决实际工程任务的能力,提高了专业技能。这对将来走上工作岗位也有很大的帮助。此外,通过实际操作,书本的知识不再枯燥乏味。在制作一幅又一副功能各异的图片,完成书本要求的内容中。我们收获了成功的喜悦,惊叹于GIS的强大功能,这使我们对GIS更加感兴趣。

地理信息系统为测绘人员提供了一个一体化工具,使我们可以将各种格式和来源的数据整合在一起,进行维护和管理、使用动态地图来可视化数据、关联信息。这不仅让我们更好的管理和分配资源,还可以进行建模和分析工作,使原始数据产生更为广阔的价值。因此要成为一名优秀的测绘工作者,除了要熟练操作仪器,掌握各类工程测量的方法外,还应该将熟练运用常见的GIS软件,借助GIS的强大功能为我们的工作、生活创造更多的幸福。

中国地质大学信息工程学院

2011年 12 月28日

1-41

第三篇:arcgis上机实习报告

课程实习报告

实习课程:《ArcGIS专业技能训练实习报告》

名:

号:

业:

级:

2012年 6月

20日

ArcGIS专业技能训练实习报告

实习目的:

通过学习Arcgis这款Gis应用软件熟练我们的实际应用能力,深入理解GIS软件应用的核心部分,通过熟练Arcgis能掌握类似相关软件操作,加强动手能力。

实习步骤:

1.对Arcgis软件整体掌握,并与之前各类软件操作对比和学习。

2.具体对软件操作掌握空间数据的采集与组织、数据的处理与变、数据的可视化表达。

3.Arcgis的空间分析能力的掌握:矢量数据的空间分析、栅格数据的空间分析、三维分析、地统计分析、水文分析等。4.掌握Arcgis的空间分析建模。

实习内容:

根据练习内容,选择了练习第3、4、5、7、12章的内容,其余在课下自己练习完成,这些章内容分别为:空间数据的采集与组织、数据的处理与变换、数据的可视化表达、矢量数据空间分析、空间分析建模

Geodatabase是一种采用标准关系数据库技术来表现地理信息的数据模型。Geodatabase支持在标准的数据库管理系统(DBMS)表中存储和管理地理信息。一. 基于Geodatabase的数据库设计

Geodatabase支持面向对象的矢量数据模型,它将地理数据组织成一个数据对象的结构体系。在Geodatabase模型中,实体被表示为属性,行为,关系的对象。Geodatabase还允许用户定义对象之间的关系,以及保持对象之间参照完整性的规则。Geodatabase也定义了简单的对象,地理要素,几何网络,注记要素等多种对象类型。二. Geodatabase中的信息类型

1.表(table):是记录的集合,每个记录(行)中包括许多列(字段);

2.对象类(object classes):对象表示一个没有空间几何的实体,没有位置相关信息,但是可以通过关系类与要素联系起来,一个对象类作为一个表存储在Geodatabase中,一个对象是表中的一行。3.要素类(feature classes):表示有空间几何的实体,有位置相关信息。要素类是具有相同的属性和相同的几何表示类型的要素集合。1)简单要素类:没有拓扑关联,包括点,线,多边形,注记等多种类型,以要素的方式管理,存放在要素集内外均可。

2)复杂要素类则是有拓扑关联的若干个要素类的组合,必须存放在同一个要素数据集中,例如拓扑要素、几何网络等类型。

4.子类(subtype):在要素类内部可以划分若干个次一级的组,每个组是一个子类。每个子类有其自己的完整性规则和GIS行为。5.要素数据集(feature database):要素数据集是一个具有相同空间参照的要素类的集合。

6.关系(relationships):是一种表(或要素类)与表(或要素类)之间的联系机制。关系类建立在对象(或要素)类之间,由一个对象(或要素)类指向另一个对象(或要素)类。

7.栅格数据集(raster data sets):影像作为栅格表来管理。

8.拓扑关系(topology):拓扑关系将参与拓扑的各个要素类集成在一个拓扑图中作为一个拓扑单元来管理,规定同一个要素类中的各个要素如何与其他要素共享几何或不同要素类之间如何共享几何。9.元数据:对数据库中各个数据元素的描述。

10.几何网络(geometric network):若干个要素类作为一个整体参与到几何网络的构造,Geodatabase通过拓扑关联保证参与到几何网络中的各个要素类的空间几何的连通性。几何网络将导致保证网络连通性的行为。

三. Geodatabase的优势:

1.所有图形数据和属性数据统一存储在商业DBMS中。

2.便于使用DBMS支持的多用户并发访问、事务管理、失败事务恢复、用户权限策略等机制,有利于空间信息共享、数据安全,提高了数据库性能。

3.支持智能化的要素、规则和关系。4.完善的用户支持。

四.Geodatabase数据库设计的内容

1.基本内容是规定 构成数据库的要素类、栅格数据集、其他表,以及表之间的各种关系。

2.其中,要素(或对象)类之间的关系通过要素数据集、关系类、拓扑来管理。

3.一个要素数据集中的各个要素类具有相同的空间参照;拓扑类、几何网络中的要素类受拓扑完整性约束。五

Geodatabase数据库设计的步骤

1.用户视图建模 2.定义实体和关系 3.明确实体的表示 4.匹配到Geodatabase模型 5.组织地理数据集

六.将地理实体表示为Geodatabase数据类型

要在识别地理实体并决定其几何表示类型之后,决定数据如何在Geodatabase中表示。具体包括两方面处理:

1.决定各种地理实体的表示类型及其拓扑关系; 2.决定各实体的属性字段。

决定实体的表示类型的依据是其几何表示类型:点实体用点要素、简单节点、复合节点表示,线实体用线要素、简单边、复合边表示,面实体用多边形要素表示,表面实体用TIN或栅格数据集表示,空间位置无关的实体用对象(表)表示。

 其中点、线、面实体的离散分布有两种:

1.独立分布的实体,与其他要素无关,可以表示为简单的点、线、面要素;

2.与其他要素的分布相关,这种点、线实体可以表示为节点、边要素,面实体表示为有拓扑关系的多边形要素。

 考虑要素之间的拓扑关系,定义复合要素类:平面拓扑和几何网络。平面拓扑强制保证要素不能相互交叉而没有交点。如土地或区划系统,采用平面拓扑管理要素间的公共边。

 几何网络强制保持网络要素之间的连通性,是网络编辑易于操作。如对于线状系统,交通网络,多采用几何网络表示。 确定对象的属性类型

1.主要依据要素(或对象)的专题性质而定。

2.每个实体可能有多种属性,依据相关原则确定每种属性(字段)的数据类型,使用默认值、域等工具保证数据的完整性。六. 将数据组织到Geodatabase地理数据集

1.工作包括:

(1).划分要素类和子类(2).规定要素类的拓扑关系(3.)构建地理数据集(4.)组织地理数据库

(1)划分要素类和子类

下列情况下必须建立单列的要素类:

1)当各组相关要素的属性字段组合根本不同时 2)当各组相关要素需要有特有的定制行为时 3)当需要对各组要素赋予不同存取权限时

4)当有些要素要采用版本管理存取而另一些要素不需要版本管理时(2)规定要素类的拓扑关系

1)将相关要素分组为几何网络好或平面拓扑

2)如果要素类是独立点、线、面要素,那么它不参与几何网络或者平面拓扑

3)如果要素类是简单边、简单节点、复合边、复合节点,那么它参与几何网络的构成

4)如果要素类是拓扑关联的多边形要素类,其内部各个要素必须满足特定的拓扑关系(3)构建地理数据集

1)要素数据集是一个容器,使用它可以将相似的要素类组合在一起。2)将具有相同空间参照的要素类组织到同一个要素数据集中是有利的,因为不同要素数据集在运算过程中可能会出现细微的差别而引起数据不一致。3)同时参加到平面拓扑或几何网络中的各个要素类必须被组织到同一个要素数据集中。

(4)最后将要素数据集和要素类组合起来。

1)确定了各要素及其拓扑联系之后,最后需要将它们组合到地理数据库中。2)如果企业用户包括多个部门,不同部门使用不同的数据集。地理数据库可以安装企业组织结构部署。

4)如果使用personal Geodatabases,由于数据库容量的限制,必须对数据库按专题或空间进行分割。七. Geodatabase的建库步骤

1.在F盘中建立自己的文件夹070141; 2.在自己的文件夹中建立个人数据库database;截图说明

3.在personal database中建立点要素a,线要素aa,面要素aaa。八. Geodatabase的拓扑建立

若干个要素类作为一个整体参与到几何网络的构造,Geodatabase通过拓扑关联保证参与到几何网络中的各个要素类的空间几何的连通性。几何网络将导致保证网络连通性的行为。

1.右键单击数据库database,点击new再点击Feature Dataset

截图说明:

出现对话框New Feature Dataset 在name中填写名字topology;2.点击“下一步”出现如下对话框,点击对话框中的Import,又出现对话框在Ext文件夹中点击Blocks.shp,点击Add即可添加数据;

截图说明;

再点击继续点击下一步,下一步,Finish,即可建立topology; 3.右键单击topology,点击Import,再点击Feature Class(mulitiple)

截图说明:

出现如下对话框,在对话框中点击第一个图标浏览,在出现的对话框中加入Ex1中的两个数据Blocks.shp和Parcels.shp,点击Add;

点击ok,则topology中增加了Blocks.shp和Parcels.shp两个数据项; 4.右键单击topology中的Blocks,点击Properties 截图说明:

出现如下对话框, 在对话框中的子类SubtypeField一栏下拉选择Res,在Subtype中设置Code和Description为0,nonres;1,res; 点击确定;

截图说明:

4.同理设置Parcels的Properties;

5.右键单击topology,点击new,再点击Topology:

6.在出现的如下对话框中点击下一步

7在.出现的如下对话框中点击下一步

8.在出现的New Topology如下对话框中点击Select All 截图说明:

9.在出现的New Topology如下对话框中,在Enter the number of ranks中填1;

10.点击下一步,在出现的New Topology对话框中,点击Add Rule,再Add Rule中的三栏中选择Parcels,Must Not Overlap With,Blocks,点击ok; 截图说明:

点击下一步,再点击Finish.再出现的对话框是否拓扑查询,点击否。则在Topology中建立了topology-Topology。

11.打开ArcMap,将topology-Topology拖到ArcMap的Layers中,则在Layers中添加了topology-Topology,Blocks和Parcels; 截图说明:

12.点击工具栏中的View,点击Toolbars,再点击Topology,将出现进行拓扑操作的Topology工具栏;在Editor下拉菜单中点击Starting Editor,将工具激活;

截图说明:

13.点击Topology工具栏的Topology Editor Tool图标,双击弧线段,在结点处进行操作即可

拓扑结果图:

第四篇:ARCGIS 实习报告

Arcgis 实习

第 二 次 实习报 告

班级:地信121 姓名:闻元武 学号:201201694 空间数据管理及属性编辑

一. 实验目的

1.利用ArcCatalog管理地理空间数据库,理解personal Geodatabase空间数据库模型有关概念。2.掌握在ArcMap中编辑属性数据的基本操作。3.掌握根据GPS数据文件生成适量图层的方法和过程。4.理解图层属性表间的连接(join)或关联(Link)关系。二. 实验要求

1.阐述基本原理和概念(要素类,要素数据集)。2.Geodatabase空间数据库模型的特点。

3.1:M 空间查询的实现原理及应用实例。比较连接(Join)和关联(Link)关系的区别和应用。三. 实验内容

1.启动 ArcCatalog 打开一个地理数据库 1.1当ArcCatlog打开后,连接到指定文件夹Exec2.1.2 打开个人空间数据库——National,mdb。可以看到在National,mdb中包含有2个要素数据集,一个关系类和一个属性表。

2.预览地理数据库中的要素类

2.1 ArcCatlog窗口右边的数据显示区内,点击“预览”选项切换到预览视图界面。在目录树中,双击数据集要素集- WorldContainer,点击要素类-Container94激活它。

2.2 在2.1窗口的下方,预览下拉列表中选择“表格”,现在你可以看到 Countries94 的属性表。查看它的属性字段信息。

2.3 在目录树下面,选择WorldCities。查看他的属性信息。

3.创建缩图,并查看元数据 3.1 在目录树中,选择地理数据库National中的要素类-Countries94,切换到“预览”视图,点击工具栏上的“放大镜”按钮,将图层放大到一定区域,然后再点生成并更新缩略图。这时,切换到“内容”视图界面下,并在目录树中选择要素集——WorldContainer数据查看方式更改为缩略图方式。注意此时,要素类的缩图图是不是发生了改变。缩略图已经不是原来的缩略图,而是放大之后的图片。

3.2 点击“元数据”选项页,查看当前要素类的元数据,了解当前要素类是采用什么坐标系,都有哪些属性字段,字段的类型等信息。在元数据工具栏中,从样式表中选择不同的样式,可以看到,元数据显示的格式发生了变化。4.创建个人地理数据库(Personal Geodatabase-PGD)4.1 创建个人地理数据库(Personal Geodatabase-PGD)。

4.2 在ArcCatalog的目录树中,定位到D:盘,右键点击这

D:盘,在出现的菜单中,选择[新建]>>[文件夹],文件夹名称改为 “myGeoDB”。右键选中这个文件夹,在出现的菜单中,点击[新建]>>[个人地理数据库],这会创建一个名称为:“新建个人地理数据库” 的数据库文件,将之改名为“YN.mdb”。

4.3 右键点击数据库文件“YN.mdb”,在出现的菜单中,选择[导入]>>[要素类multiple],在出现的对话框中,打开要导入要素:县界 prj.shp/县城 prj.shp/道路 prj.shp(这些文件在 Exece2 文件夹下,按住Shift键并点击鼠标可同时选择多个 Shape文件)。

4.4 右键点击数据库文件“YN.mdb”,新建【要素集】,并围棋指定坐标系。

4.5 右键点击新建的要素集-KM,在出现的菜单中选择[新建]>>[要素类],在出现的对话框中输入要素类的名称-公交站点,点击<下一步>,再次点击<下一步>按钮。在出现的对话框中选择字段,修改字段的几何类型为“点”(表示此要素类中将要存储的要素类型是点要素,准备用来存储公交站点),点击下一步,我们添加两个字段“站点名称”,“公交站点编号”数据类型都设置成“文本”,点击“完成”按钮。

4.6 新建数据表:右键点击地理数据库-YN.mdb,在出现的菜单中,选择[新建]>>[表],输入“表”名称为“公交线路”,点<下一步>,再次点<下一步>,在对话框中,新添加两个字段

公交站点编号、公交线路(数据类型都设为“文本”),点击“完成”。

4.7 创建公交站点到公交线路一对多的关系(1:M):右键选择地理数据库-YN.mdb,在出现的菜单中选择<新建>-<关系类>,对以下内容进行设定,其它设置接受默认选项。选择关系类型为一对多关系,这样可以建立公交站点到公交线路一对多的关系,因为经过一个公交站点的公交线路有多条,这样,在我们从公交站点分布图是查询某个公交站点时就可以查询经过这个站点所有公交线。

4.8 完成以上步骤后,在ArcCatlog中就可以看到,在地理数据库YN.mdb中,有一个有一个要素集(NewKM),其中包含一个要素类(公交站点)、一个数据表(公交线路)、一个关系类(公交线及公交站 1:M)

5.拖放数据到 ArcMap 中

5.1 启动ArcMap,新建一个空的地图文档,通过拖放的方式添加上面所创建的数据到ArcMap 中。在ArcCatalog中,点击“内容”选项页,在目录树中,点击地理数据库-YN.mdb,将要素类-“公交站点”及属性数据表“公交线路”拖放到ArcMap中。

6.编辑属性数据及进行 1:M的空间查询 编辑公交站点,及公交路线。

7.导入 GPS 数据,生成图层

7.1 启动 ArcMap,切换到数据源视图。添加 GPS 数据,选择GPS.txt。

7.2 执行菜单命令:[工具] >>[添加XY 数据],在XY 数据”窗口中,选择已添加的 XY数据表,指定X坐标字段(东经)和Y 坐标字段(北纬),按 GPS 系统采用的坐标系统为WGS_1984。确定后,在地图显示区域中,就会根据GPS 数据文件中采集的坐标信息创建点状的事件图层。

7.3 在图层控制面板(TOC)中,右键选中根据GPS 数据文件生成的事件图层。在出现的菜单中,执行[数据]>>[导出数据]命令,在导出数据对话框中,指定要导出的文件名称及存储位置。这样就完成了由GPS 数据文件生成图层的过程。

四. 实验总结

4.1 通过本次实习,我加深了对要素类概念的理解,要素类就是指具有相同的几何特征的要素集合,比如我们这里的道路的要素类,县城的要素类等。

4.2 通过本次实习,我还知道要素数据集就是一个集合,在这个集合里面,所有的要素类都具有相同的坐标系统。

4.3 Geodatabase 空间数据库模型的特点:Geodatabase在要素类和数据集中对空间参考信息进行了完整的定义。而且,Geodatabase空间几何数据与属性数据保存在同一个同一个要素类中。

4.4 1:M 空间查询的实现原理及应用实例:将两个属性表关联起来,其中一个属性表中的某一记录与另一属性表中多个记录相关联,当查询某一条记录时就可以查询到与其相关联的其他属性。如实验二中,当查询某一公交站点时,可以将通过此站点的公交路线都显示出来,就属于1:M空间查询。4.5 比较连接(Join)和关联(Link)关系的区别和应用: 区别:

连接:连接可以添加额外的属性数据到到当前图层,也可以使用这些额外的属性数据进行标注。关联:关联可以使数据关联到当前图层关联的数据并不像连接那样添加到图层的属性表中,而是在处理图层的属性数据的时候可以获取关联的数据。

应用:

连接:生成虚拟连接(并不修改数据源)虚拟表,适用:一对多,多对一。关联:在表A中选择一个记录,可以关联并同时选择表中多条记录,适用:一对多。

第五篇:Arcgis Engine开发总结集锦

1.目录

1.目录...................................................................................................................................................................................................................1 2.用ArcEngine的工具条添加图层要素...........................................................................................................................................................2 3.ArcEngine中对Feature的编辑......................................................................................................................................................................5 4.Feature的概念..................................................................................................................................................................................................7 5.如何实现经度纬度到平面坐标的相互转换?(转载).................................................................................................................................7 6.ArcEngine中使用上下左右键移动地图功能的实现....................................................................................................................................9 7.缓冲区的创建.................................................................................................................................................................................................11 8.C#制作鹰眼全过程(引自ESRI中国社区)...................................................................................................................................................13 9.ArcEngine中拓扑的使用-......................................................................................................................................................................86 26.基于AO/AE获取要素信息.......................................................................................................................................................................87 27.ArcEngine中拓扑的使用-..........................................................................................................................................100 IfeatureSelection:SelectFeatures方法介绍..............................................................................................................................................105 常用数据入sde库的代码........................................................................................................................................................................107 ArcEngine开发感想.................................................................................................................................................................................112 Geometry 对象浅析.................................................................................................................................................................................114 AE开发中的一些基本方法(1)数据连接................................................................................................................................................125 2.用ArcEngine的工具条添加图层要素

发现AE比起其它的组件GIS来要好用的多 但也有一些bt的地方

比如说AE没有提供图层编辑的工具条

但最近因为程序里要添加图元 必须得开发图层编辑的功能

于是去找了找资料

发现自带的帮助里有一个MapEditing的示例 但是从AO的示例改造而来 需要从按钮写起 想想如果这样搞的话 倒不如直接用AO算了

一直想省点事

在AE自带的工具条上做点文章

其实AE中也有一组相似的编辑按钮,是用于编辑Graphics的

自然就有了一个想法:能不能先生成一个Graphic,然后将其加载进来 代码分享

private void Form1_Load(object sender, System.EventArgs e){ //清空图层

this.axMapControl1.Map.ClearLayers();

//加载服务器SDE地图信息

ESRI.ArcGIS.esriSystem.IpropertySet Proset = new ESRI.ArcGIS.esriSystem.PropertySetClass();//属性集

ESRI.ArcGIS.Geodatabase.IWorkspaceFactory Fact;//工作空间仓库

ESRI.ArcGIS.Geodatabase.IWorkspace Workspace;//工作空间

Proset.SetProperty(“Server”,“服务器名”);//服务器名

Proset.SetProperty(“Instance”,“端口”);//实例化端口

Proset.SetProperty(“user”,“用户名”);//SDE用户名

Proset.SetProperty(“password”,“密码”);//密码

Proset.SetProperty(“version”,“sde.DEFAULT”);//连接版本

Fact = new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass();//实例化为SDE工作空间仓库 Workspace = Fact.Open(Proset,Int32.Parse(this.Handle.ToString()));//填入属性集

ESRI.ArcGIS.Geodatabase.IFeatureWorkspace FeatureWorkspace;FeatureWorkspace = Workspace as ESRI.ArcGIS.Geodatabase.IFeatureWorkspace;//传递给Feature工作空间

ESRI.ArcGIS.Geodatabase.IFeatureClass FeatureClass;FeatureClass = FeatureWorkspace.OpenFeatureClass(“SDE.BBBB”);//填充所需Feature集合

ESRI.ArcGIS.Carto.FeatureLayer FLayer = new ESRI.ArcGIS.Carto.FeatureLayerClass();FLayer.FeatureClass = FeatureClass;//将Feature加载到图层

axMapControl1.Map.AddLayer(FLayer);//加载图层 axMapControl1.Update();//更新空白区域

axMapControl1.Refresh();//刷新地图视窗 }

private void Form1_Closed(object sender, System.EventArgs e){ ESRI.ArcGIS.esriSystem.IAoInitialize aoi = new ESRI.ArcGIS.esriSystem.AoInitializeClass();aoi.Shutdown();}

private void button1_Click(object sender, System.EventArgs e){ IGraphicsContainerSelect GraphicsContainerSelect =(IGraphicsContainerSelect)axMapControl1.Map;

if(GraphicsContainerSelect.ElementSelectionCount ==0)//判断是否选中图斑

{ MessageBox.Show(“请选中欲导入图斑!”);return;} IWorkspaceEdit WorkspaceEdit;IFeatureLayer FeatureLayer;IFeatureClass FeatureClass;IFeature Feature;IDataset Dataset;

FeatureLayer =(IFeatureLayer)this.axMapControl1.get_Layer(0);//选中导入图层

FeatureClass = FeatureLayer.FeatureClass;//该图层的feature集

Dataset =(IDataset)FeatureClass;//该图层的数据集

WorkspaceEdit =(IWorkspaceEdit)Dataset.Workspace;//关联到编辑空间

WorkspaceEdit.StartEditing(true);//使之可编辑 WorkspaceEdit.StartEditOperation();//开始编辑

Feature = FeatureClass.CreateFeature();//创建空feature Feature.Shape = GraphicsContainerSelect.SelectedElement(0).Geometry;//仅导入最新选中图斑,即多选时只有一个可以导入

Feature.Store();WorkspaceEdit.StopEditOperation();

WorkspaceEdit.StopEditing(true);//结束编辑并保存

IGraphicsContainer GraphicsContainer =(IGraphicsContainer)GraphicsContainerSelect;

GraphicsContainer.DeleteAllElements();//删除graphic图层

axMapControl1.ActiveView.Refresh();//刷新当前视图

MessageBox.Show(“ok”);} 3.ArcEngine中对Feature的编辑

对Feature的编辑分为以下几个部分 1.新建 2.修改 3.删除

涉及到的接口有以下几个 IWorkspaceEdit IFeatureClass IFeatureCursor IFeature 其中IWorkspaceEdit用于启动编辑 开始编辑操作 结束编辑操作 结束编辑 IFeatureClass 是数据的所在地

IFeatureCursor 是一个游标 提供访问数据的接口和修改数据的接口 IFeature 是对象的代表 我们要编辑的目标 编辑的过程如下: 1.添加一个Feature //假设space是一个IWorkspaceEdit //参数表示是否需要使用Undo/Redo功能,该功能的粒度是EditOperator.spaceEdit.StartEditing(false);spaceEdit.StartEditOperator();//添加一个Feature IFeature newFea=feaClass.createFeature();//为Feature 添加属性 设置图形 newFea.Store();//保存属性和图形

spaceEdit.StopEditOperator();//结束编辑操作 //结束编辑过程

//参数表示是否保存编辑 spaceEdit.StopEditing(true);2.添加多个Feature 添加多个Feature也可以向上面一样 使用多次就可以了

当时也可以使用IFeatureCursor来添加数据 3.修改Feature 添加Feature中的修改属性和图形部分就是

每次修改后一定要调用Store方法 这样变化才可以保存下来 4.删除

IFeature 有一个方法Delete 可以用于删除 当时经过测试发现对Shapefile 会抛出异常来。

IFeatureCuror有一个DeleteFeature方法 可以用来删除当前的Feature,经测试

对所有的数据源类型都可以使用。

注意事项

1.不能设置Feature的OID 2.不能设置Feature的Area 3.不能设置Feature的Lenght 4.不能设置Feature的Shape字段,需要调用单独的方法来给Feature关联几何图形。4.Feature的概念

Feature是二次开发中最常用的对象,feature是featureclass中一个记录,从object中派生出来的,因此也具有属性和方法,object又是从row中派生的,所以featureclass其实一张表,featured就是表中的一条记录,feature可以保存空间数据对象,要素中的几何型体对象定义了要素的类型,它可以保存的几何型体对象有点、点集、多边形、多义线。这些都是些简单的要素对象,在有些情况下要素还可以参与拓扑、网络运算。Feature相关接口

Feature有派生出很多类,如:networkfeature、rastercatalogfeature、coverageannotationfeature、annotationfeature、dimensionfeature。feature的主要接口是Ifeature,其中的Extent用来返回要素对象的包络线,显示要素的空间范围;Featuretype返回要素的类型;Shape返回要素的几何型体对象;ShapeCopy得到几何型体对象的一个拷贝。IfeatureBuffer中的Shape得到缓冲要素的几何型体对象

IfeatureEdit中MoveSet、RotateSet、DeleteSet分别是移动、旋转、删除一个或者是多个要素组成的要素集上。Split主要是用来分割几何型体的,通过点分割线,通过多义线分割多边形,分割后旧的被删除,新的要素自动产生。因为每个要素都有对应的属性,要素改变了,其对应的属性也相应的要改变。Splitattributes就是用来分割要素属性字段中的值。该方法可以在Split方法执行后自动执行。IfeatureDraw中的InvalidArea属性得到一个绘画的区域。Draw在显示设备上绘制要素

IfeatureChanges中OriginalShape得到要素的最初几何类型,ShapeChanged指示要素的几何类型是否改变。IfeatureSimplify中SimplifyGeometry按照该元素的拓扑规则进行拓扑一致

5.如何实现经度纬度到平面坐标的相互转换?(转载)

分类:WebGIS网络地理信息系统研究

现在好多人在使用ArcObject的时候都可能需要作经纬度和平面坐标的相互转换。由于经纬度是球面坐标,平面坐标是X-Y的笛卡尔坐标系统,所以这是一个看起来比较难的问题。

好多人一上来就搬出地图学、地图投影学或者测绘学中的投影公式(如高斯投影 或 墨卡托投影),又是基准坐标又是角度的搞的人头都大了。

实际上要想实现这个功能非常easy。ARC Engine中的IPoint就可以进行投影和反投影运算了。投影过程(C#):

/// flatref 投影的坐标系统,这里的54013是世界投影,世界投影所有经纬度都可以转换为平面坐标,但是由于投影面积大失真也会比较大(相当于把整个地球劈成一片片的,然后拉伸最后贴到平面上,失真当然大了)。当然也可以选择精度更高的平面如:esriSRProjCS_Beijing1954GK_23N

对应数值21483 仅仅把北京附近的地球平面拉伸铺在平面上,由于投影面积变小,所以投影经度提高。但是由于面积变小,所以有些经度纬度不能转换,比如所美国的精度纬度用北京投影就投不了。

flatref = pfactory.CreateProjectedCoordinateSystem(54013);

//没什么说的,标准大地经纬度,可以将X-Y逆投影为经度和纬度

earthref = pfactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_NAD1983);

/// 将经纬度点转换为平面坐标。

private IPoint GetProject(double x, double y)

{

IPoint pt = new PointClass();

pt.PutCoords(x, y);

IGeometry geo =(IGeometry)pt;

geo.SpatialReference = earthref;

geo.Project(flatref);

return pt;

}

/// 将平面坐标转换为经纬度。

private IPoint GetGeo(double x, double y)

{

IPoint pt = new PointClass();

pt.PutCoords(x, y);

IGeometry geo =(IGeometry)pt;

geo.SpatialReference = flatref;

geo.Project(earthref);

double xx = pt.X;

return pt;}实际上IPoint的投影和任何地图都没什么大关系,完全可以不用地图,直接调用IPoint进行投影的转换

6.ArcEngine中使用上下左右键移动地图功能的实现

//闪烁目标

public static void FlashFeature(AxMapControl mapControl,IFeature iFeature, IMap iMap){ IActiveView iActiveView = iMap as IActiveView;if(iActiveView!= null){ iActiveView.ScreenDisplay.StartDrawing(0,(short)esriScreenCache.esriNoScreenCache);//根据几何类型调用不同的过程

switch(iFeature.Shape.GeometryType){ case esriGeometryType.esriGeometryPolyline: FlashLine(mapControl, iActiveView.ScreenDisplay, iFeature.Shape);break;case esriGeometryType.esriGeometryPolygon: FlashPolygon(mapControl, iActiveView.ScreenDisplay, iFeature.Shape);break;case esriGeometryType.esriGeometryPoint: FlashPoint(mapControl, iActiveView.ScreenDisplay, iFeature.Shape);break;default: break;} iActiveView.ScreenDisplay.FinishDrawing();} } //闪烁线

static void FlashLine(AxMapControl mapControl,IScreenDisplay iScreenDisplay,IGeometry iGeometry){ ISimpleLineSymbol iLineSymbol;ISymbol iSymbol;IRgbColor iRgbColor;iLineSymbol = new SimpleLineSymbol();iLineSymbol.Width = 4;iRgbColor = new RgbColor();iRgbColor.Red = 255;iLineSymbol.Color = iRgbColor;iSymbol =(ISymbol)iLineSymbol;iSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;mapControl.FlashShape(iGeometry, 3, 200, iSymbol);} //闪烁面

static void FlashPolygon(AxMapControl mapControl, IScreenDisplay iScreenDisplay, IGeometry iGeometry){ ISimpleFillSymbol iFillSymbol;ISymbol iSymbol;IRgbColor iRgbColor;iFillSymbol = new SimpleFillSymbol();iFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid;iFillSymbol.Outline.Width = 12;iRgbColor = new RgbColor();iRgbColor.RGB = System.Drawing.Color.FromArgb(100, 180, 180).ToArgb();iFillSymbol.Color = iRgbColor;iSymbol =(ISymbol)iFillSymbol;iSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;iScreenDisplay.SetSymbol(iSymbol);mapControl.FlashShape(iGeometry, 3, 200, iSymbol);} //闪烁点

static void FlashPoint(AxMapControl mapControl, IScreenDisplay iScreenDisplay, IGeometry iGeometry){ ISimpleMarkerSymbol iMarkerSymbol;ISymbol iSymbol;IRgbColor iRgbColor;iMarkerSymbol = new SimpleMarkerSymbol();iMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSCircle;iRgbColor = new RgbColor();iRgbColor.RGB = System.Drawing.Color.FromArgb(0, 0, 0).ToArgb();iMarkerSymbol.Color = iRgbColor;iSymbol =(ISymbol)iMarkerSymbol;iSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;mapControl.FlashShape(iGeometry, 3, 200, iSymbol);} 7.缓冲区的创建

蓝蓝的小志 发表于 2005-6-5 10:07:08

本文以面图层为例,并且把创建的缓冲区就存储在面图层中,当然也可以把创建的缓冲区另存为一个新的图层。程序运行环境(.NET+AO)

代码如下:

Private Sub ITopologicalOperator_Buffer(ByVal pFeatLyr As ESRI.ArcGIS.Carto.IFeatureLayer, ByVal distance As Double, Optional ByVal pFeatClass As ESRI.ArcGIS.Geodatabase.IFeatureClass = Nothing)'pFeatLyr 为面图层 'distance缓冲距离

Dim pFeatureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass

Dim pTopoOper As ESRI.ArcGIS.Geometry.ITopologicalOperator

Dim pBufferPoly As ESRI.ArcGIS.Geometry.IPolygon

Dim pFeatCursor As ESRI.ArcGIS.Geodatabase.IFeatureCursor

Dim pFeature As ESRI.ArcGIS.Geodatabase.IFeature

Try

pFeatureClass = pFeatLyr.FeatureClass

pFeatCursor = pFeatureClass.Search(Nothing, False)

pFeature = pFeatCursor.NextFeature

Do

If Not(pFeature Is Nothing)Then

pTopoOper = pFeature.Shape()

pBufferPoly = pTopoOper.Buffer(distance)

'pFeature = pFeatClass.CreateFeature

pFeature.Shape = pBufferPoly

pFeature.Store()

pFeature = pFeatCursor.NextFeature()

End If

Loop Until(pFeature Is Nothing)

Catch

MsgBox(Err.Description, MsgBoxStyle.OKOnly, “错误提示”)

pFeature = Nothing

pFeatCursor = Nothing

pBufferPoly = Nothing

pTopoOper = Nothing

pFeatureClass = Nothing

pFeatLyr = Nothing

End Try

pFeature = Nothing

pFeatCursor = Nothing

pBufferPoly = Nothing

pTopoOper = Nothing

pFeatureClass = Nothing

pFeatLyr = Nothing

End Sub 8.C#制作鹰眼全过程(引自ESRI中国社区)

1.axMapControl1是主控件,axMapControl2是鹰眼控件

2.1.鹰眼地图资源载入

3.private void axMapControl1_OnMapReplaced(object sender, IMapControlEvents2_OnMapReplacedEvent e)

4.{

5.//当主地图显示控件的地图更换时,鹰眼中的地图也跟随更换

6.axMapControl2.LoadMxFile(axMapControl1.DocumentFilename);

7.axMapControl2.Extent = axMapControl2.FullExtent;

8.}

9.2.绘制鹰眼矩形框

10.private void axMapControl1_OnExtentUpdated(object sender, IMapControlEvents2_OnExtentUpdatedEvent e)

11.{

12.// 得到新范围

13.IEnvelope pEnv =(IEnvelope)e.newEnvelope;

14.IGraphicsContainer pGra = axMapControl2.Map as IGraphicsContainer;

15.IActiveView pAv = pGra as IActiveView;

16.//在绘制前,清除axMapControl2中的任何图形元素

17.pGra.DeleteAllElements();

18.IRectangleElement pRectangleEle = new RectangleElementClass();

19.IElement pEle = pRectangleEle as IElement;

20.pEle.Geometry = pEnv;

21.//设置鹰眼图中的红线框

22.IRgbColor pColor = new RgbColorClass();

23.pColor.Red = 255;

24.pColor.Green = 0;

25.pColor.Blue = 0;26.pColor.Transparency = 255;27.//产生一个线符号对象

28.ILineSymbol pOutline = new SimpleLineSymbolClass();

29.pOutline.Width = 2;

30.pOutline.Color = pColor;

31.//设置颜色属性

32.pColor = new RgbColorClass();

33.pColor.Red = 255;

34.pColor.Green = 0;

35.pColor.Blue = 0;

36.pColor.Transparency = 0;

37.//设置填充符号的属性

38.IFillSymbol pFillSymbol = new SimpleFillSymbolClass();

39.pFillSymbol.Color = pColor;

40.pFillSymbol.Outline = pOutline;

41.IFillShapeElement pFillShapeEle = pEle as IFillShapeElement;

42.pFillShapeEle.Symbol = pFillSymbol;

43.pGra.AddElement((IElement)pFillShapeEle, 0);

44.pAv.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);

45.}

46.3.实现互动

47.private void axMapControl2_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e)

48.{

49.IPoint pPt=new PointClass();

50.pPt.PutCoords(e.mapX ,e.mapY);51.//改变主控件的视图范围

52.axMapControl1.CenterAt(pPt);

53.} 9.ArcEngine中拓扑的使用--

拓扑(ITopology)的使用包括 1.建立拓扑 2.验证拓扑

3.编辑过程中保证拓扑的正确 4.查询系统中存在的拓扑 1.首先 来看看建立拓扑

Topology实现了ITopology这个接口 但是给类是不能用来创建对象的。

必须要通过调用 ITopologyContainer::CreateTopology这个方法来建立一个Topology FeatureDataset 实现了ITopologyContainer这个接口。那么 这就是说拓扑只能在一个

FeatureDataset的范围内建立。而不能独立存在于Workspace中。这样做的原因是需要保证 参与同一个拓扑的FeatureClass具有同一个投影坐标系统。建立拓扑后需要将ObjectClass 加入到拓扑中去。这样这个拓扑就可以用来验证这几个ObjectClass 的对象之间的关系了。验证关系就要有规则,规则是由ITopologyRule来表达的。ITopologyRule必须要被 加入到一个ITopologyRuleContainer中去。而Topology实现了这个接口。一个ITopologyRule用来表达两个ObjectClass的对象之间的某个关系。具体代码参看接口就可以了。2.验证拓扑

ITopology有一个方法 ValidateTopology 用来验证指定区域内的拓扑。需要注意 没有版本 的拓扑可以在 任何时候验证。而有版本的拓扑必须在编辑回话中验证。3.拓扑编辑 1.移动共用点

1.首先需要打开拓扑 建立拓扑图(ITopologyGraph)代码如下:

//topoLayer 是一个打开的拓扑图层 ITopologyGraph pTG=topoLayer.Topology.Cache;pTG.Build(pA.Extent,false);2.然后 需要获得当前节点或者边 这个操作要使用拓扑图的点击测试 ITopologyElement topeEle pTG.HitTest(...ref topeEle);这个方法在点击测试成功的时候返回true.而且会通过topeEle这个ref 参数将选中的元素(点或者边)返回.3.还有一种获取节点的方法

首先调用拓扑图的Select方法 选中点击测试的元素(pTG.Select)然后可以查询拓扑图的选中节点集合 就可以找到该节点(pTG.NodeSelection)4.为该元素使用一个Feedback.//其中 pNode 就是当前节点 sr 是参考坐标系 可以使用null //还有给Feedback设置Display m_pNodeFeedback =pTG.GetSplitMoveNodeFeedback(pNode,false,sr);m_pNodeFeedback.Display= activeView.ScreenDisplay;5.在鼠标移动的时候 调用Feedback的MoveTo 方法。if(m_pNodeFeedback!=null){

//activeView 是活动的试图

//首先要把将点坐标转换为地图中的坐标。//然后调用MoveTo 方法

IPoint pt=activeView.ScreenDisplay.DisplayTransformation.ToMapPoint(X,Y);m_pNodeFeedback.MoveTo(pt);} 6.在鼠标释放的时候 //获取拓扑图

ITopologyGraph pTG=topoLayer.Topology.Cache;//转换坐标 IPoint pt=pA.ScreenDisplay.DisplayTransformation.ToMapPoint(X,Y);//获得正在做拓扑编辑的元素

ITopologyNode pTN=(ITopologyNode)m_pTopoElement;//实施拓扑编辑

pTG.SplitMoveNode(pTN,pt,false);//提交拓扑编辑结果 IEnvelope pE;pTG.Post(out pE);4.查询系统中的拓扑

还是ITopologyContainer 这个接口 这个接口有FeatureDataset这个唯一的实现。CreateTopology 建立一个新的拓扑

DefaultClusterTolerance The default cluster tolerance as per the topology engine.MaximumClusterTolerance The maximal cluster tolerance as per the topology engine.MinimumClusterTolerance The minimal cluster tolerance as per the topology engine.Topology 通过索引打开拓扑.TopologyByID 通过ID打开拓扑.TopologyByName 通过名字打开拓扑

TopologyCount 拓扑的数目

10.为什么使用接口编程{转载}

进行接口的介绍,必须介绍一下程序语言发展的历史才行,鲁迅先生说过“治学先治史”,明白了程序语言发展的前世今生,才能知道为什么这么多语言为什么会这样,为什么么会那样?

计算机出现以后,科学家相继开发了多种语言,从smalltalk,Pascal,Basic,C语言,C++,java,.net等等,这些语言的发展步伐,可以看作是从面向过程向面向对象发展的一段历史。很多面向对象的书在介绍自己的历史的时候,都会给读者介绍这一段历史,并鼓吹OO编程是多么多么的优异。问题是,很多刚开始学程序的人根本不知道为什么要有这个转变,他们也很难理解OO语言中的虚函数,接口等概念到底为了什么而提出来。

我们在了解这一段历史以前,首先给大家介绍一个概念??“粒度”,什么是粒度?作者认为所谓粒度其实就是一个程序中使用代码单元的组合尺度,我们可以举一个例子,沙砾??砖块??房屋模板,我们设想去修建一座房子,其实有很多中修筑方法,如果你不闲麻烦,可以使用沙砾一点点地建筑,或者将沙砾烧制为砖块,用砖块来砌,甚至直接从工厂购买房屋的门,窗,墙组件来堆砌。这三种不同的方法代表了三种不同的组合尺度。沙砾是最小的单位,使用它搭建小的房子说不定还可以,但是毫无疑问,我们必须使用很多很多“沙砾”,不便于管理;砖块比沙砾聚合了一层,可以用来修建较大的房子了;房屋模板是最高的尺寸,使用它可以快速地搭建大规模的房屋。这三种尺度的区别和联系,与我们编写程序概念是有很大的相似之处的。

在早期学习Pascal,老师告诉我们这种面向过程语言的最基本的单元是过程和函数,它们是程序中的最小的组件。过程和函数可以实现最基本的代码重用,当我们把某些固定功能的代码使用过程和函数编写后,我们可以在程序中调用它们而不必在任何需要的地方都写上这样一段代码,这样的好处是显而易见的。在一些小型的程序里面,使用过程和函数是合适的,但是在大中型程序中,它们的弊端就显示出来,过程和函数的粒度太低了,如果我们一个系统,有10000个函数和过程,我们的程序员将不得不花费大量的时间去寻找和维护它们,10000个没有任何关系的函数和过程的管理难度是显而易见的,就好像10000个人的企业一样,如果没有部门和职务,这还不乱了套?!

面向对象语言的出现,就是为了解决这个问题,别听OO语言吹的天花乱坠,其实它出现就为一个理由??提高编程的粒度。面向对象语言的基本单位是类 CLASS,类封装了很多数据成员和成员函数,过程,将最小组件的提高了一个等级,我们需要直接操作的不是过程和函数了,而是一个个更高层次上的类。我们把10000人分了很多部门,不同的部门负责不同的事宜,这样公司终于可以走上正轨了。

做成了类CLASS是否就万事大吉了呢?不一定,新的问题随之而来,也许我们有一个部门的人很多,可以做很多事情,如何在部门内部实现更好的管理呢?好比我们有一个类,它提供了很多种方法和属性,这些方法和属性其实可以分为一堆堆,为不同的功能服务,但是我们的类并没有做这个管理。在AO种,map对象拥有很多功能,比如管理图层,管理元素,管理选择集,进行地图显示,每种不同的功能都有好多方法和属性,现在这些属性和方法是杂乱无章,没有任何区别堆积在一个类里面的,当我们的程序员需要寻找一个方法的时候,不得不一个个去寻找,很不方便。

这个时候,接口interface出现了,C++的发明者第一次提出纯虚函数(其实就是接口)概念的时候,遭到了很多抵制,很多人都不明白接口的意义何在,我们用虚函数好好的,何必又出来个啥东西都没有的空架子?说它是类吧,又不能实现产生一个对象;说它是对象吧,又没有方法体来使用。接口出来干了一件好事,就是将类内部进行分类。对于map对象,我们可以做好几个接口,这些接口中定义不同功能的方法,函数和属性,map类实现这些接口,这样我们可以使用接口定义,实现对象。因此,所谓接口就是一系列相关方法与属性集合的定义。

Dim pGraphicsContainer as iGraphicsContainer pGraphicsContainer=application.document.ActiveView.focusMap pGraphicsContainer可以使用的属性和方法就只能是它定义的那部分了,而不能使用管理元素等的接口定义的方法和属性,那我们如何使用其它的功能呢?这就是所谓的QI(Query Interface)功能。从一个接口查询另一个接口。

Dim pGeoFeatureLayer as iGeofeatureLayer pGeoFeatureLayer= pGraphicsContainer QI

好了,我们罗嗦了这么多,已经走进了COM的概念了,在正式介绍COM以前我们得最后罗嗦一点:计算机语言的发展历史,其实就是一部不断提高组件粒度的历史,不断提高代码重用的历史。以前我们使用过程和函数,后来我们使用类,现在我们使用接口,都是为了一个目的,让我们操作的组件在具体和抽象之间寻找一个平衡点。太具体了,如过程和函数,就没有了框架;太抽象,如类,就无法分别。

一个代码示例:

public interface IForm { void Show();void ShowDialog();}

public class A:IForm { public void Show(){ } public void ShowDialog(){ } }

public class B:IForm { public void Show(){ } public void ShowDialog(){ } }

public class FormFactory { public static IForm CreateInstance(string parm){

if(parm == “A”){ return new A();else if(parm == “B”)return new B();} return null;} } 这是逻辑的抽象 这是方法的具体 这就是编写程序的哲学.11.ArcEngine中闪烁目标

//闪烁目标

public static void FlashFeature(AxMapControl mapControl,IFeature iFeature, IMap iMap){ IActiveView iActiveView = iMap as IActiveView;if(iActiveView!= null){ iActiveView.ScreenDisplay.StartDrawing(0,(short)esriScreenCache.esriNoScreenCache);//根据几何类型调用不同的过程

switch(iFeature.Shape.GeometryType){ case esriGeometryType.esriGeometryPolyline: FlashLine(mapControl, iActiveView.ScreenDisplay, iFeature.Shape);break;case esriGeometryType.esriGeometryPolygon: FlashPolygon(mapControl, iActiveView.ScreenDisplay, iFeature.Shape);break;case esriGeometryType.esriGeometryPoint: FlashPoint(mapControl, iActiveView.ScreenDisplay, iFeature.Shape);break;default: break;} iActiveView.ScreenDisplay.FinishDrawing();} } //闪烁线

static void FlashLine(AxMapControl mapControl,IScreenDisplay iScreenDisplay,IGeometry iGeometry){ ISimpleLineSymbol iLineSymbol;ISymbol iSymbol;IRgbColor iRgbColor;iLineSymbol = new SimpleLineSymbol();iLineSymbol.Width = 4;iRgbColor = new RgbColor();iRgbColor.Red = 255;iLineSymbol.Color = iRgbColor;iSymbol =(ISymbol)iLineSymbol;iSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;mapControl.FlashShape(iGeometry, 3, 200, iSymbol);} //闪烁面

static void FlashPolygon(AxMapControl mapControl, IScreenDisplay iScreenDisplay, IGeometry iGeometry){ ISimpleFillSymbol iFillSymbol;ISymbol iSymbol;IRgbColor iRgbColor;iFillSymbol = new SimpleFillSymbol();iFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid;iFillSymbol.Outline.Width = 12;iRgbColor = new RgbColor();iRgbColor.RGB = System.Drawing.Color.FromArgb(100, 180, 180).ToArgb();iFillSymbol.Color = iRgbColor;iSymbol =(ISymbol)iFillSymbol;iSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;iScreenDisplay.SetSymbol(iSymbol);mapControl.FlashShape(iGeometry, 3, 200, iSymbol);} //闪烁点

static void FlashPoint(AxMapControl mapControl, IScreenDisplay iScreenDisplay, IGeometry iGeometry){ ISimpleMarkerSymbol iMarkerSymbol;ISymbol iSymbol;IRgbColor iRgbColor;iMarkerSymbol = new SimpleMarkerSymbol();iMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSCircle;iRgbColor = new RgbColor();iRgbColor.RGB = System.Drawing.Color.FromArgb(0, 0, 0).ToArgb();iMarkerSymbol.Color = iRgbColor;iSymbol =(ISymbol)iMarkerSymbol;iSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;mapControl.FlashShape(iGeometry, 3, 200, iSymbol);} 12.创建多个ArcSDE实例

编号: 000037 相关产品及版本: ArcSDE 3.x,8.x,9.0平台: N/A 提交时间: 2004-08-23

修改时间: 2004-08-31 提交人: 吴乐茂 内容摘要

有时候,我们需要有多于一个的ArcSDE实例同时运行。只要存在多个数据库实例,就可以实现这个目的。ArcSDE与RDBMS之间必须是一个一一对应的关系。ArcSDE会锁定版本表,以保证每个数据库实例只对应一个ArcSDE实例。

过程描述

对于Windows:

1.拷贝 %SDEHOME% 到一个新的位置。

2.用适当的RDBMS连接变量(如RACLE_SID)更新新的dbinit.sde 文件。3.用新的实例名、端口号和网络协议更新 %SDEHOME%etcservices.sde文件。

4.添加服务名、端口号和网络协议到 WINNTsystem32driversetcservices 文件中。须确认所用的端口号没有被用过。5.删除新的giomgr.log文件中的内容。

6.如果需要,更新新的giomgr.defs文件,以指定新实例的操作参数。

7.如果需要,更新新的dbtune.sde 文件,以指定参数给在新实例的数据库中创建数据时使用。

8.确认SDEHOME 变量指向正确的新ArcSDE实例位置,并运行给对应数据库使用的sdesetup 命令来创建新数据的存储表。9.使用 “sdeservice-o create” 命令创建新的ArcSDE服务。

对于UNIX:

1.给新实例创建一个新的工作目录。

2.拷贝 $SDEHOME 到新创建的工作目录。

3.用适当的RDBMS 连接变量(如ORACLE_SID)更新新的dbinit.sde 文件。4.用新的实例名、端口号和网络协议更新 $SDEHOME/etc/services.sde 文件。

5.添加服务名、端口号和网络协议到 /etc/services 文件。须确认所用的端口号没有被用过。6.删除新的giomgr.log文件中的内容。

7.如果需要,更新新的giomgr.defs文件,以指定新实例的操作参数。

8.如果需要,更新新的dbtune.sde 文件,以指定参数给在新实例的数据库中创建数据时使用。

9.确认SDEHOME 变量指向正确的新ArcSDE实例位置,并运行给对应数据库使用的sdesetup 命令来创建新数据的存储表。

常用ArcSDE命令 启动cmd 1.创建和删除ArcSDE服务操作命令(sdeservice)创建ArcSDE for oracle9i服务 sdeservice-o create-d oracle9i,sid-p sde-i esri_sde 删除ArcSDE for oracle9i服务 sdeservice-o delete-i esri_sde-d oracle9i,sid 注:-d 后面填写数据库类型及其SID sdeservice命令帮助 创建、删除SDE服务

2.ArcSDE 服务操作命令(sdemon)

检测服务状态命令: Sdemon-o status-I esri_sde 启动服务命令: Sdemon-o start-I esri_sde-p sde 停止服务命令: Sdemon-o shutdown-I esri_sde-p sde Sdemon命令帮助

更多操作命令,请查看路径“ArcSDEora9iexebin”下的“*.exe”文件

13.空间查询与空间分析功能

GIS的面向用户的应用功能不仅仅表现在它能提供一些静态的查询、检索数据,更有意义的在于用户可以根据需要建立一个应用分析的模式,通过动态的分析,从而为评价、管理和决策服务。这种分析功能可以在系统操作运算功能的支持下或建立专门的分析软件来实现,如空间信息量测与分析、统计分析、地形分析、网络分析、叠置分析、缓冲分析、决策支持等。系统本身是否具有建立各种应用模型的功能是判别它好坏的重要标志之一,因为这种功能在很大程度上决定了该系统在实际应用中的灵活性和经济效益。

空间查询和空间分析是从GIS目标之间的空间关系中获取派生的信息和新的知识,用以回答有关空间关系的查询和应用分析。

拓扑空间查询

在此操作中,用户将地图当作查询工具,而不仅仅是数据载体。空间目标之间的拓扑关系可以有两类:一种是几何元素的结点、弧段和面块之间的关联关系,用以描述和表达几何元素间的拓扑关系;另一种是GIS中地物之间的空间拓扑关系,可以通过关联关系和位置关系隐含表达,用户需通过特殊的方法查询。

这些空间关系主要有以下几项:面与面的关系,如检索与某个面状地物相邻的所有多边形及属性;线与线的关系,如检索与某一主干河相关联的所有支流;点与点的关系,如检索到某点一定距离内的所有点状地物;线与面的关系,如检索某公路所经过的所有县市或某县市内的所有公路;点与线的关系,如某河流上的所有桥梁;点与面的关系,如检索某市所有银行分布点。

缓冲区分析

缓冲区用以确定围绕某地要素绘出的定宽地区,以满足一定的分析条件。点的缓冲区是个圆饼,线的缓冲区是个条带状,多边形的缓冲区则是个更大的相似多边形。缓冲区分析是GIS中基本的空间分析功能之一,尤其对于建立影响地带是必不可少的。如道路规划中建立缓冲区以确定道路两边若干距离内的土地利用性质。

叠加分析

叠加分析提供根据两幅或两幅以上图层在空间上比较地图要素和属性的能力,通常有合成叠加和统计叠加之分,前者是根据两组多边形边界的交点建立具有多重属性的多边形,后者则进行多边形范围的属性特征统计分析(如图1-3所示)。合成叠加得到一张新的叠加图,产生了许多新多边形,每个多边形都具有两种以上的属性。统计叠加的目的是统计一种要素在另一种要素中的分布特征。

距离分析及相邻相接分析

距离分析提供了在地图上距离的功能,相邻分析确定哪些地图要素与其它要素相接触或相邻,而相接分析则结合距离和相邻分析两者的针对性,提供确定地图要素间邻近或邻接的功能。相邻和相接分析广泛应用于环境规划和影响评价的公共部门。大多数GIS软件目前不能直接进行相邻相接分析,而是通过先建立一定要求的缓冲区,再与其它图形要素进行叠置分析的间接方法解决。地形分析功能

通过数字地形模型DTM,以离散分布的平面点来模拟连续分布的地形,再从中内插提取各种地形分析数据,地形分析包括以下内容: 等高线分析

等高线图是人们传统上观测地形的主要手段,可以从等高线上精确地获得地形的起伏程度,区域内各部分的高程等。透视图分析

等高线虽然精确,但不够直观,用户往往需要从直观上观察地形的概貌,所以GIS通常具有绘制透视图的功能,有些系统还能在三维空间格网上着色,使图形更为逼真。坡度坡向分析

在DTM中计算坡度和坡向,派生出坡度坡向图供地形分析(如日照分析、土地适宜性分析等)。断面图分析

用户可以在断面图上考察该剖面地形的起伏并计算剖面面积,以便用于工程设计和工程量算。

地形表面面积和填挖方体积计算

利用DTM数据,可以比较容易地求出所需要地区的地形表面面积以及施工区域内填挖方的体积(土石方量)。

制图功能、地理数据库、空间查询与空间分析能力是GIS最具有独特吸引力所在。而系统是否具有良好的用户接口和各种应用分析程序的支持也是至关重要的,但是应由GIS开发人员和用户来共同完成的。

地理信息系统技术广泛应用于农业、林业、国土资源、地矿、军事、交通、测绘、水利、广播电视、通讯、电力、公安、社区管理、教育、能源等几乎所有的行业,并正在走进人们日常的工作、学习和生活中。

地理信息系统的主要任务是对与地理空间位置或区域有关的社会经济、人文景观、自然资源及环境等多种信息进行综合管理和分析,主要任务有以下三个方面.14.AO中的空间关系

最近在做AO的一些东西,有些空间关系让我搞不太懂,查到一个东西,还是很好的 名词解释:

Boundary(边界):

只有线和面才有边界。面的边界是指组成面的框架线;线的边界是指线的二个端点(即起点和终点,不包括中间部分的节点);点没有边界。Interior(内部):

除去边界后剩下的部分即是一个要素的内部。因此线的内部指除去端点后的部分;面的内部是指除去框架线后的部分;点的内部就是点本身。Exterior(外部):

除去该要素后的剩余的空间范围即是该要素的外部。空间关系具体描述(Queryable Spatial Relationships): 示意图:

空间关系:

1, esriSpatialRelTouches(邻接)应用范围:

除点与点之间的关系外,其它的要素之间都可以具有该关系。描述:

如果二个要素有相同的边界,且它们内部不相交的话,称这二个要素之间的关系是邻接的关系,图1-

1、2-

1、3-

1、3-2,注意图3-3中点与线是包涵的关系。

当查询要素和被查询要素具有该关系时,即spatialRel的值是esriSpatialRelTouches,则会返回查询要素。2, esriSpatialRelCrosses(交叉)应用范围:

线与面,线与线等。不能用于面与面(面与面相交部分是面,不能二个要素中的最高维数低一),面与点,点与线(二个要素的维数差2)。描述:

如果二个要素的相交部分不为空,并且相交部分形状的维数比两个要素中最高维数低1(即线面交叉是线,线线交叉是点)则称这二个要素具有交叉关系,图2-

4、4-1,图2-1中中二条线的关系属于邻接关系,而不属于交叉关系,因为它们的内部相交部分为空。当查询要素和被查询要素具有该关系时,即spatialRel的值是esriSpatialReCrosses,则会返回查询要素。3, esriSpatialRelOverlaps(重叠关系)应用范围:

线与线,面与面之间,其它的不具有该关系。描述:

二个同维的要素之间的相交部分的图形具有与这二个要素相同的维数的,且不与任何一个要素完全相同,则称这二个要素重叠。图1-

2、2-2均是重叠关系,但是2-3中的二条线不是重叠关系,因为相交的部分与黄色的线完全相同。

当查询要素和被查询要素具有该关系时,即spatialRel的值是esriSpatialRelOverlaps,则会返回查询要素。4,esriSpatialRelWithin和esriSpatialRelContains(包涵)应用范围:

所有要素类之间均具有该关系。描述:

该关系可细分为一个要素完全位于另一个要素的内部和一个要素完全包涵另外一个要素,它们是相对的关系。如果说要素1完全位于要素2的内部,则要素2完全包涵要素1。

当查询的要素完全位于被查询的要素内部的话(即spatialRel的值是esriSpatialRelWithin),则返回被查询的要素;同时如果查询的要素完全被被查询的要素包括时(即spatialRel的值是esriSpatialRelContains)则返回被查询的要素。5,esriSpatialRelIntersects(相交)描述:

相交关系是一个广义的关系,包括上述4种关系。因此如果spatialRel的值是esriSpatialRelIntersects关系的话,只要查询要素和被查询要素之间满足上述四种空间关系的任一种空间关系,即可返回被查询的要素。6,esriSpatialRelRelate 描述:

需要通过SpatialRelDescription属性对二个要素的空间关系进行定制,可以对二个要素的内部,外部,边界之间的相交的情况进行描述,例如:字符串'****T***'代表的是二个要素共享边界。

15.ArcGIS Engine 中的相交分析的实现

在ArcGIS Engine中实现点和面进行相交分析,应该是用IBasicGeoprocessor.Intersect方法,不知道对不对啊?

用点和面进行相交分析,主要目的是为了确定点在哪个区域内!比如可以用一个井的点图层和一个行政区划的面图层进行相交分析,得到的是一个井的点图层,而此图层的属性包含了两个图层的属性,从而通过对属性表的查询,来确定在某个区域内井的个数等等信息。以下代码编译通过,但是在运行时,就报错,说是参数错误,各位帮忙看看,谢谢!1

private void M_OverLayer_Click(object sender, System.EventArgs e)2

{ 3

try 4

{ 5

//分析层

ILayer pLayer=this.axMapControl1.get_Layer(0);7

IFeatureLayer pInputFeatLayer=pLayer as IFeatureLayer;

ITable pInputTable=pLayer as ITable;9

IFeatureClass pInputFeatClass=pInputFeatLayer.FeatureClass;10 11

15

21

26

31

//叠加表

pLayer=this.axMapControl1.get_Layer(1);ITable pOverlayTable=pLayer as ITable;//叠加分析表

IFeatureClassName pFeatClassName=new FeatureClassNameClass();pFeatClassName.FeatureType=esriFeatureType.esriFTSimple;pFeatClassName.ShapeFieldName=“shape”;pFeatClassName.ShapeType=pInputFeatClass.ShapeType;//工作空间名称

IWorkspaceName pNewWSName=new WorkspaceNameClass();pNewWSName.WorkspaceFactoryProgID = “esriDataSourcesFile.ShapefileWorkspaceFactory”;pNewWSName.PathName = @“C:temp”;//数据集名称

IDatasetName pDatasetName=pFeatClassName as IDatasetName;pDatasetName.Name=“ss”;pDatasetName.WorkspaceName=pNewWSName;//几何处理

IBasicGeoprocessor pBGP=new BasicGeoprocessorClass();IFeatureClass pOutputFeatClass=pBGP.Intersect(pInputTable,false,pOverlayTable,false,0.01,pFeatClassName);

//输出要素层设置

IFeatureLayer pOutputFeatLayer=new FeatureLayerClass();37

pOutputFeatLayer.FeatureClass=pOutputFeatClass;38

pOutputFeatLayer.Name=pOutputFeatClass.AliasName;39 40

this.axMapControl1.AddLayer((ILayer)pOutputFeatClass,0);41

axMapControl1.Update();42

} 43

catch(Exception ex)44

{ 45

MessageBox.Show(ex.Message);46

} 47

} 16.GIS基本概念集锦

1、地理信息系统(geographic information system,即gis)——一门集计算机科学、信息学、地理学等多门科学为一体的新兴学科,它是在计算机软件和硬件支持下,运用系统工程和信息科学的理论,科学管理和综合分析具有空间内涵的地理数据,以提供对规划、管理、决策和研究所需信息的空间信息系统。gis有以下子系统:数据输入子系统,数据存储和检索子系统,数据操作和分析子系统,报告子系统.信息系统

非空间的 空间的

管理信息系统 非地理学的 gis cad/cam 其他gis lis 社会经济,人口普查 基于非地块,基于地块的2、比较gis与cad、cac间的异同。

cad——计算机辅助设计,规则图形的生成、编辑与显示系统,与外部描述数据无关。cac——计算机辅助制图,适合地图制图的专用软件,缺乏空间分析能力。

gis——地理信息系统,集规则图形与地图制图于一身,且有较强的空间分析能力。

3、图层:将空间信息按其几何特征及属性划分成的专题。

4、地理数据采集——实地调查、采样;传统的测量方法,如三角测量法、三边测量法;全球定位系统(gps);现代遥感技术;生物遥测学;数字摄影技术;人口普查。

5、信息范例——传统的制图方法,称为信息范例,即假定地图本身是一个最终产品,通过使用符号、分类限制的选择等方式交换空间信息的模式。这个范例是传统的透视图方法,由于原始而受到很多限制,地图用户不能轻易获得预分类数据。也就是说,用户只限于处理最终产品,而无法将数据重组为更有效的形式以适应环境或需求的变化。

6、分析范例(整体范例)——存储保存原始数据的属性数据,可根据用户的需求进行数据的显示、重组和分类。整体范例是一种真正的用于制图学和地理学的整体方法。

7、栅格——栅格结构是最简单最直接的空间数据结构,是指将地球表面划分为大小均匀紧密相邻的网格阵列,每个网格作为一个象元或象素由行、列定义,并包含一个代码表示该象素的属性类型或量值,或仅仅包括指向其属性记录的指针。因此,栅格结构是以规则的阵列来表示空间地物或现象分布的数据组织,组织中的每个数据表示地物或现象的非几何属性特征。特点:属性明显,定位隐含,即数据直接记录属性本身,而所在的位置则根据行列号转换为相应的坐标,即定位是根据数据在数据集中的位置得到的,在栅格结构中,点用一个栅格单元表示;线状地物用沿线走向的一组相邻栅格单元表示,每个栅格单元最多只有两个相邻单元在线上;面或区域用记有区域属性的相邻栅格单元的集合表示,每个栅格单元可有多于两个的相邻单元同属一个区域。

8、矢量——它假定地理空间是连续,通过记录坐标的方式尽可能精确地表示点、线、多边形等地理实体,坐标空间设为连续,允许任意位置、长度和面积的精确定义。对于点实体,矢量结构中只记录其在特定坐标系下的坐标和属性代码;对于线实体,用一系列坐标对的连线表示;多边形是指边界完全闭合的空间区域,用一系列坐标对的连线表示。

9、“拓扑”(topology)一词来源于希腊文,它的原意是“形状的研究”。拓扑学是几何学的一个分支,它研究在拓扑变换下能够保持不变的几何属性——拓扑属性(拓扑属性:一个点在一个弧段的端点,一个点在一个区域的边界上;非拓扑属性:两点之间的距离,弧段的长度,区域的周长、面积)。这种结构应包括:唯一标识,多边形标识,外包多边形指针,邻接多边形指针,边界链接,范围(最大和最小x、y坐标值)。地理空间研究中三个重要的拓扑概念(1)连接性:弧段在结点处的相互联接关系;(2)多边形区域定义:多个弧段首尾相连构成了多边形的内部区域;(3)邻接性:通过定义弧段的左右边及其方向性来判断弧段左右多边形的邻接性。

10、矢量的实体错误——伪节点:即需要假节点进行识别的节点,发生在线和自身相连接的地方(如岛状伪结点——显示存在一个岛状多边形,这个多边形处于另一个更大的多边形内部),或发生在两条线沿着平行路径而不是交叉路径相交的地方(节点——表示线与线间连接的特殊点)。摇摆结点:有时称为摇摆,来源于3种可能的错误类型:闭合失败的多边形;欠头线,即结点延伸程度不够,未与应当连接的目标相连;过头线,结点的线超出想与之连接的实体。碎多边形:起因于沿共同边界线进行的不良数字化过程,在边界线位置,线一定是不只一次地被数字化。高度不规则的国家边境线,例如中美洲,特别容易出现这样的数字变形。标注错误:丢失标注和重复标注。异常多边形:具有丢失节点的多边形。丢失的弧。

11、空间分析方法——

1、空间信息的测量:线与多边形的测量、距离测量、形状测量;

2、空间信息分类:范围分级分类、邻域功能、漫游窗口、缓冲区;

3、叠加分析:多边形叠加、点与多边形、线与多边形;

4、网络分析:路径分析、地址匹配、资源匹配;

5、空间统计分析:插值、趋势分析、结构分析;

6、表面分析:坡度分析、坡向分析、可见度和相互可见度分析。

12、欧拉数——最通常的空间完整性,即空洞区域内空洞数量的度量,测量法称为欧拉函数,它只用一个单一的数描述这些函数,称为欧拉数。数量上,欧拉数=(空洞数)-(碎片数-1),这里空洞数是外部多边形自身包含的多边形空洞数量,碎片数是碎片区域内多边形的数量。有时欧拉数是不确定的。

13、函数距离——描述两点间距离的一种函数关系,如时间、摩擦、消耗等,将这些用于距离测量的方法集中起来,称为函数距离。

14、曼哈顿距离——两点在南北方向上的距离加上在东西方向上的距离,即d(i,j)=|xi-xj|+|yi-yj|。对于一个具有正南正北、正东正西方向规则布局的城镇街道,从一点到达另一点的距离正是在南北方向上旅行的距离加上在东西方向上旅行的距离因此曼哈顿距离又称为出租车距离,曼哈顿距离不是距离不变量,当坐标轴变动时,点间的距离就会不同。

15、邻域功能——所谓邻域是指具有统一属性的实体区域或者焦点集中在整个地区的较小部分实体空间。邻域功能就是在特定的实体空间中发现其属性的一致性。它包括直接邻域和扩展邻域。

16、缓冲区分析——是指根据数据库的点、线、面实体基础,自动建立其周围一定宽度范围内的缓冲区多边形实体,从而实现空间数据在水平方向得以扩展的空间分析方法。缓冲区在某种程度上受控于目前存在的摩擦表面、地形、障碍物等,也就是说,尽管缓冲区建立在位置的基础上,但是还有其他实质性的成分。确定缓冲区距离的四种基本方法:随机缓冲区、成因缓冲区、可测量缓冲区、合法授权缓冲区。

17、统计表面——表面是含有z值的形貌,z值又称为高度值,它的位置被一系列x和y坐标对定义且在区域范围内分布。z值也常被认为是高程值,但是不必局限于这一种度量。实际上,在可定义的区域内出现的任意可测量的数值(例如,序数、间隔和比率数据)都可以认为组成了表面。一般使用的术语是统计表面,因为在考虑的范围内z值构成了许多要素的统计学的表述(robinson et al., 1995)。

18、dem——数字高程模型(digital elevation model)。地形模型不仅包含高程属性,还包含其它的地表形态属性,如坡度、坡向等。dem通常用地表规则网格单元构成的高程矩阵表示,广义的dem还包括等高线、三角网等所有表达地面高程的数字表示。在地理信息系统中,dem是建立数字地形模型(digital terrain model)的基础数据,其它的地形要素可由dem直接或间接导出,称为“派生数据”,如坡度、坡向。

19、空间插值——空间插值常用于将离散点的测量数据转换为连续的数据曲面,以便与其它空间现象的分布模式进行比较,它包括了空间内插和外推两种算法。空间内插算法:通过已知点的数据推求同一区域未知点数据。空间外推算法:通过已知区域的数据,推求其它区域数据。20、泰森多边形——通过数学方法定义、平分点间的空间并以直线相连结,在点状物体间生成多边形的方法。

21、线密度——用所有区域内的线的总长度除以区域的面积。

22、连通性——连通性是衡量网络复杂性的量度,常用γ指数和α指数计算它。其中,γ指数等于给定空间网络体节点连线数与可能存在的所有连线数之比;α指数用于衡量环路,节点被交替路径连接的程度称为α指数,等于当前存在的环路数与可能存在的最大环路数之比。

23、图形叠加——将一个被选主题的图形所表示的专题信息放在另一个被选主题的图形所表示的专题信息之上。

24、栅格自动叠加——基于网格单元的多边形叠加是一个简单的过程,因为区域是由网格单元组成的不规则的块,它共享相同的一套数值和相关的标注。毫无疑问,网格单元为基础的多边形叠加缺乏空间准确性,因为网格单元很大,但是类似于简单的点与多边形和线与多边形叠加的相同部分,由于它的简单性,因此可以获得较高的灵活程度和处理速度。

25、拓扑矢量叠加——如何决定实体间功能上的关系,如定义由特殊线相连的左右多边形,定义线段间的关系去检查交通流量,或依据个别实体或相关属性搜索已选择实体。它也为叠加多个多边形图层建立了一种方法,从而确保连结着每个实体的属性能够被考虑,并且因此使多个属性相结合的合成多边形能够被支持。这种拓扑结果称作最小公共地理单元(lcgu)。

26、矢量多边形叠加——点与多边形和线与多边形叠加使用的主要问题是,线并不总是出现在整个区域内。解决该问题的最强有力的办法是让软件测定每组线的交叉点,这就是所谓的结点。进行矢量多边形的叠加,其任务是基本相同的,除了必须计算重叠交叉点外,还要定义与之相联系的多边形线的属性。

27、布尔叠加——一种以布尔代数为基础的叠加操作。

28、制图建模——用以指明应用命令组合来回答有关空间现象问题的处理。制图模型是针对原始数据也包括导出数据和中间地图数据进行一系列交互有序的地图操作来模拟空间决策的处理。

29、地理模型的类型——类似统计同类的描述性模型和与推理统计技术相关的规则性模型。

30、常见模型——

1、注重样式与处理的问题长时间以来用于解释类似农业活动与运输成本间的关系——独立状态模型。

2、最初为预测工业位置点的空间分布的样式而设计的weber模型,进行改进后可使参与者寻找最佳商业和服务位置——位置-分配模型。

3、建立在吸引力与到潜在市场的距离呈反比这一基础上的经济地理模型——重力模型。

4、通过空间验证思想如今广泛用于生态群落,通过地理空间跟踪动植物运动——改进扩散模型。

31、专题地图——以表现某单一属性的位置或若干选定属性之间关系为主要目的的地图。专题图形设计的一般程序包括合适的符号和图形对象的选择、生成和放置,以明确突出研究主题的重要属性和空间关系,同时还要考虑参考系统。gis专题地图输出的规则:不但要有精美的图形,最重要的是去读图、分析地图和理解地图。

32、元数据——关于数据的数据,对数据库内容的全面描述,其目的是促进数据集的高效利用和充分共享。使用元数据的理由:性能上,完整性、可扩展性、特殊性、安全性;功能上,差错功能、浏览功能、程序生成。

33、聚合——将单个数据元素进行分类的大量数字处理过程。

34、克立金法——依靠地球自然表面随距离的变化概率而确定高程的一种精确内插方法。

35、四叉树——一种压缩数据结构,它把地理空间定量划分为可变大小的网格,每个网格具有相同性质的属性。

36、比较工具型地理信息系统和应用型地理信息系统的异同。

工具型地理信息系统:是一种通用型gis,具有一般的功能和特点,向用户提供一个统一的操作平台。一般没有地理空间实体,而是由用户自己定义。具有很好的二次开发功能。如:arcinfo、genamap、mapinfo、mapgis、geostar。

应用型地理信息系统:在较成熟的工具型gis软件基础上,根据用户的需求和应用目的而设计的用于解决一类或多类实际问题的地理信息系统,它具有地理空间实体和解决特殊地理空间分布的模型。如lis、cgis、ugis。

37、详细描述应用型地理信息系统的开发过程

1、系统总体设计:需求和可行性分析、数据模型设计、数据库设计、方法设计

2、系统软件设计:开发语言、用户界面、流程、交互

3、程序代码编写:投影、数据库、输入、编辑

4、系统的调试与运行:α调试、β调试

5、系统的评价与维护:功能评价、费用评价、效益评价

38、空间信息系统:以多媒体技术为依托,以空间数据为基础,以虚拟现实为手段的集空间数据的输入、编辑、存储、分析和显示于一体的巨系统,体由若干个子系统组成。

39、地理数据测量标准——命名(对数据命名,允许我们对把对象叫什么做出声明,但不允许对两个命名的对象进行直接比较)、序数(提供对空间对象进行逻辑对比的结果,但这种对比仅限于所谈论问题的范围内)、间隔(可以对待测项逐个赋值,能够更为精确地估计对比物的不同点)、比率(用途最广的测量数据标准,它是允许直接比较空间变量的惟一标准)。

40、根据样本进行推理的取样原则——未取样位置的数据可以从已取样位置的数据中推测出来;区域边界内的数据可以合并计算;一组空间单元中的数据能够转换成具有不同空间配置的另外一组空间单元数据。常用的方法:内插法:当有数值边界或知道缺失部分两端数值;外推法:当缺失的数据一侧有数值,而另一侧每一数值。

17.AE开发中矢量图层叠加求交分析

AE开发中矢量图层叠加求交分析: AE开发中,矢量图层叠加分析需要用到的主要类为BasicGeoprocessor,其主要接口为IBasicGeoprocessor。IBasicGeoprocessor接口提供了基本的空间数据处理的方法和属性,其中包括叠加求交(Interset)和叠加求和(Union)。下面提供叠加求交的开发实例: C#+AE9.1叠加求交示例代码:

private void M_OverLayer_Click(object sender, System.EventArgs e)2

{ 3

try 4

{ 5

//分析层

ILayer pLayer=this.axMapControl1.get_Layer(0);7

IFeatureLayer pInputFeatLayer=pLayer as IFeatureLayer;

ITable pInputTable=pLayer as ITable;9

IFeatureClass pInputFeatClass=pInputFeatLayer.FeatureClass;10 11

//叠加表

pLayer=this.axMapControl1.get_Layer(1);13

ITable pOverlayTable=pLayer as ITable;14 15

//叠加分析表

IFeatureClassName pFeatClassName=new FeatureClassNameClass();17

pFeatClassName.FeatureType=esriFeatureType.esriFTSimple;18

pFeatClassName.ShapeFieldName=“shape”;19

pFeatClassName.ShapeType=pInputFeatClass.ShapeType;20 21

26

31

40

//工作空间名称

IWorkspaceName pNewWSName=new WorkspaceNameClass();

pNewWSName.WorkspaceFactoryProgID = “esriDataSourcesFile.ShapefileWorkspaceFactory”;

pNewWSName.PathName = @“C:temp”;

//数据集名称

IDatasetName pDatasetName=pFeatClassName as IDatasetName;

pDatasetName.Name=“ss”;

pDatasetName.WorkspaceName=pNewWSName;

//几何处理

IBasicGeoprocessor pBGP=new BasicGeoprocessorClass();

IFeatureClass pOutputFeatClass=pBGP.Intersect(pInputTable,false,pOverlayTable,false,0.01,pFeatClassName);

//输出要素层设置

IFeatureLayer pOutputFeatLayer=new FeatureLayerClass();

pOutputFeatLayer.FeatureClass=pOutputFeatClass;

pOutputFeatLayer.Name=pOutputFeatClass.AliasName;

this.axMapControl1.AddLayer((ILayer)pOutputFeatClass,0);

axMapControl1.Update();} catch(Exception ex){

MessageBox.Show(ex.Message);46

} 47

} 最近在研究ae中实现overlay的方法,终于发现了2个方法。(针对shapefile)方法一:利用ITopology接口:

void COverlayDlg::Overlay(ILayerPtr inputLayer, ILayerPtr OverlayLayer,IFeatureClassPtr ipNewClass){ int mode=m_modeCombo.GetCurSel();IFeatureLayerPtr ipPutlayer(inputLayer);IFeatureClassPtr ipPutClass;ipPutlayer->get_FeatureClass(&ipPutClass);IFeatureClassPtr ipOutClass;IFeatureLayerPtr ipOverlayer(OverlayLayer);ipOverlayer->get_FeatureClass(&ipOutClass);IQueryFilterPtr ipQF(CLSID_QueryFilter);long number1,number2;ipPutClass->FeatureCount(ipQF,&number1);ipPutClass->FeatureCount(ipQF,&number2);IActiveViewPtr ipView=p_View->m_ctrlMap.GetActiveView();ITopologicalOperatorPtr ipTo;IFeaturePtr ipFeature1,ipFeature2;IGeometryPtr ipGeo1,ipGeo2,ipNew;for(long i=0;i

for(long j=0;j

{

ipPutClass->GetFeature(i,&ipFeature1);

ipOutClass->GetFeature(j,&ipFeature2);

ipFeature1->get_Shape(&ipGeo1);

ipFeature2->get_Shape(&ipGeo2);

ipTo=ipGeo1;

switch(mode)

{

case 0:

ipTo->Intersect(ipGeo2,esriGeometry2Dimension,&ipNew);

break;

case 1:

ipTo->Union(ipGeo2,&ipNew);

break;

case 2:

ipTo->Difference(ipGeo2,&ipNew);

}

IFeaturePtr ipFeature;

ipNewClass->CreateFeature(&ipFeature);

ipFeature->putref_Shape(ipNew);

ipFeature->Store();

}ipView->Refresh();} 这种方法是一个一个feature的创建,存入featureclass接口中。方法二:利用IBasicGeoprocess接口 //把第一个图层和第0个图层叠置 IFeatureLayerPtr ipFeaLay;IFeatureClassPtr ipFeaCls;HRESULT hr;ILayerPtr ipLay;IMapPtr ipMap(m_ctrlMap.GetMap());hr=ipMap->get_Layer(0,&ipLay);

ipFeaLay=ipLay;if(ipFeaLay){

hr=ipFeaLay->get_FeatureClass(&ipFeaCls);

if(FAILED(hr))return;

}

ITablePtr ipInPutTable(ipLay);hr=ipMap->get_Layer(1,&ipLay);ipFeaLay=ipLay;if(ipFeaLay!=0)

hr=ipFeaLay->get_FeatureClass(&ipFeaCls);

ITablePtr ipOverlayTable(ipLay);

hr=ipDatasetName->putref_WorkspaceName(ipWSName);if(FAILED(hr))return;

IBasicGeoprocessorPtr ipBGP(CLSID_BasicGeoprocessor);IFeatureClassPtr ipOutputFeaCls;hr=ipBGP->Intersect(ipInPutTable,VARIANT_FALSE,ipOverlayTable,VARIANT_FALSE,double(0),ipFeaClsName,&ipOutputFeaCls);IFeatureLayerPtr ipOutputFeaLay(CLSID_FeatureLayer);ipOutputFeaLay->putref_FeatureClass(ipOutputFeaCls);BSTR OutFeaClsAliName;hr=ipOutputFeaCls->get_AliasName(&OutFeaClsAliName);if(FAILED(hr))return;hr=ipOutputFeaLay->put_Name(OutFeaClsAliName);if(FAILED(hr))return;hr=ipMap->AddLayer(ipOutputFeaLay);if(FAILED(hr))return;IActiveViewPtr ipAV(ipMap);ipAV->Refresh();18.矢量数据分析

地图叠加:将两幅数字化地图的几何形状和属性结合在一起,生成输出地图的一种属性数据。点与多边形叠加:一种GIS操作,点状地图上的每个点被赋予点所落入的多边形内的属性数据。

线与多边形叠加:一种GIS操作,现状地图被叠加地图上的多边形边界所分割,输出地图上每个弧段结合了来自线状地图和所落入多边形的属性。

多边形与多边形叠加:一种GIS操作,其输出地图结合了来自输入地图和叠加地图的多边形边界,生成一套新的多边形,每个新的多边形携带了两幅地图的属性。

缓冲:一种GIS操作,将落在所选地图要素指定距离之内的区域与之外的区域分开。相交(Intersect):一种地图叠加方法,仅保留那些落在输入地图和叠加地图共同范围的要素。联合(Union):保留输入地图和叠加地图全部要素的一种多边形与多边形叠加方法。层叠置(Identity):一种地图叠加方法,仅保留那些落在由输入地图定义范围内的要素。模糊容差:用于GIS软件的距离容差,落在这一指定距离内的点和线被强制捕捉到一起。

破碎多边形:在地图叠加中沿着两个输入地图的共同边界出现的极小多边形。破碎多边形往往来自数字化误差。误差传递:由于输入地图的误差造成地图叠加输出中误差的产生。最小制图单元:由政府机构或组织所指定的最小面积单元。

19.GIS空间信息基本分析方法

www.xiexiebang.com 2001-6-29 远图开发室

地理信息系统(GIS)具有很强的空间信息分析功能,这是区别于计算机地图制图系统的显著特征之一。利用空间信息分析技术,通过对原始数据模型的观察和实验,用户可以获得新的经验和知识,并以此作为空间行为的决策依据。

空间信息分析的内涵极为丰富。作为GIS的核心部分之一,空间信息分析在地理数据的应用中发挥着举足轻重的作用。叠置分析(Overlay Analysis)覆盖叠置分析是将两层或多层地图要素进行叠加产生一个新要素层的操作,其结果将原来要素分割生成新的要素,新要素综合了原来两层或多层要素所具有的属性。也就是说,覆盖叠置分析不仅生成了新的空间关系,还将输入数据层的属性联系起来产生了新的属性关系。覆盖叠置分析是对新要素的属性按一定的数学模型进行计算分析,进而产生用户需要的结果或回答用户提出的问题。1)多边形叠置

这个过程是将两层中的多边形要素叠加,产生输出层中的新多边形要素,同时它们的属性也将联系起来,以满足建立分析模型的需要。一般GIS软件都提供了三种多边形叠置:

(1)多边形之和(UNION):输出保留了两个输入的所有多边形。

(2)多边形之积(INTERSECT):输出保留了两个输入的共同覆盖区域。

(3)多边形叠合(IDENTITY):以一个输入的边界为准,而将另一个多边形与之相匹配,输出内容是第一个多边形区域内二个输入层所有多边形。

多边形叠置是个非常有用的分析功能,例如,人口普查区和校区图叠加,结果表示了每一学校及其对应的普查区,由此就可以查到作为校区新属性的重叠普查区的人口数。2)点与多边形叠加

点与多边形叠加,实质是计算包含关系。叠加的结果是为每点产生一个新的属性。例如,井位与规划区叠加,可找到包含每个井的区域。3)线与多边形叠加

将多边形要素层叠加到一个弧段层上,以确定每条弧段(全部或部分)落在哪个多边形内。网络分析(Network Analysis)对地理网络(如交通网络)、城市基础设施网络(如各种网线、电力线、电话线、供排水管线等)进行地理分析和模型化,是地理信息系统中网络分析功能的主要目的。网络分析是运筹学模型中的一个基本模型,它的根本目的是研究、筹划一项网络工程如何按排,并使其运行效果最好,如一定资源的最佳分配,从一地到另一地的运输费用最低等。其基本思想则在于人类活动总是趋向于按一定目标选择达到最佳效果的空间位置。这类问题在生产、社会、经济活动中不胜枚举,因此研究此类问题具有重大意义。网络中的基本组成部分和属性如下:

(1)链(Links),网络中流动的管线,如街道,河流,水管等,其状态属性包括阻力(Impedence)和需求(Demand)。(2)障碍(Barriers),禁止网络中链上流动的点。

(3)拐角点(Turns),出现在网络链中所有的分割结点上,状态属性有阻力,如拐弯的时间和限制(如不允许左拐)。

(4)中心(Centers),是接受或分配资源的位置,如水库、商业中心、电站等,其状态属性包括资源容量,如总的资源量;阻力限额,如中心与链之间的最大距离或时间限制。

(5)站点(Stops),在路径选择中资源增减的站点,如库房、汽车站等,其状态属性有要被运输的资源需求,如产品数。

网络中的状态属性有阻力和需求两项,实际的状态属性可通过空间属性和状态属性的转换,根据实际情况赋到网络属性表中。1)路径分析

(1)静态求最佳路径:由用户确定权值关系后,即给定每条弧段的属性,当需求最佳路径时,读出路径的相关属性,求最佳路径。

(2)动态分段技术:给定一条路径由多段联系组成,要求标注出这条路上的公里点或要求定位某一公路上的某一点,标注出某条路上从某一公里数到另一公里数的路段。

(3)N条最佳路径分析:确定起点、终点,求代价较小的条路径,因为在实践中往往仅求出最佳路径并不能满足要求,可能因为某种因素不走最佳路径,而走近似最佳路径。

(4)最短路径:确定起点、终点和所要经过的中间点、中间连线,求最短路径。

(5)动态最佳路径分析:实际网络分析中权值是随着权值关系式变化的,而且可能会临时出现一些障碍点,所以往往需要动态地计算最佳路径。2)地址匹配

地址匹配实质是对地理位置的查询,它涉及到地址的编码(Geocode)。地址匹配与其它网络分析功能结合起来,可以满足实际工作中非常复杂的分析要求。所需输入的数据,包括地址表和含地址范围的街道网络及待查询地址的属性值。3)资源分配

资源分配网络模型由中心点(分配中心)及其状态属性和网络组成。分配有两种方式,一种是由分配中心向四周输出,另一种是由四周向中心集中。这种分配功能可以解决资源的有效流动和合理分配。其在地理网络中的应用与区位论中的中心地理论类似。在资源分配模型中,研究区可以是机能区,根据网络流的阻力等来研究中心的吸引区,为网络中的每一连接寻找最近的中心,以实现最佳的服务。还可以用来指定可能的区域。

资源分配模型可用来计算中心地的等时区,等交通距离区,等费用距离区等。可用来进行城镇中心,商业中心或港口等地的吸引范围分析,以用来寻找区域中最近的商业中心,进行各种区划和港口腹地的模拟等。缓冲区分析(Buffer Analysis)缓冲区分析是针对点、线、面实体,自动建立其周围一定宽度范围以内的缓冲区多边形。缓冲区的产生有三种情况:一是基于点要素的缓冲区,通常以点为圆心、以一定距离为半径的圆;二是基于线要素的缓冲区,通常是以线为中心轴线,距中心轴线一定距离的平行条带多边形;三是基于面要素多边形边界的缓冲区,向外或向内扩展一定距离以生成新的多边形。

缓冲区分析是地理信息系统重要的空间分析功能之一,它在交通、林业、资源管理、城市规划中有着广泛的应用。例如:湖泊和河流周围的保护区的定界,汽车服务区的选择,民宅区远离街道网络的缓冲区的建立等。空间统计分析(Spacial Analysis)1)常规统计分析

常规统计分析主要完成对数据集合的均值、总和、方差、频数、峰度系数等参数的统计分析。2)空间自相关分析

空间自相关分析是认识空间分布特征、选择适宜的空间尺度来完成空间分析的最常用的方法。目前,普遍使用空间自相关系数——

MoranI指数,其计算公式如下:

其中:N表示空间实体数目;xi表示空间实体的属性值;x是xi的平均值;Wij=1表示空间实体i与j相邻,Wij=0表示空间实体i与j不相邻I的值介于1与I之间,I=1表示空间自正相关,空间实体呈聚合分布;I=1表示空间自负相关,空间实体呈离散分布;I=0则表示空间实体是随机分布的。Wij表示实体i与j的空间关系,它通过拓扑关系获得。3)回归分析

回归分析用于分析两组或多组变量之间的相关关系,常见回归分析方程有:线性回归、指数回归、对数回归、多元回归等。4)趋势分析

通过数学模型模拟地理特征的空间分布与时间过程,把地理要素时空分布的实测数据点之间的不足部分内插或预测出来。5)专家打分模型

专家打分模型将相关的影响因素按其相对重要性排队,给出各因素所占的权重值;对每一要素内部进行进一步分析,按其内部的分类进行排队,按各类对结果的影响给分,从而得到该要素内各类别对结果的影响量,最后系统进行复合,得出排序结果,以表示对结果影响的优劣程度,作为决策的依据。

专家打分模型可分二步实现。第一步——打分:用户首先在每个feature的属性表里增加一个数据项,填入专家赋给的相应的分值;第二步——复合:调用加权符合程序,根据用户对各个feature给定的权重值进行叠加,得到最后的结果。

20.如何判断图形间的逻辑运算

本小节以Polyline(Polygon类似)为例, 讲解如何判断图形间的逻辑关系,主要用到的接口是IRelationalOperator。

在本例中,使用Relational Operator 对两个图形进行比较,返回一个布尔值来指出这两个图形间是否存在特定的关系。一些关系的判断是要求两个图形要有相同的维数的(如必须Polyline之间或Polygon之间),而另外一些对图形维数就没有太多限制。大多数已定义的关系操作符是互斥的。RelationalOperator的具体方法有:

Contains:判断一个图形是否包含另外一个图形。Within:判断一个图形是否被另外一个图形所包含。

Crosses:判断两个图形是否在维数较少的那个图形的内部相交。Disjoint:判断两个图形间是否没有相同点。

Equals:判断两个图形是否是同一个类型并且在平面上的点是否是相同的位置。如果返回值为真,则它们应该包含(Contains)另外一个图形同时也被另外一个图形所包含(Within)。

Overlaps:判断两个图形的交集是否和其中的一个图形拥有相同的维数,并且他们交集不能和其中任何一个图形相等。该方法只使用与两个Polyline之间或者两个Polygon之间。

Touch:判断两个图形的边界是否相交,如果两个图形的交集不为空,但两个图形内部的交集为空,则返回值为真。下图为几个图形的边界(Boundary)和内部(Interior)概念的图解:

下面针对较易混淆的两个概念,Crosses和Touch进行举例说明(Polyline/Polyline):

Crossess Touch Crossess Touch 21.AE中2种方式overlay

最近在研究ae中实现overlay的方法,终于发现了2个方法。(针对shapefile)方法一:利用ITopology接口:

void COverlayDlg::Overlay(ILayerPtr inputLayer, ILayerPtr OverlayLayer,IFeatureClassPtr ipNewClass){ int mode=m_modeCombo.GetCurSel();IFeatureLayerPtr ipPutlayer(inputLayer);IFeatureClassPtr ipPutClass;ipPutlayer->get_FeatureClass(&ipPutClass);IFeatureClassPtr ipOutClass;IFeatureLayerPtr ipOverlayer(OverlayLayer);ipOverlayer->get_FeatureClass(&ipOutClass);

IQueryFilterPtr ipQF(CLSID_QueryFilter);long number1,number2;ipPutClass->FeatureCount(ipQF,&number1);ipPutClass->FeatureCount(ipQF,&number2);

IActiveViewPtr ipView=p_View->m_ctrlMap.GetActiveView();ITopologicalOperatorPtr ipTo;IFeaturePtr ipFeature1,ipFeature2;IGeometryPtr ipGeo1,ipGeo2,ipNew;for(long i=0;i

for(long j=0;j

{

ipPutClass->GetFeature(i,&ipFeature1);

ipOutClass->GetFeature(j,&ipFeature2);

ipFeature1->get_Shape(&ipGeo1);

ipFeature2->get_Shape(&ipGeo2);

ipTo=ipGeo1;

switch(mode)

{

case 0:

ipTo->Intersect(ipGeo2,esriGeometry2Dimension,&ipNew);

break;

case 1:

ipTo->Union(ipGeo2,&ipNew);

break;

case 2:

ipTo->Difference(ipGeo2,&ipNew);

}

IFeaturePtr ipFeature;

ipNewClass->CreateFeature(&ipFeature);

ipFeature->putref_Shape(ipNew);

ipFeature->Store();

} ipView->Refresh();} 这种方法是一个一个feature的创建,存入featureclass接口中。

方法二:利用IBasicGeoprocess接口

//把第一个图层和第0个图层叠置

IFeatureLayerPtr ipFeaLay;IFeatureClassPtr ipFeaCls;HRESULT hr;

ILayerPtr ipLay;IMapPtr ipMap(m_ctrlMap.GetMap());hr=ipMap->get_Layer(0,&ipLay);

ipFeaLay=ipLay;if(ipFeaLay){

hr=ipFeaLay->get_FeatureClass(&ipFeaCls);

if(FAILED(hr))return;

}

ITablePtr ipInPutTable(ipLay);hr=ipMap->get_Layer(1,&ipLay);

ipFeaLay=ipLay;if(ipFeaLay!=0)

hr=ipFeaLay->get_FeatureClass(&ipFeaCls);

ITablePtr ipOverlayTable(ipLay);

hr=ipDatasetName->putref_WorkspaceName(ipWSName);if(FAILED(hr))return;

IBasicGeoprocessorPtr ipBGP(CLSID_BasicGeoprocessor);IFeatureClassPtr ipOutputFeaCls;hr=ipBGP->Intersect(ipInPutTable,VARIANT_FALSE,ipOverlayTable,VARIANT_FALSE,double(0),ipFeaClsName,&ipOutputFeaCls);

IFeatureLayerPtr ipOutputFeaLay(CLSID_FeatureLayer);ipOutputFeaLay->putref_FeatureClass(ipOutputFeaCls);BSTR OutFeaClsAliName;hr=ipOutputFeaCls->get_AliasName(&OutFeaClsAliName);if(FAILED(hr))return;hr=ipOutputFeaLay->put_Name(OutFeaClsAliName);if(FAILED(hr))return;hr=ipMap->AddLayer(ipOutputFeaLay);if(FAILED(hr))return;IActiveViewPtr ipAV(ipMap);ipAV->Refresh();

22.ArcEngine中实现捕捉功能

捕捉功能主要使用ArcEngine中的两个接口

1.IHitTest用于作点击测试

2.IFeatureCache 用于建立做缓存

由于数据库中有多个FeatureClass,而每个FeatureClass又可以做多种点击测试 所以这里有会有好几种捕捉方案。

我们称呼每一个可以执行捕捉的对象叫捕捉代理,所有的代理在一个捕捉环境中 方案1:每个代理负责测试一种FeatureClass的一种点击方式 方案2:每个代理负责测试一种FeatureClass的所有点击方式 方案3:一代理负责测试所有的FeatureClass的一种点击方式 方案4:一个代理负责测试所有FeatureClass的所有点击方式

在实际使用过程中 我们使用的是第一种方案。但是我个人认为第二种方案比较好。当然这只是个人推测 没有测试数据证明。

下面给出第一种方案的代码: ///

/// IFeatureSnapAgent 的摘要说明。

///

public interface IFeatureSnapAgent:ISnapAgent,ISnapAgentFeedback {

IFeatureCache FeatureCache

{

get;

}

IFeatureClass FeatureClass

{

get;

set;

}

esriGeometryHitPartType HitPartType

{

get;

set;

}

///

/// 为捕捉连接事件,当捕捉发生的时候,就会触发事件。

///

///

void AddSnapedEventHandler(GeometrySnapedEventHandler handler);

///

/// 不再监听捕捉事件

///

///

void RemoveSnapedEventHandler(GeometrySnapedEventHandler handler);} ///

/// 默认的要素捕捉代理

///

public class DefaultFeatureSnapAgent :IFeatureSnapAgent,IEditEvents,ESRI.ArcGIS.esriSystem.IPersistVariant

{

#region 构造函数

///

/// 为代理指定别名。注意该代理目前还没有关联到任何目标FeatureClass

/// 要使得该代理起作用,必须要为他设置FeatureClass.///

///

名称(请确保唯一)

public DefaultFeatureSnapAgent(string name):this(name,null)

{

}

///

/// 将使用该FeatureClass的别名做代理的名称

///

///

public DefaultFeatureSnapAgent(IFeatureClass feaClass):this(feaClass.AliasName,feaClass)

{

}

///

/// 完全初始化捕捉代理

///

///

名称(请确保唯一)

///

目标FeatureClass

public DefaultFeatureSnapAgent(string name,IFeatureClass feaClass)

{

m_snapAgentName=name;

m_bCacheHasCreated=false;

m_hitPartType=esriGeometryHitPartType.esriGeometryPartNone;

this.m_isSnapWorking=true;

this.m_featureClass=feaClass;

this.m_snapFeedbackText="";

}

#endregion

#region IFeatureSnapAgent 成员

private event GeometrySnapedEventHandler

m_snapSubsciber;

///

/// FeatureClass缓冲区。

///

private IFeatureCache m_featureCache;

///

/// 该代理将捕捉在该FeatureClass上的Feature.和Geometry

///

private IFeatureClass m_featureClass;

///

/// 点击测试的有效类型。

///

protected esriGeometryHitPartType m_hitPartType;

///

/// 缓冲区对象是否已经被创建了。跟是否建立了缓冲没有关系。

///

private bool

m_bCacheHasCreated;

///

/// 缓冲区对象

///

public IFeatureCache FeatureCache

{

get

{

return m_featureCache;

}

}

///

下载Arcgis操作及开发实习报告word格式文档
下载Arcgis操作及开发实习报告.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    ARCGIS实习报告(小编整理)

    实习指导书空间数据库建设课程设计 题目基于TIN构造的空间插值方法对比 班级0644151 姓名张毫杰 专业地理信息科学 指导张卫国宋自影 河南城建学院 测绘与城市空间信息学院......

    ARCGIS期末报告

    2019——2020学年上学期期末考试 专业 :地理信息科学 课程名称 :GIS空间分析 任课教师 : 班级 :地理信息科学17 姓名 : 学号 :长江一级支流——磨刀溪的地理意义一、选题依据及......

    ArcGIS空间分析和最短路径分析实习报告

    考察报告 实验一、矢量数据的空间分析 练习1:市区择房分析 操作步骤: 首先打开ArcMap,打开E:Chp7Ex1city.mxd文件将文件加入到窗口中来,这时就将五个文件全部加入其中来了,如......

    财务软件操作实习报告

    财务软件操作实习报告 2009 级财务管理专业6 班学生:陈红英学号:陈红英 (可以结合我们所有去过的实践单位(武钢)的背景资料以及本单位财务软件使用的情况,并参考《财会实践教程》......

    国际贸易操作实习报告

    实习是每个人必须经历的十字路口之一,我们结束了学生的路程,从此踏入社会。 进入实习,它就意味着人生一个新时期的到来——告别学校走入社会。社会是个大的集合,不管是以前的学......

    原创电子商务操作实习报告

    电子商务操作实习报告------20074295王媛媛整个实习的八个大部分,分别是初步认识各个类型的电子商务网站,软件的初始化,网上交易(B2C,B2B和C2C三种模式),网上银行(网银账号和电子钱......

    会计操作报告实习报告

    根据专业教程的要求,为提高同学们的专业实践应用能力,2011年4月1日至2011年5月28日由专业负责人周荣华老师指导我们在学院财会模拟实验室进行了专业综合技能实践。此次实践是......

    计算机操作实习报告

    ---- 实习总结 一周的计算机操作实习已经结束,自己对计算机的掌握更加地深入,熟练。已经基本上达到了实习的要求和目的。首先,我已经掌握了windows操作系统的基本操作;其次,还......