GIS组件应用笔记2

赘述(可跳过)

今天上课相对于昨天还是比较顺利,没有第一次使用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. 问题1:关于引用类库不全的设置:报错说未找到类型。
    在这里插入图片描述
    一般是缺少引用类库和命名空间:

增加引用类库
法1
2
选择内容
这个菜单也可以在最上面的工具栏找到。
项目菜单下
增加命名空间引用:使用using语句。
添加引用类库以后,显示修补程序就会有一些有用的东西了。
直接选择就好了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以此按提示选择就可以了,也可以通过这个方法验证刚刚选择的引用类库玩不完整,每个接口属于那个引用类库等。

  1. 问题2:无法插入互操作类型(别学我瞎改哈)
    这个是我瞎搞出来的,如果你遇到了一些百度找不到答案的问题,建议先重新建立一个项目试一试,如果没有问题了,就再去回想自己做了什么改动。
    报错内容:在这里插入图片描述
    问题原因与解决:
    我调了一下引用的互操作类型属性,所以出现问题,调回去就没问题了。
    在这里插入图片描述

  2. 问题3:重复引用:
    在这里插入图片描述
    这个问题也是我作为一个初学者犯的小错误,在引用类库时,开始选了COM选项卡的,后来又在上面引用了一遍,所以重复了。
    在这里插入图片描述

小结

虽然已经学了好几节课,但是说到底也还是一个初学者,遇到了很多问题,还有很多不懂,不过一切都要循序渐进嘛,慢慢来,接着复习!


  1. 《ArcGIS Engine地理信息系统开发教程 基于C#.NET》 测绘出版社 牟乃夏等老师编写。 ↩︎

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

憬集

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值