声 明1 : 本人才疏学浅,用郭德纲的话说“我是一个小学生”,如有错误,欢迎讨论,请勿谩骂^_^。
声 明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
缘起
授人以鱼不如授人以渔,学习任何一门技术,我相信都是从帮助文档入手的,ArcEngine也不例外。
本文主要分享如何使用ArcEngine帮助
,快速找到自己想要的信息
以及如何利用帮助整体的学习官方的示例代码
。
安装
ArcEngine安装参考博文:传送门
ArcEngine帮助
本地帮助:位于C:\Program Files (x86)\ArcGIS\DeveloperKit10.4\Help\VS\ArcObjects
,可以在开始菜单直接找到。
在线帮助:传送门(10.6)、传送门(10.1~10.3)
本地其他帮助:本地还有本地代码片段和示例代码工程,帮助大家学习ArcObjects
GitHub资源:传送门
帮助分类
帮助分两大块内容:
- ArcObjects Help for .NET developers:主要包括AO开发的一些帮助(相当于是快速入门的示例)
- ArcObjects reference:主要包括AO中的命名空间下的一些类和接口(相当于是API)
帮助如何使用
本地帮助安装
正常情况: 一般先安装VS软件
,然后再安装ArcObjects
,就可以在开始菜单里找到本地帮助了。
其它情况:如果你的开始里没有帮助文档,或者你的VS帮助里找不到AO的相关帮助,可以参考这篇博文(传送门)进行配置。
使用帮助
可以利用帮助查询接口、类,从查询的结果中可以获取相关的信息(如适用于哪个产品,有哪些方法,这个接口或类是干嘛的,继承自哪个类、相关的备注信息以及示例代码等信息)
个人建议
- 分享一下我个人的习惯:
- 百度/谷歌相关关键字,查询代码片段。
- 利用帮助查询相关接口或类。
- 看支持哪些产品许可,是否能实现你要的功能,能实现到什么程度。
- 查询接口的时候,可以看一下哪些类实现了这个接口,顺便顺藤摸瓜,看看这个类还实现了哪些接口,是否可以利用QI来实现我们的功能。
- 移植代码,解决遇到中的问题。
- 建议认真阅读此部分内容(阅读需要有一定的英文功底,像小编这种实力不行的可以借助翻译工具)
- 学习ArcEngine的过程就是不断熟悉SDK中接口和类的过程,所以不要着急,随着时间的推移,多实践,你也会应用的很熟练。
总结:
Just do it!
Don't Worry,Be Happy!
应用实操
示例:
A:我想添加一个图层到地图中怎么添加啊?
B.Easy,请听贫道如实道来......
分析这个问题,步骤大概如下:
# `获取容器对象(Map or Scene)
# 创建/获取图层(Layer)
# 添加图层
步骤细分:
- 添加图层要知道往哪儿添加,是往二维地图还是三维地图中添加。
- 如果是Map,这块它的来源是MapControl控件(相关的接口是IMapcontrol2),若果是Scene,它的来源是Scene(相关的接口是ISceneControl),可以通过接口的属性获取到IMap或IScene对象。
- 如果是二维地图,地图对于的英文单词是Map,那么就在帮助中搜索IMap接口或Map类(建议先搜索接口);如果是三维地球,那么对应的就是Scene,搜索IScene接口即可。
- 搜索完毕我们可以得知一下信息
- 我们需要
添加引用ESRI.ArcGIS.Carto.dll
,并使用using应用该命名空间; - 我们还知道我们
需要有ArcGIS Desktop或ArcEngine的许可
; - 我们发现里面有个
AddLayer
的方法; - 点击AddLayer方法,
告诉我们我们参数信息
,需要ILayer接口的对象(需要我们New一个ILayer接口的对象) - 紧接着我们需要用同样的方法查询ILayer接口
- 除此之外,我们可以在帮助的最下面看到
.NET Snippets
或.NET Related Topics
,这里面会给我们提供相应的代码片段。
- 我们需要
- 按照逻辑编写代码。
练习
- 查看IFeatureWorkspace在哪个命名空间下,使用该接口需要using哪个命名空间,需要什么级别的许可,有哪些类实现了该接口
- 查看IFeatureWorkspace的OpenFeatureClass方法,了解需要什么参数,返回什么类型,顺便查看IFeatureClass类有哪些属性和方法
- 查看哪些类实现了ITool接口
- 查看IMap、IWorkspace、IFeatureLayer、IFeatureClass、ITable、IField接口,可以结合OMD理解他们之间的关系
- 尝试阅读帮助Developing with ArcGIS章节