1、为什么要宏观上看ArcObjects SDK

ArcObjects SDK库是一个非常庞大复杂COM组件集合,ArcGIS10.0有1000多个枚举、90多个结构体、5000多个接口以及4000多个类,合计10000多。现在到10.8版本,是更多了。

当然我们常用的只是其中的一小部分,即使是一小部分,那也是一个错综复杂的关系网。我们需要把这个关系网理清楚。

如果在网上搜索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的更多相关文章

  1. 仅以一个前端开发人员的角度看微信小程序

    看了几天的小程序(当然也包括了上手书写),才有了这篇博文,非技术贴,只是发表下个人观点,仅以个人技术能力来看小程序. 首先说下优点: 调试工具:官方的工具还是做了很多工作,包括监听文件变动自动刷新,编 ...

  2. 基于C#的钉钉SDK开发(1)--对官方SDK的重构优化

    在前段时间,接触一个很喜欢钉钉并且已在内部场景广泛使用钉钉进行工厂内部管理的客户,如钉钉考勤.日常审批.钉钉投影.钉钉门禁等等方面,才体会到原来钉钉已经已经在企业上可以用的很广泛的,因此回过头来学习研 ...

  3. 关于安卓sdk开发环境的的更新-Android SDK下载和更新失败

    由于特别原因,我们更新安卓sdk时不会成功.解决办法: 修改C:\Windows\System32\drivers\etc\hosts文件.添加一行:74.125.237.1       dl-ssl ...

  4. 【转】微信公众账号 Senparc.Weixin.MP SDK 开发教程 索引

    微信公众账号 Senparc.Weixin.MP SDK 开发教程 索引 Senparc.Weixin.MP SDK从一开始就坚持开源的状态,这个过程中得到了许多朋友的认可和支持. 目前SDK已经达到 ...

  5. 微信公众账号 Senparc.Weixin.MP SDK 开发教程

    http://www.cnblogs.com/szw/archive/2013/05/14/weixin-course-index.html 微信公众账号 Senparc.Weixin.MP SDK ...

  6. 制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)

    实现的功能: l  APP控制月球灯 l  本地月球灯控制 l  APP控制"大白"颜色,实现各种颜色变身 l  门状态传感器状态APP显示 l  网络状态指示灯,连接服务器长亮, ...

  7. ESP8266 RTOS SDK开发

    ESP8266 RTOS SDK开发 目录 ESP8266 RTOS SDK开发 一.源码RTOS SDK包的下载和编译 二.固件烧录 1.管脚定义 三.程序例程 ## 1.PWM设置 连接MQTT ...

  8. 从一个开发的角度看负载均衡和LVS--FullNat

    从一个开发的角度看负载均衡和LVS 在大规模互联网应用中,负载均衡设备是必不可少的一个节点,源于互联网应用的高并发和大流量的冲击压力,我们通常会在服务端部署多个无状态的应用服务器和若干有状态的存储服务 ...

  9. Android IOS WebRTC 音视频开发总结(四八)-- 从商业和技术的角度看视频行业的机会

    本文主要从不同角度介绍视频行业的机会,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,欢迎关注个人微信公众号blacker ----------------------------- ...

  10. 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』

    作者:阿里云用户mr_wid ,z)NKt#   @I6A9do   如果感觉该评测对您有所帮助, 欢迎投票给本文: UO<claV   RsfTUb)<   投票标题:  28.[阿里云 ...

随机推荐

  1. 【Java面试】面试遇到宽泛的问题,这么回答就稳了,谈谈你对Redis的理解

    "谈谈你对Redis的理解"! 面试的时候遇到这类比较宽泛的问题,是不是很抓狂? 是不是不知道从何开始说起? 没关系,今天我用3分钟教你怎么回答. 大家好,我是Mic,一个工作了1 ...

  2. 图-kruskal算法,prim算法

    要求无向图 最小生成树: 连通性,累加和最小 并查集 结构 K算法 从最小的边开始,加上有没有形成环,没有就加,加上有环就不要 难点:如何判断加上一条边,有没有形成环. P算法 从点的角度开始

  3. 第六章:Django 综合篇 - 19:部署 Django

    补充说明:关于项目部署,历来是开发和运维人员的痛点.造成部署困难的主要原因之一是大家的Linux环境不同,这包括发行版.解释器.插件.运行库.配置.版本级别等等太多太多的细节.因此,一个成功的部署案例 ...

  4. URL Search查询

    #基本查询 GET /movies/_search?q=2012&df=title&sort=year:desc&from=0&size=10&timeout= ...

  5. 【面试题】Vue2动态添加路由 router.addRoute()

    Vue2动态添加路由 点击打开视频讲解更加详细 场景: 一般结合VueX和localstorage一起使用 router.addRoutes vue-router4后 已废弃:使用 router.ad ...

  6. Java导出带格式的Excel数据到Word表格

    前言 在Word中创建报告时,我们经常会遇到这样的情况:我们需要将数据从Excel中复制和粘贴到Word中,这样读者就可以直接在Word中浏览数据,而不用打开Excel文档.在本文中,您将学习如何使用 ...

  7. 「产品运营」研发效能之DevOps平台如何运营?

    有人常说「酒香不怕巷子深」.不是的,如果这个巷子是酒吧街,那最深的那家酒吧肯定是租金最便宜的.酒吧的地段好坏已经在租金价格上体现出来了.现在已经不是那个工具缺乏.有个工具就拍手称快.欣然去试用的时代了 ...

  8. Java之POI导出Excel(二):多个sheet

    相信在大部分的web项目中都会有导出导入Excel的需求,之前我也写过一篇导出单个sheet工作表的文章,没看过的小伙伴可以去看哈,链接也给大家放出来了:导出单个sheet 但是在我们日常的工作中,需 ...

  9. JSP实现登录功能(页面带样式)

    功能要求 1.完成两个页面 2.第一个登陆页面login. jsp 3.第二个用户管理页面useManage. jsp 4.有登录功能(能进行用户名密码的校验,用户名若为自己的学号密码为班级号,允许登 ...

  10. gitee仓库上传文件的步骤

    一:Git是什么? Git是一种代码托管技术.在开发中,Git是一种代码托管技术,很多代码托管平台也是基于Git来实现的.Git可以帮我们做到很多的 事情,比如代码的版本控制,分支管理等. 可以把Gi ...