您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > 牟乃夏ArcEngine教程-第3章_地图操作基本功能
牟乃夏ArcGISEngine地理信息系统开发教程配套PPT---第3章地图操作基本功能目录•1.空间数据与工作空间•2.MapControl控件接口•3.数据加载•4.地图文档保存•5.地图浏览•6.书签•7.ICommand和ITool命令操作地图•8.量测•9.要素选择操作•10.视图同步•11.TOCControl控件1.空间数据与工作空间•1.空间数据•在GIS软件中,空间数据有多种不同的存在形式。按照不同的划分标准可以分为矢量数据和栅格数据、GIS格式的地理数据与非GIS格式的数据(如CAD格式等)、空间数据库数据(如个人数据库、ArcSDE数据库等)和文件数据(ShapeFile格式、Coverage格式)等。•2.工作空间•工作空间(Workspace)对象,在物理级别上相当于地理数据库本身,在逻辑上是一个包含空间数据集和非空间数据集的数据容器。它包含数据集(Dataset)、要素类(FeatureClass)、表(Table)等数据。1.空间数据与工作空间工作空间工厂对象工作空间对应类型描述AccessWorkspaceFactoryesriLocalDatabaseWorkspace打开PersonalGeoDatabaseArcInfoWorkspaceFactoryesriFileSystemWorkspace打开ArcInfo工作空间文件CadWorkspaceFactoryesriFileSystemWorkspace打开CAD文件的工作空间OLEDBWorkspaceFactoryesriRemoteDatabaseWorkspace使用OLEDB打开数据库的工作空间文件SdeWorkspaceFactoryesriRemoteDatabaseWorkspace打开SDE数据库的工作空间ShapefileWorkspaceFactoryesriFileSystemWorkspace打开ShapeFile文件的工作空间TinWorkspaceFactoryesriFileSystemWorkspace打开TIN数据文件的工作空间TextFileWorkspaceFactoryesriFileSystemWorkspace打开文本文件的工作空间常用的工作空间及工作空间对象1.空间数据与工作空间•工作空间•数据加载需要先打开相对应的工作空间。•IWorkspace接口:IWorkspace接口定义了访问工作空间各种属性的方法,如工作空间的连接属性等。通过IWorkspace接口可实例化现有数据集和创建新数据集。由于WorkSpace是一个普通类,要获得WorkSpace,需要通过工作空间工厂(WorkspaceFactory)来创建。•IWorkspaceFactory接口:IWorkspaceFactory接口定义了创建、打开工作空间的方法和对工作空间工厂信息成员的访问。用户可通过工作空间工厂管理不同类型的工作空间,所有的工作空间对象都可通过此接口产生。•IWorkspaceFactory接口的Create方法可产生一个新的工作空间对象,不同类型的WorkspaceFactory对象,其Create方法产生的工作空间对象是不同的。•IWorkspaceShapefileFactory接口的Open方法和OpenFromFile方法可以用于打开一个已经存在的工作空间,Open方法用于打开一个SDE数据库,OpenFromFile方法用于打开一个文件类型的数据,如*.tif、*.img等。2.MapControl控件接口•1)IMapControlDefault接口•IMapControlDefault接口是MapControl控件的缺省接口,是代表当前版本的最新接口,开发环境自动使用这个接口定义的属性和方法。•2)IMapControl2接口•IMapControl2接口提供了一系列的属性和方法,如设置MapControl控件的显示属性、控件外观、添加和管理数据图层和地图文档、在控件上绘制图形和返回几何对象等。•3)IMapControl3接口•IMapControl3接口在继承IMapControl2的基础上,增加了以下属性和方法:•CustomProperty:设置自定义控件属性。•DocumentFilename:返回MapControl中载入的地图文档的文件名。•DocumentMap:返回MapControl中最后载入的地图名称。•KeyIntercept:返回或设置MapControl控件截取的键盘按键信息。•Object:返回MapControl控件。•ShowMapTips:控制是否显示地图的MapTips。•TipDelay:设置MapTips的延迟时间。•TipStyle:设置MapTips的显示样式。•SuppressResizeDrawing::当控件尺寸发生变化时阻止数据实时重绘。2.MapControl控件接口•4)IMapControl4接口•IMapControl4接口在IMapControl3接口的基础上,增加了两个属性,分别是AutoKeyboardScrolling和AutoMouseWheel。•AutoKeyboardScrolling:确定键盘滚动轮是否起作用。•AutoMouseWheel:确定鼠标滚轮是否起作用。•5)IMapControlEvents2接口•IMapControlEvent2接口为事件接口,它定义了MapControl能够处理的全部事件,如OnMouseDown、OnMouseMove、OnKeyUp、OnBeforeScreenDraw、OnAfterDraw、OnExtentUpdated等。3.数据加载•1)加载地图文档的方式有三种:使用IMapControl接口的LoadMxFile方法加载;通过IMapDocument接口加载;使用ArcGISEngine中封装好的类库资源ControlsOpenDocCommandClass加载。3.数据加载•使用IMapControl接口的LoadMxFile方法加载地图文档•实现思路如下:•通过.NET框架类提供的打开文件对话框选择要打开的地图文档;•用IMapControl接口提供的CheckMxFile方法检查是否为有效的地图文档,若有效,则调用IMapControl接口提供的LoadMxFile方法进行加载。核心代码3.数据加载•通过IMapDocument接口加载•IMapDocument接口定义了操作和管理地图文档对象的方法和属性。使用这个对象可以获取、更新一个文档的内容,设置文档文件的属性以及读、写和保存一个文档文件等。IMapDocument接口同时扮演着数据显示和数据容器的双重身份,可以通过ActiveView获得Map数据视图,通过FocusMap属性获得当前正在使用的Map对象的数据容器身份。一个文档对象可能拥有多个Map对象(相当于ArcGIS中的数据框DataFrame),但是在同一时刻内只能有一份Map处于使用状态。核心代码3.数据加载•使用ControlsOpenDocCommandClass加载地图•使用ArcGISEngine中封装好的类库资源ControlsOpenDocCommandClass实现地图文档的加载的核心代码如下:3.数据加载•2)加载ShapeFile数据•ShapeFile文件是目前主流的一种空间数据的文件存储方式,也是不同GIS软件进行数据格式转换常用的中间格式。加载ShapeFile数据的方式有两种:通过工作空间加载;通过IMapControl接口的AddShapeFile方法加载。3.数据加载•通过工作空间加载ShapeFile文件•通过工作空间加载ShapeFile文件主要用到IMap、ILayer、IFeatureLayer和IFeatureClass四个接口。•IMap接口是对地图进行操作的起点,主要用于管理Map对象中的图层对象,要素选择集和空间参考等对象。•ILayer接口是图层对象的通用接口,它提供了操作图层的属性和方法,可用于所有的图层,例如要素图层(FeatureLayer)、栅格图层(RasterLayer)和图形图层集合(CompositeGraphicsLayer)等。•IFeatureLayer接口继承自ILayer接口,提供了访问基于矢量数据图层的属性和方法,图层的数据可以是Geodatabase,ShapeFile或Coverage数据。•IFeatureClass接口是获取和设置要素类属性的主要接口。如:获取要素类的类型,得到满足某个查询条件的要素个数,或在要素类中创建一个新的功能等。Map、Layer、FeatureLayer三者之间的关系:Map是很多图层的集合,就像ArcMap的mxd文档一样,可以包括很多Layer。Layer是图层对象,是数据的外壳,必须建立在数据的基础上才有意义。FeatureLayer是具体的要素图层,需要经过Layer添加到Map中进行显示。FeatureLayer、FeatureClass的区别:FeaturLayer是加载在地图文档中的矢量数据层,只是要素类的表现形式。FeatureClass是一组空间实体的集合,在数据表中存储了统一的属性和行为,每一个FeatureClass都有一个Geometry类型。IFeatureLayer接口继承自ILayer接口,IFeatureClass接口继承自IClass接口;FeatureLayer可以创建自己的对象,而FeatureClass不行。3.数据加载•通过工作空间加载ShapeFile文件的实现思路•(1)创建ShapefileWorkspaceFactory实例pWorkspaceFactory,使用IWorkspaceFactory接口的OpenFromFile方法打开pFeatureWorkspace中存储的基于ShapeFile的工作区;•(2)创建FeatureLayer的实例pFeatureLayer,并定义数据集;•(3)使用IMap接口的AddLayer方法加载pFeatureLayer到当前地图。核心代码3.数据加载•通过MapControl的AddShapeFile方法加载ShapeFile文件•用MapControl控件的AddShapeFile方法同样可加载ShapeFile文件,这样省去了建立工作空间、数据集等步骤。调用该方法需要传入两个参数,分别是文件路径和不带扩展名的文件名,调用方法如下:•mainMapControl.AddShapeFile(stringPath,stringfileName);3.数据加载•3)加载栅格数据•栅格数据是GIS的数据源之一,主要有卫星影像、航空影像、扫描的地图、照片等。常见的栅格数据格式有*.bmp、*.tif和*.jpg等,这几种栅格数据的工作空间是其所在的文件夹。添加栅格数据主要用到IRasterPyramid3、IRasterLayer等接口。•IRasterPyramid3接口提供了对栅格数据集的金字塔属性的访问,Present属性用于判断栅格数据集是否存在金字塔,Create方法用于为栅格数据集创建金字塔。•IRasterLayer接口继承自ILayer接口,CreateFromDataset方法用于从已有的栅格数据集对象创建图层;CreateFromRaster方法用于从已有的栅格对象创建图层;Raster属性用于获取IRasterLayer接口中的Raster对象,DisplayResolutionFactor属性用于设置栅格数据的分辨率。•在加载栅格文件时,需引用ESRI.ArcGIS.DataSourcesRaster命名空间。3.数据加载•加载栅格数据的实现思路•(1)用IWorkspaceFactory接口的OpenFromFile方法获得栅格文件的工作区;•(2)用IRasterWorkspace接口的
本文标题:牟乃夏ArcEngine教程-第3章_地图操作基本功能
链接地址:https://www.777doc.com/doc-5322396 .html