ArcObjects SDK开发 003 宏观角度看ArcObjects SDK
1、为什么要宏观上看ArcObjects SDK
当然我们常用的只是其中的一小部分,即使是一小部分,那也是一个错综复杂的关系网。我们需要把这个关系网理清楚。
如果在网上搜索ArcObjects SDK的结构,大概率会搜到类似下面的图。

甚至还有下面的图。

如果你对ArcObjects SDK中的内容比较熟悉的话,这些图基本上一看就能明白表达的什么意思。但一般情况下,我们开发的时候是不怎么看这种图的,主要还是直接看ArcObject SDK的帮助文档中的接口帮助页面以及参考AcrMap是怎么操作实现的。
但对于初学者,最好还是从实际应用着手,逐渐深入的去了解。如果直接看这样的图的话,是很难看明白的。所以我们从应用的角度重新从宏观角度看下Arcobjects SDK的结构。
2、Arcobjects SDK五大部分
在这些繁杂的API中,我总结出了五大部分。五大部分的关系图如下。

AxControl-Tool部分比较独立,主要是控制几个AxControl和ITool、ICommand接口之间的交互。我们理解SDK这部分的设计后,会对我们的系统架构设计能力有很大的提高。AcrObjects SDK定义的工具交互这块解耦做的非常好,各工具之间相互独立,耦合性很低,是我们学习借鉴的非常好的例子。只要能把AxControl和ITool、ICommand接口之间的交互关系搞清楚,这部分就算掌握了。
Map-Layers部分是系统核心的部分,基本上我们开发写的代码,都是围绕这部分来展开的,涉及到重要概念包括地图、工作空间、图层、矢量数据集、字段、要素、栅格数据、查询、标注、渲染等。
PageLayout-Elment部分是相对独立的模块,一般我们在出图的时候会使用到该部分。Map和PageLayout均实现了IActiveView,都可以添加Elment。但就重要性而言,Elment对于PageLayout要重要的多。PageLayout上基本上所有添加的内容都是实现了IElement接口的。例如Layout上面添加的MapFrame、指北针、比例尺、图例、文本、图片、图框等都是以Element的方式添加到PageLayout上。
GeoProcess-ArcToolbox是一个相对独立但又非常重要的模块。例如我们在做矢量数据裁剪、空间连接、生成水系流域、坡度分析、栅格运算等,都是调用的ArcToolbox里面的工具。这个主要是做数据处理的时候使用。其实我们做AO开发,很多数据处理等都是调用的ArcToolbox里面的工具。能使用好这些工具,开发系统将事半功倍。
Geometry-SpatialReference部分是比较基础重要的部分,AcrObjects SDK的各个部分都会用到这些内容,比较重要的概念包括几何体、空间参考、投影转换、样式库等。对于非GIS专业从事GIS开发的人员,空间参考以及空间参考之间的转换是一个非常难以理解的概念,我们可以通过ArcMap操作以及API的接口,把这块了解的更清楚一些。
ArcObjects SDK开发 003 宏观角度看ArcObjects SDK的更多相关文章
- 仅以一个前端开发人员的角度看微信小程序
看了几天的小程序(当然也包括了上手书写),才有了这篇博文,非技术贴,只是发表下个人观点,仅以个人技术能力来看小程序. 首先说下优点: 调试工具:官方的工具还是做了很多工作,包括监听文件变动自动刷新,编 ...
- 基于C#的钉钉SDK开发(1)--对官方SDK的重构优化
在前段时间,接触一个很喜欢钉钉并且已在内部场景广泛使用钉钉进行工厂内部管理的客户,如钉钉考勤.日常审批.钉钉投影.钉钉门禁等等方面,才体会到原来钉钉已经已经在企业上可以用的很广泛的,因此回过头来学习研 ...
- 关于安卓sdk开发环境的的更新-Android SDK下载和更新失败
由于特别原因,我们更新安卓sdk时不会成功.解决办法: 修改C:\Windows\System32\drivers\etc\hosts文件.添加一行:74.125.237.1 dl-ssl ...
- 【转】微信公众账号 Senparc.Weixin.MP SDK 开发教程 索引
微信公众账号 Senparc.Weixin.MP SDK 开发教程 索引 Senparc.Weixin.MP SDK从一开始就坚持开源的状态,这个过程中得到了许多朋友的认可和支持. 目前SDK已经达到 ...
- 微信公众账号 Senparc.Weixin.MP SDK 开发教程
http://www.cnblogs.com/szw/archive/2013/05/14/weixin-course-index.html 微信公众账号 Senparc.Weixin.MP SDK ...
- 制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)
实现的功能: l APP控制月球灯 l 本地月球灯控制 l APP控制"大白"颜色,实现各种颜色变身 l 门状态传感器状态APP显示 l 网络状态指示灯,连接服务器长亮, ...
- ESP8266 RTOS SDK开发
ESP8266 RTOS SDK开发 目录 ESP8266 RTOS SDK开发 一.源码RTOS SDK包的下载和编译 二.固件烧录 1.管脚定义 三.程序例程 ## 1.PWM设置 连接MQTT ...
- 从一个开发的角度看负载均衡和LVS--FullNat
从一个开发的角度看负载均衡和LVS 在大规模互联网应用中,负载均衡设备是必不可少的一个节点,源于互联网应用的高并发和大流量的冲击压力,我们通常会在服务端部署多个无状态的应用服务器和若干有状态的存储服务 ...
- Android IOS WebRTC 音视频开发总结(四八)-- 从商业和技术的角度看视频行业的机会
本文主要从不同角度介绍视频行业的机会,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,欢迎关注个人微信公众号blacker ----------------------------- ...
- 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』
作者:阿里云用户mr_wid ,z)NKt# @I6A9do 如果感觉该评测对您有所帮助, 欢迎投票给本文: UO<claV RsfTUb)< 投票标题: 28.[阿里云 ...
随机推荐
- 前端必读:如何在 JavaScript 中使用SpreadJS导入和导出 Excel 文件
JavaScript在前端领域占据着绝对的统治地位,目前更是从浏览器到服务端,移动端,嵌入式,几乎所有的所有的应用领域都可以使用它.技术圈有一句很经典的话"凡是能用JavaScript实现的 ...
- ProxySQL Cluster 高可用集群 + MySQL MGR环境部署 (多写模式) 部署记录
文章转载自:https://blog.51cto.com/u_6215974/4937192 ProxySQL 在早期版本若需要做高可用,需要搭建两个实例,进行冗余.但两个ProxySQL实例之间的数 ...
- 天翼云上新增IP备案具体操作步骤
0.点击右上角的备案,进入到备案中心 1.已备案信息管理 点击左侧的已备案信息管理,右侧出现的页面中找到已备案网站信息,网站负责人后面的操作里有5个图标,点击第三个(变更接入),提交订单,进入到下一步 ...
- 获取 Docker 容器的 PID 号
# 获取容器的 CONTAINER ID docker ps -q 5354ce7e85e1 # 通过 docker top 获取 PID docker top 5354ce7e85e1 UID PI ...
- 1. Fluentd安装方法
Fluentd是一个跨平台的开源系统,支持在Linux(Redhat.Ubuntu.Debian).Windows平台上运行.MacOS呢?官方并没有明显指出,但是在安装说明中列出了通过Ruby Ge ...
- C语言下for循环的一点技巧总结
for循环是普遍应用与各种计算机语言的一种循环方式. 一般情况下, for循环规则:for(条件一:条件二:条件三) 条件一为满足条件,也就是条件一为1时,进入这个for循环.条件二为循环条件,也就是 ...
- IPv4 与 IPv6的区别
在介绍 IPv4 到 IPv6 区别之前,我们先来简单了解一下 IPv4 和 IPv6. IPv4 网际协议版本4(英语:Internet Protocol version 4,IPv4),又称互联网 ...
- ASP.NET Core 中的模型绑定
微软官方文档:ASP.NET Core 中的模型绑定 Route 是通过MVC Route URL取值. 如:http://localhost:5000/Home/Index/2,id取出的值就会是2 ...
- 【Java8新特性】- Optional应用
Java8新特性 - Optional应用 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! ...
- input框限制只能输入数字的两种方法
方法一: <input type="text" oninput="value=value.replace(/[^\d.%]/g,'')"> 方法 ...