地图基本操作——有关接口的解释和实现思路(持续更新)
来源:互联网 发布:java dll 反编译工具 编辑:程序博客网 时间:2024/05/16 08:24
刚开始学ArcEngine没几天,有很多接口的作用和属性之类的都不懂,最近看了一份牟乃夏老师的资料感觉很有用,就整理了一下记录下来。
基本为概念和方法,没有代码演示,像学习笔记一样的记录,持续学习持续更新。
以下主要内容。
1、IWorksapce接口,定义访问工作空间各种属性的方法
2、IWorkspaceFactory接口,定义创建、打开工作空间的方法和对工作空间工厂信息成员的访问
Create方法,创建新的工作空间对象
Open方法,打开SDE数据库
OpenFromFile方法,打开文件类型的数据
////////////////////////////////////////////////////////////////////////////////////////////////////////
MapControl控件实现的接口有5种:IMapControlDefault接口、IMapControl2接口、IMapControl3接口、IMapControl4接口、IMapControlEnvent2接口
1、IMapControlDefaul接口是MapControl控件的默认接口,代表当前版本的最新接口,开发环境会自动使用这个接口定义的属性和方法
2、IMapControl2接口
1)定义控件外观的属性:Apperance、BorderStyle、BaceColor
2)添加、移动、删除图层的方法:AddLayer、MoveLayerTo、Pan、ClearLayers
3)绘制图形的方法:DrawShape、DrawText
4)返回几何对象的方法:TrackLine、TrackPolygon
3、IMapControl3接口。在继承IMapControl2的基础上,添加了9种属性和方法:
1)CustonProperty:设置自定义控件属性
2)DocumentFilename:返回地图文档的文件名
3)DocumentMap:返回地图名称
4)KeyIntercept:返回或设置截取的键盘按键信息
5)Object:返回MpaControl控件
6)ShowMapTips:控制MapTips的显示
7)TipDelay:设置MapTips的延迟时间
8)TipStyle:设置MapTips的显示样式
9)SuppressTesizeDrawing:当尺寸控件发生变化时阻止数据实时重绘
4、IMapControl4接口。在继承IMapControl3接口的基础上,增加了两个属性:
1)AutoKeyboardScrolling:确定键盘滚动轮的可用性
2)AutoMouseWheel:确定鼠标滚轮的可用性
5、IMapControlEvent2接口
定义MapControl能够处理的全部事件,如:OnMouseDown、OnMouseMove、OnKeyUp、OnBeforeScreenDraw、OnAfterDraw、OnExtentUpdata等。
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
一、加载地图文档的方式有3种:
1、使用IMapControl接口的LoadMxFile方法
2、使用IMapDocument接口
3、ControlsDocCommandClass类库资源(ICommand接口)
二、加载Shapefile数据方式有2种:
1、使用工作空间
需要用到以下4个接口:
1)IMap接口:是对地图进行操作的起点,用于管理Map对象中的图层对象、要素选择集和空间参考等对象
2)ILayer接口:是图层对象的通用接口,提供操作图层的属性和方法,可用于所有的图层。
3)IFeatureLayer接口:继承自ILayer接口,提供访问基于适量数据图层的属性和方法
4)IFeatureClass接口:是获取和设置要素类属性的主要接口
Map/Layer/FeatureLayer的关系:Map>Layer>FeatureLayer
【FeatureLayer和FeatureClass的区别:
1)FeatureLayer是加载在地图文档中的矢量数据层,只是要素类的表现形式。FeatureClass是一组空间实体的集合,在数据表中存储了统一的属性和行为,每一个FeatureClass都有一个Geometry类型
2)IFeatureLayer接口继承自ILayer接口,IFeatureClass接口继承自IClass接口
3)FeatureLayer可以创建自己的对象,而FeatureClass不行。】
2、使用MapControl空间的AddShapefile方法
(Shapefile文件是一种空间数据的文件存储方式,是不同GIS软件进行数据格式转换的常用的中间格式)
三、加载栅格数据
【实现思路:
1、使用OpenFromFile方法获得栅格文件的工作区(IWorkspace和IWorkspaceFactory接口)
2、使用OpenRasterDataset方法获得栅格文件的数据集
3、判断栅格数据集是否有金字塔(没有则创建一个)
4、创建pRasterLayer,并定义数据集
5、使用AddLayer方法加载数据】
主要用到2两个接口:
1、IRasterPyramid3接口:提供对栅格数据集的金字塔属性的访问
Present属性:判断栅格数据集是否存在金字塔
Create方法:为栅格数据集创建金字塔
2、IRasterLayer接口:继承自ILayer接口
CreateFromDataset方法:从已有的栅格数据集对象创建图层
CreateFromRaster方法:从已有的栅格对象创建图层
Raster属性:获取IRasterLayer接口中的Raster对象
DisplayResolutionFactor属性:设置栅格数据的分辨率
四、加载CAD数据
【整幅图加载(作为矢量图层加载)_实现思路: 作为栅格图层加载_实现思路:
1、定义工作区间 1、获取CAD文件的工作区
2、遍历CAD文件中的要素,判断是否为注记图层 2、获取CAD文件的数据集,并将其赋值给CadDrawingDataset属性
3、分别加载注记与其他图层 3、使用AddLayer方法加载数据】
作为要素图层,以矢量数据来使用,管理方法同FeatureLayer
作为栅格图层,以栅格数据来使用,使用CadLayer对象来管理,需要用到2个接口:
1、ICadLayer接口:提供对CAD文件属性信息的访问,如图名(Name)、可见性(Visible)等
2、ICadDrawingDataset接口:提供对CAD数据集成员的访问,可以通过ICadLayer接口的CadDrawingDataset属性获取CAD的数据集
五、加载个人数据库数据
需要用到2个接口:
1、IFeatureDataset接口:继承自IDataset接口,在其基础上增加一个创建要素类的功能CreateFeatureClass
2、IEnumDataset接口:访问个人数据库中的所有数据集成员,有Reset和Next两个方法:
1)Reset方法:重置数据集序列,使指针位于第一个数据集之前。
2)Next方法:获取枚举序列的下一个数据集
【总结:加载空间数据一般具有以下5个步骤
1、创建数据对应的工作空间工厂(WorkspaceFactory)
2、使用WorkspaceFactory创建要加载数据的工作空间(Workspace)
3、使用Workspace打开并得到图层的数据集DataSet
4、将DataSet复制给新建图层的数据源
5、添加图层到MapControl中进行显示】
六、拉框放大/拉框缩小
用的是Extent方法和TrackRectangle方法。
事件发生在axMapControl的OnMouseDown事件中。
七、漫游
调用MapControl的Pan()方法来实现漫游效果。
在MapControl的OnMouseDown事件中触发。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 地图基本操作——有关接口的解释和实现思路(持续更新)
- Git操作解释(持续更新)
- git的基本操作(持续更新)
- linux基本操作(持续更新)
- 第四节实现地图的基本操作
- 有关js的一些好文收录——会持续更新
- 有关matlab的一些积累,持续更新
- 数据库基本操作命令(持续更新)
- Linux 相关缩写的解释(持续更新)
- 消息队列的基本使用思路和接口介绍
- 解释器的基本运行思路
- 中文分词方法的基本方法和持续改进的思路
- 有关音视频文件解析和提取等一系列问题的帖子集合,持续更新
- 有关音视频文件解析和提取等一系列问题的帖子集合,持续更新
- MySQL基本操作语句及JDBC操作(持续更新中)
- 有关单链表的基本操作
- 有关数据库的 基本操作
- 简单思路(持续更新)
- 大数据批处理框架Spring Batch大解析
- 对象引用
- 随笔(临时变量,引用变量,const)
- 如何在Winform、WPF和未来占据主导地位的UWP之间最大程度实现代码重用
- Spring boot实现webSocket通信握手失败报404错误
- 地图基本操作——有关接口的解释和实现思路(持续更新)
- java-包装类、基本数据类型和字符串之间的转换
- 有助了解推流的三篇文章
- HTML5地理定位
- 个人随感
- hdu 6162 Ch’s gift(主席树+树链剖分)
- 纯净CentOs中安装mysql遇到的坑
- hdu 6162 Ch’s gift
- Java集合详解--什么是Map