ArcGIS Engine地理信息系统开发教程 第3章 地图基本操作.pptx
- 文档编号:30843043
- 上传时间:2024-01-31
- 格式:PPTX
- 页数:133
- 大小:2.05MB
ArcGIS Engine地理信息系统开发教程 第3章 地图基本操作.pptx
《ArcGIS Engine地理信息系统开发教程 第3章 地图基本操作.pptx》由会员分享,可在线阅读,更多相关《ArcGIS Engine地理信息系统开发教程 第3章 地图基本操作.pptx(133页珍藏版)》请在冰豆网上搜索。
第3章地图基本操作,目录空间数据与工作空间MapControl控件接口基本操作,4,TOCControl控件,1,目录,空间数据,
(1)空间数据有不同的存在形式;
(2)空间数据存储在空间数据库中;(3)空间数据库采用数据集、要素类等形式进行数据的存储。
1.空间数据与工作空间,2,工作空间,
(1)由数据集(Dataset)、要素类(FeatureClass)、表(Table)等数据组成。
(2)该对象在物理级别上相当于地理数据库本身。
(3)该对象在逻辑上是包含空间数据集和非空间数据集的数据容器。
1.空间数据与工作空间,3,工作空间,1.空间数据与工作空间,4,工作空间,需要使用WorkspaceFactory对象来创建,常用的接口有:
IWorkspace接口定义访问工作空间各种属性的方法IWorkspaceFactory接口定义创建、打开工作空间的方法和对工作空间工厂信息成员的访问Create方法创建新的工作空间对象Open方法打开SDE数据库OpenFromFile方法打开文件类型的数据,1.空间数据与工作空间,5,MapControl控件,主要用于图形显示;封装了Map对象,提供相应的属性、方法和事件;实现的接口有5种:
IMapControlDefault接口、IMapControl2接口、IMapControl3接口、IMapControl4接口、IMapControlEnvents2接口,6,2.MapControl控件接口,
(1)是MapControl控件的默认接口
(2)代表当前版本的最新接口(3)开发环境会自动使用这个接口定义的属性和方法。
IMapControlDefaul接口,7,2.MapControl控件接口,定义控件外观的属性:
Apperance、BorderStyle、BackColor添加、移动、删除图层的方法:
AddLayer、MoveLayerTo、Pan、ClearLayers绘制图形的方法:
DrawShape、DrawText返回几何对象的方法:
TrackLine、TrackPolygon,IMapControl2接口,8,2.MapControl控件接口,在继承IMapControl2的基础上添加了以下属性和方法(9种):
(1)CustomProperty:
设置自定义控件属性。
(2)DocumentFilename:
返回地图文档的文件名。
(3)DocumentMap:
返回地图名称。
(4)KeyIntercept:
返回或设置截取的键盘按键信息。
IMapControl3接口,9,2.MapControl控件接口,在继承IMapControl2的基础上添加了以下属性和方法(9种):
(5)Object:
返回MapControl控件。
(6)ShowMapTips:
控制MapTips的显示。
(7)TipDelay:
设置MapTips的延迟时间。
(8)TipStyle:
设置MapTips的显示样式。
(9)SuppressResizeDrawing:
当尺寸发控件生变化时阻止数据实时重绘。
IMapControl3接口,10,2.MapControl控件接口,在继承IMapControl3接口的基础上,增加了两个属性:
(1)AutoKeyboardScrolling:
确定键盘滚动轮的可用性。
(2)AutoMouseWheel:
确定鼠标滚轮的可用性。
IMapControl4接口,11,2.MapControl控件接口,定义了MapControl能够处理的全部事件,如:
onmousedown、onmousemove、onkeyup、OnBeforeScreenDraw、OnAfterDraw、OnExtentUpdated等。
IMapControlEvents2接口,12,2.MapControl控件接口,主要从以下9种操作进行讲解:
数据加载地图文档保存(3)地图浏览(4)书签(5)Icommand和Itool,基本操作,量测要素选择(8)地图导出(9)视图同步,13,3.基本操作,可以加载以下8种数据:
(1)地图文档
(2)Shapefile数据(3)栅格数据(4)CAD数据,数据加载,(5)个人地理数据库数据(6)文件地理数据库数据(7)ArcSDE空间数据库数据(8)文本文件数据,14,3.基本操作,数据加载,加载地图文档加载地图文档的方式有以下3种:
(1)使用IMapControl接口的LoadMxFile方法
(2)使用IMapDocument接口(3)使用ControlsOpenDocCommandClass类库资源,15,3.基本操作,数据加载,加载地图文档-使用LoadMxFile方法,打开地图文档检查地图文档的有效性使用LoadMxFile方法加载地图文档,实现思路,16,3.基本操作,数据加载,加载地图文档-使用LoadMxFile方法,核心代码,17,3.基本操作,数据加载,加载地图文档-使用IMapDocument接口
(1)IMapDocument接口定义操作和管理地图文档对象的方法和属性。
(2)通过FocusMap属性获得当前正在使用的Map对象的数据容器身份。
(3)在同一时刻内只能有一个Map处于使用状态。
18,3.基本操作,加载地图文档-使用IMapDocument接口,核心代码,数据加载,19,3.基本操作,加载地图文档-使用ControlsOpenDocCommandClass,核心代码,数据加载,20,3.基本操作,加载地图文档-使用ControlsOpenDocCommandClass核心代码,数据加载,效果展示,21,3.基本操作,数据加载,加载Shapefile数据Shapefile文件
(1)是一种空间数据的文件存储方式。
(2)是不同GIS软件进行数据格式转换常用的中间格式。
加载Shapefile数据的方式有以下2种:
使用工作空间使用MapControl控件的AddShapefile方法,22,3.基本操作,数据加载,加载Shapefile数据-使用工作空间需要用到以下4个接口:
IMap接口是对地图进行操作的起点,用于管理Map对象中的图层对象,要素选择集和空间参考等对象。
ILayer接口是图层对象的通用接口,提供操作图层的属性和方法,可用于所有的图层。
IFeatureLayer接口继承自ILayer接口,提供访问基于矢量数据图层的属性和方法。
IFeatureClass接口是获取和设置要素类属性的主要接口。
23,3.基本操作,数据加载,加载Shapefile数据-使用工作空间Map、Layer、FeatureLayer的关系:
Map,24,3.基本操作,Layer,FeatureLayer,数据加载,加载Shapefile数据-使用工作空间FeatureLayer、FeatureClass的区别:
FeaturLayer是加载在地图文档中的矢量数据层,只是要素类的表现形式。
FeatureClass是一组空间实体的集合,在数据表中存储了统一的属性和行为,每一个FeatureClass都有一个Geometry类型。
IFeatureLayer接口继承自ILayer接口,IFeatureClass接口继承自IClass接口;(3)FeatureLayer可以创建自己的对象,而FeatureClass不行。
25,3.基本操作,加载Shapefile数据-使用工作空间,数据加载,实现思路,26,3.基本操作,创建ShapefileWorkspaceFactory实例,使用OpenFromFile方法打开工作区。
创建FeatureLayer的实例,定义数据集。
(3)使用AddLayer方法加载数据。
数据加载,加载Shapefile数据-使用工作空间核心代码,27,3.基本操作,数据加载,加载Shapefile数据-使用AddShapefile方法只需传入两个参数即可完成调用。
文件路径,不带扩展名的文件名,效果展示,28,3.基本操作,数据加载,加载栅格数据主要用到以下2个接口:
IRasterPyramid3接口提供对栅格数据集的金字塔属性的访问Present属性-判断栅格数据集是否存在金字塔Create方法-为栅格数据集创建金字塔IRasterLayer接口继承自ILayer接口CreateFromDataset方法-从已有的栅格数据集对象创建图层CreateFromRaster方法-从已有的栅格对象创建图层Raster属性-获取IRasterLayer接口中的Raster对象DisplayResolutionFactor属性-设置栅格数据的分辨率。
29,3.基本操作,加载栅格数据,数据加载,使用OpenFromFile方法获得栅格文件的工作区使用OpenRasterDataset方法获得栅格文件的数据集(3)判断栅格数据集是否具有金字塔(4)创建pRasterLayer,并定义数据集(5)使用AddLayer方法加载数据,实现思路,30,3.基本操作,加载栅格数据,数据加载,核心代码,31,3.基本操作,加载栅格数据,数据加载,效果展示,32,3.基本操作,数据加载,加载CAD数据CAD数据的使用有两种不同的方式:
(1)作为要素图层,以矢量数据来使用,管理方法同FeatureLayer
(2)作为栅格图像,以栅格数据来使用,使用CadLayer对象来管理,33,3.基本操作,数据加载,实现思路,34,3.基本操作,加载CAD数据-作为矢量图层加载1)分图层加载分为点、线、面、标注等分别加载,
(1)定义一个工作空间,并打开相应的工作空间
(2)创建FeatureLayer的实例,定义数据集(3)使用AddLayer方法加载数据,数据加载,加载CAD数据-作为矢量图层加载1)分图层加载,核心代码,35,3.基本操作,数据加载,加载CAD数据-作为矢量图层加载1)分图层加载,效果展示,36,3.基本操作,数据加载,加载CAD数据-作为矢量图层加载1)整幅图加载,实现思路,37,3.基本操作,定义工作空间遍历CAD文件中的要素,判断是否为注记图层(3)分别加载注记图层与其他图层,数据加载,加载CAD数据-作为矢量图层加载1)整幅图加载,核心代码,38,3.基本操作,数据加载,加载CAD数据-作为矢量图层加载1)整幅图加载,效果展示,39,3.基本操作,数据加载,加载CAD数据-作为栅格图层加载需要用到以下2个接口:
ICadLayer接口提供对CAD文件属性信息的访问,如:
图名(Name)、可见性(Visible)等ICadDrawingDataset接口提供对CAD数据集成员的访问,可以通过ICadLayer接口的CadDrawingDataset属性获取CAD的数据集,40,3.基本操作,数据加载,加载CAD数据-作为栅格图层加载
(1)获取CAD文件的工作区,获取CAD文件的数据集,并将其赋值给CadDrawingDataset属性使用AddLayer方法加载数据,实现思路,41,3.基本操作,数据加载,加载CAD数据-作为栅格图层加载核心代码,42,3.基本操作,加载CAD数据-作为栅格图层加载,数据加载,效果展示,43,3.基本操作,数据加载,加载个人地理数据库数据需要用到以下2个接口:
IFeatureDataset接口-继承自IDataset接口,在其基础上增加一个创建要素类的功能CreateFeatureClass。
IEnumDataset接口-访问个人数据库中的所有数据集成员,有Reset和Next两个方法:
Reset方法-重置数据集序列,使指针位于第一个数据集之前。
Next方法-获取枚举序列的下一个数据集。
44,3.基本操作,加载个人地理数据库数据,数据加载,创建AccessWorkspaceFactory类的实例使用OpenFromFile方法打开*.mdb数据集的工作空间加载工作空间里面的数据,实现思路,45,3.基本操作,加载个人地理数据库数据,数据加载,核心代码,46,3.基本操作,加载个人地理数据库数据,数据加载,效果展示,47,3.基本操作,数据加载,加载文件地理数据库数据文件地理数据库以文件夹形式存储各种类型的GIS数据集可以存储、查询和管理空间数据和非空间数据(3)支持单用户编辑,不支持版本管理。
48,3.基本操作,加载文件地理数据库数据,数据加载,使用FolderBrowserDialog选择文件夹进行加载创建FileGDBWorkspaceFactoryClass类的实例使用OpenFromFile方法打开文件地理数据库的工作空间(3)加载工作空间里面的数据,实现思路,49,3.基本操作,加载文件地理数据库数据,数据加载,核心代码,50,3.基本操作,加载文件地理数据库数据,数据加载,效果展示,51,3.基本操作,数据加载,加载ArcSDE空间数据库数据ArcSDE(SpatialDatabaseEngine,空间数据库引擎)
(1)是在现有的关系型数据库上进行的空间扩展
(2)能将空间数据保存在关系数据库中(如Oracle、SQLServer等)(3)支持多用户并发操作可通过版本来表现空间数据编辑的状态当完成数据编辑后,可将多人的编辑状态进行版本合并,52,3.基本操作,加载ArcSDE空间数据库数据,数据加载,
(1)创建SdeWorkspaceFactoryClass类的实例
(2)打开SDE数据库的工作空间(3)加载工作空间里面的数据,实现思路,53,3.基本操作,加载ArcSDE空间数据库数据,数据加载,核心代码,注:
在加载ArcSDE数据时,需要用到ArcGISEngine运行时的企业级许可。
54,3.基本操作,加载文本文件数据,数据加载,实现思路,55,3.基本操作,根据Excel或者*.txt文件等获取点的坐标信息创建一个点结构,进行点信息的存储。
创建并实例化一个CPoint类型的数组,存储所有的点信息根据点的坐标创建ShapeFile图层创建表的工作空间为属性字段赋值,得到图层的要素集加载ShapeFile图层,加载文本文件数据-坐标信息获取,数据加载,核心代码,56,3.基本操作,加载文本文件数据-根据点坐标创建Shapefile图层,数据加载,核心代码,57,3.基本操作,加载文本文件数据-加载Shapefile图层,数据加载,核心代码,58,3.基本操作,数据加载,总结加载空间数据一般具有以下5个步骤:
创建数据对应的工作空间工厂(WorkspaceFactory)使用WorkspaceFactory创建要加载数据的工作空间(Workspace)(3)使用Workspace打开并得到图层的数据集DataSet(4)将DataSet赋值给新建图层的数据源(5)添加图层到MapControl中进行显示,59,3.基本操作,直接保存,地图文档保存,
(1)使用IMxdContents接口读取已打开地图文档的内容
(2)使用IMapDocument接口的Save方法进行保存,实现思路,60,3.基本操作,Save方法的参数说明,直接保存,地图文档保存,核心代码,61,3.基本操作,地图文档保存,另存为其方法与直接保存方法类似,需要使用New方法创建新的路径。
核心代码,62,3.基本操作,固定比例放大与缩小,地图浏览,实现思路,63,3.基本操作,固定比例放大以当前视图的中心点为缩放中心对地图进行放大操作。
(1)记下MapControl当前的Extent
(2)缩小该范围(3)设置MapControl的Extent属性为缩小后的范围,固定比例放大与缩小,地图浏览,核心代码,固定比例放大,64,3.基本操作,固定比例缩小,地图浏览,拉框放大需要用到TrackRectangle方法。
实现思路,65,3.基本操作,
(1)使用Envelope获取鼠标拖出的矩形橡皮筋范围
(2)将获取范围赋值给当前视图,注:
事件发生在mainMapControl的onmousedown事件中,拉框放大,地图浏览,核心代码,66,3.基本操作,拉框缩小,地图浏览,核心代码,67,3.基本操作,地图浏览,漫游调用MapControl的Pan()方法来实现漫游效果,注:
在MapControl的onmousedown事件中触发,68,3.基本操作,地图浏览,全图显示是把地理数据集中所有的要素显示在视图范围内,并且当前视图恰好把所有的地理要素囊括进来。
需要调用MapControl的FullExtent函数,69,3.基本操作,地图浏览,70,3.基本操作,历史视图切换需要用到IExtentStack接口,即堆扩展接口。
IExtentStack接口提供访问控制范围内堆栈成员的方法。
IExtentStack接口的方法,历史视图切换,地图浏览,实现思路,71,3.基本操作,新建ExtentStack对象来存储历史视图判断能否进行视图切换,并进行相应操作,历史视图切换,地图浏览,核心代码,返回前一视图,72,3.基本操作,返回后一视图,书签,
(1)书签是保存特定视图范围的快捷方式,73,3.基本操作,使用书签可在需要时快速定位、查看与浏览主要用到IMapBookmarks、ISpatialBookmark和IAOIBookmark3个接口,书签,
(1)IMapBookmarks接口,74,3.基本操作,Bookmarks属性-获得已存在的所有书签对象AddBookmark方法-添加书签RemoveBookmark方法-删除书签ISpatialBookmark接口定义所有书签的共同功能Name属性-定义书签名称ZoomTo方法-跳转到书签位置点IAOIBookmark接口继承自ISpatialBookmark接口新增Location属性-存储地图中感兴趣的范围,书签,使用IAOIBookmark接口创建书签使用IMapBookmarks接口访问当前地图书签集(3)添加书签到地图书签集,添加书签,实现思路,窗体界面,75,3.基本操作,书签,添加书签,核心代码,76,3.基本操作,书签,书签管理,实现思路,新建一个Dictionary对象,存储地图中的书签名称和其对应的空间书签管理书签窗口打开时,遍历书签并把书签名添加到目录树(3)根据书签名获取对应的空间书签,实现书签的定位和删除,窗体界面,77,3.基本操作,书签,书签管理,核心代码,78,3.基本操作,书签,书签管理,核心代码,79,3.基本操作,ICommand和ITool命令操作地图,80,3.基本操作,继承Icommand接口的对象类参照表,ICommand和ITool命令操作地图,继承ITool接口的对象类参照表,81,3.基本操作,量测,空间量测是测量空间坐标框架下的线的长度、多边形的面积等。
要想获取地理实体的长度或者面积,首先需要获取该地理实体,然后通过shape字段得到其Geometry,从而获取长度和面积等。
窗体界面,82,3.基本操作,核心代码,量测声明测量结果窗口关闭的委托事件,83,3.基本操作,核心代码,量测结束量算功能以及清空用于量算的线或面的实例化对象,84,3.基本操作,量测,状态栏坐标显示,85,3.基本操作,在状态栏添加一个toolStripStatusLabel控件并设置其Name属性为barCoorTxt,用来显示鼠标所在地图点上的当前坐标。
在数据视图的onmousemove事件触发时读取地图的单位,并在状态栏显示鼠标在数据视图中的当前地图点坐标。
量测,核心代码,86,3.基本操作,状态栏坐标显示,量测,距离测量,87,3.基本操作,主要用到INewLineFeedback和IScreenDisplay两个接口INewLineFeedback接口的方法,量测,距离测量,88,3.基本操作,IScreenDisplay接口MapControl中的每个视图都有一个ScreenDisplay对象,用于控制视图中的图形绘制。
ScreenDisplay对象除了管理窗体屏幕的显示属性、管理缓存和视图屏幕的变化等。
IActiveView接口的ScreenDisplay属性获取ScreenDisplay对象。
(4)ScreenDisplay对象的DisplayTransformation属性转换设备单位和地图单位。
量测,距离测量,鼠标点击时,判断pNewLineFeedback是否为空为空,则实例化,将当前鼠标点设为pNewLineFeedback的起始点不为空,将当前鼠标点添加到pNewLineFeedback中。
鼠标进行移动时,实时计算鼠标前后移动的距离,以及所画线的总长度。
鼠标进行双击时,停止绘制并清空pNewLineFeedback对象,实现思路,89,3.基本操作,量测,距离测量,核心代码,初始化相关变量,弹出测量窗体,90,3.基本操作,量测,核心代码,距离测量鼠标点击时触发onmousedown事件,实现追踪线的绘制和点的添加,91,3.基本操作,量测,核心代码,距离测量鼠标移动时触发onmousemove事件,实现测量结果的实时显示,92,3.基本操作,量测,核心代码,距离测量鼠标双击时触发OnDoubleClick事件,长度量算结束,并实时显示出来,93,3.基本操作,量测,面积测量,面积测量通过INewPolygonFeedback接口绘制多边形来实现
(1)鼠标点击时,判断pNewPolygonFeedback是否为空为空,则实例化,将当前鼠标点设为pNewPolygonFeedback的起始点不为空,将当前鼠标点添加到pNewPolygonFeedback中。
鼠标进行移动时,判断点的个数pPointCol是否超过3个超过3个,则由点集构建IPolygon接口、IArea接口,计算面的总长度和面积鼠标进行双击时,停止绘制并清空pNewPolygonFeedback对象,实现思路,94,3.基本操作,量测,面积测量,核心代码,初始化相关变量,弹出测量窗体,95,3.基本操作,量测,核心代码,面积测量鼠标点击时触发onmousedown事件,实现追踪面的绘制和点的添加,96,3.基本操作,量测,核心代码,面积测量鼠标移动时触发onmousemove事件,实现测量结果的实时显示,97,3.基本操作,量测,核心代码,面积测量鼠标移动时触发onmousemove事件,实现测量结果的实时显示,97,3.基本操作,量测,核心代码,面积测量鼠标双击时触发OnDoubleClick事件,面积量算结束,并实时显示出来,98,3.基本操作,要素选择,要素选择需要用到IMap接口的SelectByShape方法,该方法可以查询到与输入的形状相交图层中的所有IFeatureLayer接口类型的Features,前提是该FeatureLayer图层的Selectable属性为true。
实现思路,3.基本操作,100,使用TrackRectangle方法绘制矩形框当矩形框为空时,则以鼠标当前点击位置为中心向外扩展为矩形框作为选择区域使用SelectByShape方法进行要素的选择,要素选择,要素选择,核心代码,调用类库资源代码,3.基本操作,101,要素选择,缩放至选择,实现思路,3.基本操作,102,遍历地图中选中的要素使用Union方法获取所有选中要素的外包框范围(3)缩放地图视图至该范围,要素选择,缩放至选择,核心代码,调用类库资源代码,3.基本操作,103,要素选择,清除选择,核心代码,调用类库资源代码,3.基本操作,104,地图导出,地图导出是将地图保存为图片,方便快速查看浏览。
地图导出分为全域导出和区域导出两种。
窗体界面,3.基本操作,105,地图导出,核心代码,全域导出,全域导出触发事件,3.基本操作,106,地图导出,效果展示,全域导出,3.基本操作,107,地图导出,核心代码,区域导出鼠标点击时,导出绘制范围内的地图,3.基本操作,108,地图导出,效果展示,区域导出,3.基本操作,109,视图同步,保持鹰眼窗口、数据视图和布局视图等几个视图同步鹰眼窗口完成鹰眼功能需要以下三个步骤:
(1)鹰眼中数据与数据视图中的数据一致,鹰眼视图中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ArcGIS Engine地理信息系统开发教程 第3章 地图基本操作 Engine 地理信息系统 开发 教程 地图 基本 操作