赘述(可跳过)
今天上课相对于昨天还是比较顺利,没有第一次使用Engine时候的慌张,但是多多少少也还遇到了一些问题,也找了一点资源来分享,或许不一定有用。
今天上课的一个感受:
不知道每个接口属于哪一个引用类库,属于哪一个命名空间,我觉得有可能是软件跨版本遇到的一些问题,使用时候没有遇到编写其他代码时候的提示信息,当然也可能是因为ArcSDK是非VS本身自带的语言环境,还没探索清楚。
关于几个接口的个人理解
正文开始:我记得组件GIS操作课之前老师讲了一大堆类库和一大堆的命名空间,当时因为一下子讲了很多而且内容很抽象,所以大多没记住,以后会争取一点点联系,一点点对应。
PS:对于接口这个概念,或许稍微有一点抽象,我自己的理解就是它就是一个协议,协议里没有具体实现内容。它设计来让后来人在继承时保证功能的完整性,每一个接口实现一个特定的功能,实现这个功能时有一系列必须的方法和属性,所以继承接口时需要实现接口的所有内容。
推荐一个B站关于C#接口的视频.(不是打广告啊),我觉得还不错,老师也很棒,版本用的是VS2010。这个老师的其他视频也还不错,有时间可以看看。
IMap
接口命名时常用大写字母I作为前缀来表示这是一个接口,然后后面紧接着一个Map,所以它就是与地图处理相关的接口,实现的功能也自然是与地图相关。
课本上关于这个接口的介绍时这样的
IMap是对地图进行操作的起点,主要用于管理Map对象中的图层对象、要素选择集和空间参考等对象。使用IMap接口,可以获取Map对象中图层个数,对图层进行添加、删除,还可以利用IMap接口实现查询的高亮显示等。[1]
对于书上内容的功能介绍部分的理解,可以联想使用ArcMap的过程,理解起来会更加方便。而对于代码部分,最好的办法还是自己敲一遍。
ILayer
其实与上面的理解也类似,由于时间的关系,就先简单写一下我的理解,不一定准确,仅供参考。
其实学习面向对象的编程语言时,“顾名思义”是一种不错的方法。就像刚才所说的,I开头表明这是一个接口,Layer则是提示接口的功能实现。所以它就会说图层对象的通用接口。
IFeatureLayer
通过名字也可以看出,这个接口中有Layer,它是一个继承自ILayer的接口,提供了访问基于矢量数据图层的“协议”,也就是一些属性和方法。因为在ArcGIS中,我们知道在描述不同地理实体之间的拓扑关系时,我们需要在地理数据库中新建一些要素类(FeatureClass),然后才可以添加拓扑关系。所以在这里我们不妨就把Feature当作一些矢量数据来理解。
IFeatureClass
从名字可以看出这是一个要素类的接口,所以实现的功能就是关于要素类的“协议”。可以获取类型、数量,查询时获得的一些符合条件的要素个数,或是在要素类中新建一个功能(我理解的就是添加拓扑这类的)。
IMapControl
控制地图——对应于ArcMap的数据视图,使用它的时候一般都是拖拽了一个AxMapControl的控件。它有很多代的接口:1234和Default,默认的也就是最新的。
IMapDocument
这是一个操作地图文档的接口,处理的也就是跟地图文档相关的一些内容。
IWorkspace and IWorkspaceFactory
WorkSpace叫做工作空间,我理解是一个保存文件的文件夹。而这个工厂,则是用来创建工作空间的一个接口。
今天找到的一些帮助文档
今天上课看到ppt上的一些代码截图,直觉告诉我这是帮助文档,但是我在我的开始菜单中找了一个Help,但是无法打开。不过如果是VS2010版本应该可以打开。
所以我又百度了一下,找到了两个帮助文档,不过都是全英,而且加载稍微有点慢。
链接1: ArcObjects Help for .NET developers.
链接2: ArcObjects Help for .NET developers (ArcObjects .NET 10.8 SDK).
今天遇到的一些小问题
最主要的两个问题就是关于引用类库和命名空间的问题,还有一个我自己瞎搞搞出来的一个问题。
- 问题1:关于引用类库不全的设置:报错说未找到类型。
一般是缺少引用类库和命名空间:
增加引用类库:
这个菜单也可以在最上面的工具栏找到。
增加命名空间引用:使用using语句。
添加引用类库以后,显示修补程序就会有一些有用的东西了。
直接选择就好了。
以此按提示选择就可以了,也可以通过这个方法验证刚刚选择的引用类库玩不完整,每个接口属于那个引用类库等。
- 问题2:无法插入互操作类型(别学我瞎改哈)
这个是我瞎搞出来的,如果你遇到了一些百度找不到答案的问题,建议先重新建立一个项目试一试,如果没有问题了,就再去回想自己做了什么改动。
报错内容:
- 问题3:重复引用:
这个问题也是我作为一个初学者犯的小错误,在引用类库时,开始选了COM选项卡的,后来又在上面引用了一遍,所以重复了。
小结
虽然已经学了好几节课,但是说到底也还是一个初学者,遇到了很多问题,还有很多不懂,不过一切都要循序渐进嘛,慢慢来,接着复习!
《ArcGIS Engine地理信息系统开发教程 基于C#.NET》 测绘出版社 牟乃夏等老师编写。 ↩︎