ArcEngine开发教程地图操作基本功能课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《ArcEngine开发教程地图操作基本功能课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ArcEngine 开发 教程 地图 操作 基本功能 课件
- 资源描述:
-
1、牟乃夏牟乃夏 ArcGIS Engine ArcGIS Engine 地理信地理信息系统开发教程息系统开发教程配套配套PPT-PPT-第3章 地图操作基本功能目录 1. 空间数据与工作空间 2. MapControl控件接口 3. 数据加载 4. 地图文档保存 5. 地图浏览 6. 书签 7. ICommand和ITool命令操作地图 8. 量测 9. 要素选择操作 10. 视图同步 11. TOCControl控件1. 空间数据与工作空间 1.空间数据 在GIS软件中,空间数据有多种不同的存在形式。按照不同的划分标准可以分为矢量数据和栅格数据、GIS格式的地理数据与非GIS格式的数据(如CA
2、D格式等)、空间数据库数据(如个人数据库、ArcSDE数据库等)和文件数据(ShapeFile格式、Coverage格式)等。 2.工作空间 工作空间(Workspace)对象,在物理级别上相当于地理数据库本身,在逻辑上是一个包含空间数据集和非空间数据集的数据容器。它包含数据集(Dataset)、要素类(FeatureClass)、表(Table)等数据。1. 空间数据与工作空间工作空间工厂对象工作空间对应类型描述AccessWorkspaceFactoryesriLocalDatabaseWorkspace 打开Personal GeoDatabaseArcInfoWorkspaceFact
3、oryesriFileSystemWorkspace打开ArcInfo工作空间文件CadWorkspaceFactoryesriFileSystemWorkspace打开CAD文件的工作空间OLEDBWorkspaceFactoryesriRemoteDatabaseWorkspace使用OLEDB打开数据库的工作空间文件SdeWorkspaceFactoryesriRemoteDatabaseWorkspace打开SDE数据库的工作空间ShapefileWorkspaceFactoryesriFileSystemWorkspace打开ShapeFile文件的工作空间TinWorkspaceF
4、actoryesriFileSystemWorkspace打开TIN数据文件的工作空间TextFileWorkspaceFactoryesriFileSystemWorkspace打开文本文件的工作空间常用的工作空间及工作空间对象常用的工作空间及工作空间对象1. 空间数据与工作空间 工作空间 数据加载需要先打开相对应的工作空间。 IWorkspace接口:IWorkspace接口定义了访问工作空间各种属性的方法,如工作空间的连接属性等。通过IWorkspace接口可实例化现有数据集和创建新数据集。由于WorkSpace是一个普通类,要获得WorkSpace,需要通过工作空间工厂(Workspa
5、ceFactory)来创建。 IWorkspaceFactory接口:IWorkspaceFactory接口定义了创建、打开工作空间的方法和对工作空间工厂信息成员的访问。用户可通过工作空间工厂管理不同类型的工作空间,所有的工作空间对象都可通过此接口产生。 IWorkspaceFactory接口的Create方法可产生一个新的工作空间对象,不同类型的WorkspaceFactory对象,其Create方法产生的工作空间对象是不同的。 IWorkspaceShapefileFactory接口的Open方法和OpenFromFile方法可以用于打开一个已经存在的工作空间,Open方法用于打开一个SD
6、E数据库,OpenFromFile方法用于打开一个文件类型的数据,如*.tif、*.img等。2. MapControl控件接口 1)IMapControlDefault接口IMapControlDefault接口是MapControl控件的缺省接口,是代表当前版本的最新接口,开发环境自动使用这个接口定义的属性和方法。 2)IMapControl2接口IMapControl2接口提供了一系列的属性和方法,如设置MapControl控件的显示属性、控件外观、添加和管理数据图层和地图文档、在控件上绘制图形和返回几何对象等。 3)IMapControl3接口IMapControl3接口在继承IMap
7、Control2的基础上,增加了以下属性和方法:CustomProperty:设置自定义控件属性。DocumentFilename:返回MapControl中载入的地图文档的文件名。DocumentMap:返回MapControl中最后载入的地图名称。KeyIntercept:返回或设置MapControl控件截取的键盘按键信息。Object:返回MapControl控件。ShowMapTips:控制是否显示地图的Map Tips。TipDelay:设置Map Tips的延迟时间。TipStyle:设置Map Tips的显示样式。SuppressResizeDrawing::当控件尺寸发生变化
8、时阻止数据实时重绘。2. MapControl控件接口 4)IMapControl4接口 IMapControl4接口在IMapControl3接口的基础上,增加了两个属性,分别是AutoKeyboardScrolling和AutoMouseWheel。 AutoKeyboardScrolling:确定键盘滚动轮是否起作用。 AutoMouseWheel:确定鼠标滚轮是否起作用。 5)IMapControlEvents2接口 IMapControlEvent2接口为事件接口,它定义了MapControl能够处理的全部事件,如OnMouseDown、OnMouseMove、OnKeyUp、OnB
9、eforeScreenDraw、OnAfterDraw、OnExtentUpdated等。3.数据加载 1)加载地图文档的方式有三种:使用IMapControl接口的LoadMxFile方法加载;通过IMapDocument接口加载;使用ArcGIS Engine中封装好的类库资源ControlsOpenDocCommandClass加载。3.数据加载 使用IMapControl接口的LoadMxFile方法加载地图文档 实现思路如下: 通过.NET框架类提供的打开文件对话框选择要打开的地图文档; 用IMapControl接口提供的CheckMxFile方法检查是否为有效的地图文档,若有效,则
10、调用IMapControl接口提供的LoadMxFile方法进行加载。核心代码3.数据加载 通过IMapDocument接口加载 IMapDocument接口定义了操作和管理地图文档对象的方法和属性。使用这个对象可以获取、更新一个文档的内容,设置文档文件的属性以及读、写和保存一个文档文件等。IMapDocument接口同时扮演着数据显示和数据容器的双重身份,可以通过ActiveView获得Map数据视图,通过FocusMap属性获得当前正在使用的Map对象的数据容器身份。一个文档对象可能拥有多个Map对象(相当于ArcGIS中的数据框Data Frame),但是在同一时刻内只能有一份Map处于
11、使用状态。核心代码3.数据加载 使用ControlsOpenDocCommandClass加载地图 使用ArcGIS Engine中封装好的类库资源ControlsOpenDocCommandClass实现地图文档的加载的核心代码如下:3.数据加载 2)加载ShapeFile数据 ShapeFile文件是目前主流的一种空间数据的文件存储方式,也是不同GIS软件进行数据格式转换常用的中间格式。加载ShapeFile数据的方式有两种:通过工作空间加载;通过IMapControl接口的AddShapeFile方法加载。3.数据加载 通过工作空间加载ShapeFile文件 通过工作空间加载ShapeF
12、ile文件主要用到IMap、ILayer、IFeatureLayer和IFeatureClass四个接口。 IMap接口是对地图进行操作的起点,主要用于管理Map对象中的图层对象,要素选择集和空间参考等对象。 ILayer接口是图层对象的通用接口,它提供了操作图层的属性和方法,可用于所有的图层,例如要素图层(FeatureLayer)、栅格图层(RasterLayer)和图形图层集合(CompositeGraphicsLayer)等。 IFeatureLayer接口继承自ILayer接口,提供了访问基于矢量数据图层的属性和方法,图层的数据可以是Geodatabase,ShapeFile或Cov
13、erage数据。 IFeatureClass接口是获取和设置要素类属性的主要接口。如:获取要素类的类型,得到满足某个查询条件的要素个数,或在要素类中创建一个新的功能等。Map、Layer、FeatureLayer三者之间的关系三者之间的关系:Map是很多图层的集合,就像ArcMap的mxd文档一样,可以包括很多Layer。Layer是图层对象,是数据的外壳,必须建立在数据的基础上才有意义。FeatureLayer是具体的要素图层,需要经过Layer添加到Map中进行显示。FeatureLayer、FeatureClass的区别的区别:FeaturLayer是加载在地图文档中的矢量数据层,只是要
14、素类的表现形式。FeatureClass是一组空间实体的集合,在数据表中存储了统一的属性和行为,每一个FeatureClass都有一个Geometry类型。IFeatureLayer接口继承自ILayer接口,IFeatureClass接口继承自IClass接口;FeatureLayer可以创建自己的对象,而FeatureClass不行。3.数据加载 通过工作空间加载ShapeFile文件的实现思路 (1)创建ShapefileWorkspaceFactory实例pWorkspaceFactory,使用IWorkspaceFactory接口的OpenFromFile方法打开pFeatureWo
15、rkspace中存储的基于ShapeFile的工作区; (2)创建FeatureLayer的实例pFeatureLayer,并定义数据集; (3)使用IMap接口的AddLayer方法加载pFeatureLayer到当前地图。核心代码3.数据加载 通过MapControl的AddShapeFile方法加载ShapeFile文件 用MapControl控件的AddShapeFile方法同样可加载ShapeFile文件,这样省去了建立工作空间、数据集等步骤。调用该方法需要传入两个参数,分别是文件路径和不带扩展名的文件名,调用方法如下: mainMapControl.AddShapeFile(str
16、ing Path,string fileName);3.数据加载 3)加载栅格数据 栅格数据是GIS的数据源之一,主要有卫星影像、航空影像、扫描的地图、照片等。常见的栅格数据格式有*.bmp、*.tif和*.jpg等,这几种栅格数据的工作空间是其所在的文件夹。添加栅格数据主要用到IRasterPyramid3、IRasterLayer等接口。 IRasterPyramid3接口提供了对栅格数据集的金字塔属性的访问,Present属性用于判断栅格数据集是否存在金字塔,Create方法用于为栅格数据集创建金字塔。 IRasterLayer接口继承自ILayer接口,CreateFromDatase
17、t方法用于从已有的栅格数据集对象创建图层;CreateFromRaster方法用于从已有的栅格对象创建图层;Raster属性用于获取IRasterLayer接口中的Raster对象,DisplayResolutionFactor属性用于设置栅格数据的分辨率。 在加载栅格文件时,需引用ESRI.ArcGIS.DataSourcesRaster命名空间。3.数据加载 加载栅格数据的实现思路 (1)用IWorkspaceFactory接口的OpenFromFile方法获得栅格文件的工作区; (2)用IRasterWorkspace接口的OpenRasterDataset方法获得栅格文件的数据集,实例
18、化栅格文件对象,并对栅格数据集是否具有金字塔进行判断(这里栅格文件如果不具有金字塔则创建金字塔,可以提高大数据量图像的显示效率); (3)创建RasterLayer类的实例pRasterLayer,并定义其数据集; (4)使用MapControl控件的AddLayer方法将pRasterLayer添加至当前地图。核心代码3.数据加载 4)加载CAD数据 对于ArcGIS Engine来说,有两种不同的方式使用CAD数据: 作为要素图层,以矢量数据来使用; 作为栅格图像,作为地图背景使用。 对于前者,ArcGIS Engine使用与FeatureLayer一样的方法来管理,对于后者则采用CadL
19、ayer对象来管理。3.数据加载 4)加载CAD数据 CAD文件作为矢量图层加载 CAD作为矢量加载时有两种模式:分图层加载和整幅图加载分图层加载和整幅图加载。 分图层加载实现思路:CAD图可以分为点、线、面、标注分别加载到MapControl中。与加载其它数据一样,首先定义一个工作空间,用CadWorkspaceFactoryClass实例化工作空间,并打开相应的工作空间;然后创建FeatureLayer的实例,定义数据集,使用IMap接口的AddLayer方法将要素图层添加至当前地图。 整幅图加载实现思路:将CAD作为整幅图加载时,在得到相应的工作空间之后对CAD文件中的要素进行遍历,并判
20、断是否为注记图层,如果是注记则需使用CadAnnotationLayer对象。3.数据加载 4)加载CAD数据 CAD文件作为栅格图层加载很多情况下CAD数据仅仅用作背景显示而不参与矢量分析,这时候可以将CAD文件以栅格图层的方式加载,这时需使用ICadLayer和ICadDrawingDataset两个接口。ICadLayer接口主要提供了对CAD文件属性信息的访问,如:图名(Name)、可见性(Visible)等。ICadDrawingDataset接口提供了对CAD数据集成员的访问,可以通过ICadLayer接口的CadDrawingDataset属性获取CAD的数据集。 实现思路如下:
21、首先用IWorkspaceFactory接口的OpenFromFile方法获得CAD文件的工作区;用ICadDrawingWorkspace接口的OpenCadDrawingDataset方法获得CAD文件的数据集,并将其赋值给CadLayerClass类的实例对象pCadLayer的CadDrawingDataset属性;使用IMap接口的AddLayer方法将pCadLayer添加至当前地图。3.数据加载 5)加载Personal Geodatabase数据 加载个人数据库用到的接口有IFeatureDataset和IEnumDataset。 IFeatureDataset接口继承自IDa
22、taset接口,在其基础上增加一个创建要素类的功能CreateFeatureClass。 IEnumDataset接口用于访问个人数据库中的所有数据集成员,有Reset和Next两个方法。Reset方法重置数据集序列,使指针位于第一个数据集之前。Next方法获取枚举序列的下一个数据集。 实例程序实现思路如下:创建AccessWorkspaceFactory类的实例;用IWorkspaceFactory接口的OpenFromFile方法打开*.mdb数据集的工作空间,对工作空间里面的数据进行加载。核心代码3.数据加载 6)加载File GeoDatabase数据 文件地理数据库是以文件夹形式存储
23、各种类型的GIS数据集,可以存储、查询和管理空间数据和非空间数据,支持的地理数据库的大小最大为1TB,在不使用DBMS的情况下能够扩展并存储大量数据,是继个人数据库之后Esri推出的新的数据管理系统。文件地理数据库支持单用户编辑,不支持版本管理。 实现思路如下: 由于文件地理数据库是以文件夹的形式存在的,可以使用FolderBrowserDialog选择文件夹进行加载。 首先创建FileGDBWorkspaceFactoryClass类的实例; 用IWorkspaceFactory接口的OpenFromFile方法打开文件地理数据库的工作空间,对工作空间里面的数据进行加载。 核心代码3.数据加
24、载 7)加载ArcSDE空间数据库数据 ArcSDE(Spatial Database Engine,空间数据库引擎)是在现有的关系型数据库上进行的空间扩展,它使空间数据能保存在关系数据库中(如Oracle、SQL Server等)。ArcSDE空间数据库的一个重要特点是支持多用户并发操作,并且可以通过版本来表现空间数据编辑的状态。当完成数据编辑后,可将多人的编辑状态进行版本合并,若多个用户对同一个要素进行了编辑,且编辑状态不一样,将出现“版本冲突”,提示用户采用哪一个版本的数据。对于版本的最后的确定, SDE数据库的加载主要用到IPropertySet接口。属性集合(PropertySet)
25、对象是一个专门用于设置属性的对象,它是一种“名称-值”对应的集合,类似于哈希表或字典。将取决于用户对数据管理的权限。3.数据加载 7)加载ArcSDE空间数据库数据 实现思路如下:创建SdeWorkspaceFactoryClass类的实例;通过SDE连接的连接属性打开SDE数据库的工作空间,对工作空间里面的数据进行加载;3.数据加载 8)加载文本文件数据 野外测量的数据是GIS数据的一个主要来源,如GPS、全站仪等仪器测量的数据等。这些数据通常为含有X、Y字段的Excel文件或者文本文件。 实现思路如下: 首先根据Excel或者*.txt文件等获取点的坐标信息; 创建一个点结构,进行点信息的
展开阅读全文