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.[阿里云 ...
随机推荐
- DNS委派不生效
DNS委派不生效 近日,在公司内部的Windows DNS服务器上建立了一个新的区域,其中有两个子区域委派到其它的DNS服务器上.其中一个被委派的区域地址是公网. 建立了委派区域后客户端无法解析 ...
- Java SE 多态
1.多态 方法的多态 //方法重载体现多态 A a = new A(); //这里我们传入不同的参数,就会调用不同sum方法 System.out.println(a.sum(10,20)); Sys ...
- Elasticsearch:使用 IP 过滤器限制连接
文章转载自:https://elasticstack.blog.csdn.net/article/details/107154165
- Nginx反代服务器进阶学习最佳配置实践指南
转载自:https://www.bilibili.com/read/cv16150010?spm_id_from=333.999.0.0 0x00 编译实践 描述:在企业线上生产环境中推荐进行Ngin ...
- 路径参数和数值校验: Path_Parameters_and_Numeric_Validations
官方文档地址: https://fastapi.tiangolo.com/zh/tutorial/path-params-numeric-validations/ # -*- coding: UTF- ...
- CentOS7添加永久路由
CentOS7永久静态路由需要写到 /etc/sysconfig/network-scripts/route-****** 文件中,故在/etc/sysconfig/network-scripts/下 ...
- SecureCRT使用之自动记录日志功能
自动记录日志功能: 选择"选项"--"全局选项",打开全局选项,在常规设置中找到"默认会话"设置项,点击右侧的"编辑默认设置&qu ...
- 【前端必会】使用indexedDB,降低环境搭建成本
背景 学习前端新框架.新技术.如果需要做一些数据库的操作来增加demo的体验(CURD流程可以让演示的体验根据丝滑) 最开始的时候一个演示程序我们会调用后台,这样其实有一点弊端,就是增加了开发和维护成 ...
- 使用 HammerDB 对 Citus 和 Postgres 进行 Benchmark,每分钟200万新订单处理测试(官方博客)
在为 Postgres 运行性能基准测试时,主要建议是:"自动化!" 如果您正在测量数据库性能,您可能不得不一遍又一遍地运行相同的基准测试. 要么是因为你想要一个稍微不同的配置,要 ...
- [leetcode]95.不同的二叉搜索树
Posted by 微博@Yangsc_o 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 95. 不同的二叉搜索树 II 给你 ...