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服务器上.其中一个被委派的区域地址是公网. 建立了委派区域后客户端无法解析 ...
- 【gRPC】C++异步服务端客户端API实例及代码解析
对于同步API而言,程序的吞吐量并不高.因为在每次发送一个gRPC请求时,会阻塞整个线程,必须等待服务端的ack回到客户端才能继续运行或者发送下一个请求,因此异步API是提升程序吞吐量的必要手段. g ...
- 使用Elasticsearch Operator快速部署Elasticsearch集群
转载自:https://www.qikqiak.com/post/elastic-cloud-on-k8s/ 随着 kubernetes 的快速发展,很多应用都在往 kubernetes 上面迁移,现 ...
- MySQL 中 datetime 和 timestamp 的区别与选择
MySQL 中常用的两种时间储存类型分别是datetime和 timestamp.如何在它们之间选择是建表时必要的考虑.下面就谈谈他们的区别和怎么选择. 1 区别 1.1 占用空间 类型 占据字节 表 ...
- Zookeeper QuickStart
环境版本 操作系统:CentOS release 6.6 (Final) java版本: jdk1.8 zookeeper版本: zookeeper-3.4.11 一. 安装jdk 此处省略 二. 安 ...
- ELK基于ElastAlert实现日志的微信报警 ---docker环境
参考网址:https://github.com/anjia0532/elastalert-docker 1.拉取镜像: docker pull anjia0532/elastalert-docker: ...
- 通用 HTTP 签名组件的另类实现
1.初衷 开发中经常需要做一些接口的签名生成和校验工作,最开始的时候都是每个接口去按照约定单独实现,久而久之就变的非常难维护,因此就琢磨怎么能够写了一个比较通用的签名生成工具. 2.思路 采用链式调用 ...
- 华为路由器NAT基本配置命令
NAT地址转换 静态 [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]nat static global 202.169.10.5 inside 172.16.1.1 ...
- Bootstrap‘s JavaScript requires jQuery
1.遇到的第一个问题:modal.js:6 Uncaught Error: Bootstrap's JavaScript requires jQuery at modal.js:6 2.遇到的第二个问 ...
- 2.httprunner-yaml用例结构
前言: httprunner3.x版本弱化了api层的概念 直接在testcase中写request请求 如果是单个请求,也可以直接写成一个testcase 每个testcase必须具有两个类属性:c ...