ArcObjects SDK开发 001 ArcObjects SDK 简介
1、什么是ArcObjects SDK
在网上搜索什么是ArcObjects,会搜到如下的定义。
这个定义比较准确,也比较容易理解。
2、什么是ArcEngine
在网上搜索ArcEngine,一般会搜到以下定义。
这段话讲的非常清楚明白,ArcGIS Desktop、ArcGIS Engine和ArcGIS Server都是基于核心组件库ArcObjects搭建。也就是说ArcGIS Desktop和ArcGIS Engine是同一个级别的产品。
但第四段说ArcGISEngine的出现对于需要使用ArcObjects的开发人员来说是个福音,因为ArcGISEngine发布之前,基于ArcObjects的开发只能在庞大的ArcGIS Desktop框架下进行。这个我非常不认同,无论是ArcEngine还是Desktop,都是使用同一个ArcObject SDK开发包进行开发,不存在所谓的简化开发。感觉更主要的还是商业原因。
联系这块说ArcEngine包括核心ArcObjects的功能,是对AO中的大部分接口、类等进行封装所构成的嵌入式组件。这个说法有可能是对的,但确实难以让人理解,并且容易和开发包混淆。我认为ArcEngine环境下,只支持 ArcObjects的部分功能,而不是对其的再次封装。
3、ArcObjects和ArcEngine开发的区别
我们经常听说AO开发和AE开发,两者到底有什么区别呢?我觉得两者基本上没什么区别,用的都是Arcobjects SDK一套开发包,只是运行环境不同。我们说的AO开发可以用开发包中所有的模块、类和接口,但必须在Desktop的环境下运行。而AE开发只能使用开发包中ArcEngine Runtime支持的部分类和接口。
也就是说,同一个开发包,想使用里面的全部功能,就需要购买Desktop,开发的应用在此环境下运行,这就是AO开发,Desktop价格会贵些。如果想便宜些,那就可以购买ArcEngine Runtime,使用开发包里面ArcEngine Runtime支持的类和接口开发应用,这就是AE开发,但功能没有那么全,很多功能,特别是Toolbox里面的工具以及一些UI都需要自己开发。
如果使用了ArcEngine Runtime不支持的接口,在ArcEngine Runtime的环境下运行,系统会报错。
我们从安装包也可以看出两者的区别。
这个安装界面上包括ArcGIS Desktop安装以及for .Net和Java的安装包,这样就可以进行AO开发了。
ArcEngine开发的安装包如下图所示。
可以看出,该安装包包含了ArcEngine Runtime的安装包以及for .Net、Java和C++的开发包,如果基于这个开发,并且只使用ArcEngine Runtime支持的接口,并最终在ArcEngine Runtime环境下运行,我们就可以称为AE开发。
AE开发起始比AO开发弱很多,至少大部分Toolbox里面的工具都是不能直接用的。这和开发包没关系,和运行环境有关系,开发包中,这些接口都是有的。如何判断一个接口或类AE是否支持,我们可以在帮助中查看。
例如IFeatureLayer接口,帮助如下图所示。
在支持的环境中有ArcGIS Engine这项,那么就可以在ArcEngine Runtime的环境下运行。
颜色选择器接口,帮助如下图所示。
在支持的环境中只有ArcGIS Desktop这项,所以该接口只能在ArcGIS Desktop环境下正常被调用。
网上很多人都说ArcEngine的出现是为了降低开发难度,但我觉得是为了降低开发成本。即用户可以花比较少的钱,基于SDK中的部分常用接口开发一些应用,此时就可以购买便宜的ArcEngine Runtime,而不必购买昂贵的ArcGIS Desktop。只是现在Desktop绿色版较容易获取,大家开发的时候,都不是那么在意,开发的软件基本上都是直接在Desktop的环境下运行,反而ArcEngine Runtime的安装包在网上不易找到。
我们一直都在说我们在做AE开发,其实很多时候我们做的就是AO开发,但我们还是习惯称为基于ArcEngine的开发。所以以后我们不需要过多纠结到底是AE还是AO。
总结一下,我们使用ArcObejcts SDK开发了一个应用程序,验证许可的时候验证的是桌面许可,并在桌面环境下部署运行,我们称为AO开发。如果验证许可的时候验证的是Engine许可,并在安装ArcEngine环境下部署运行,我们称为AE开发。ArcObejcts SDK中的很多API,ArcEngine是不支持的。
4、ArcObjects SDK在ArcGIS各类API中的位置
WebAPIs主要指的是ArcGISAPIfor js。
Mobile APIs是做移动端开发的API。
Native/Desktop APIs,翻译出来是本地/桌面APIs,里面具体API名称为ArcGIS Runtime API for,这个和我们上面说的ArcEngine Runtime没什么关系,和我们使用的ArcMap桌面软件以及Arcobjects SDK也没什么关系。这是一套轻量级的GIS桌面软件开发包,和WebAPIs以及Mobile APIs是一个体系的。API提供了地图数据展示、绘制以及简单的分析等功能,但如果实现复杂的业务,就需要GIS Server的配合。如果我们要做一些行业软件,只是在底图的基础上展示一些简单矢量数据,并进行查询等,就可以使用这套API。
ArcGIS Pro SDK目前只能在ArcGISPro上进行扩展功能,还不能实现类似于Arcobjects SDK单独的应用程序开发。如果后面出现能够开发独立应用程序的ArcGIS Pro SDK,我感觉Arcobjects SDK会慢慢退出历史舞台。
最后就是Arcobject SDK,也就是功能最全的一套SDK,我们平常说的基于AO或者AE的开发就是指基于这套SDK上进行的开发。使用Arcobject SDK,可以充分调用ArcGIS提供的各种数据加载、分析和处理等功能。
Native/Desktop APIs和ArcobjectSDK都是用来做桌面软件的。我觉得Native/Desktop APIs的推出是因为Arcobject SDK太重了,例如我们要实现一个加载底图,并在上面显示一些点和路线,点击点,可以弹出信息框,这样一个轻GIS桌面软件。在没有Native/Desktop APIs之前,如果基于ArcGIS技术体系做的话,就只能使用Arcobject SDK开发,其部署的时候还需要依赖ArcGIS Desktop或者ArcEngine Runtime,部署困难,成本也很高。
推出Native/Desktop APIs后,底图可以加载瓦片。点和线数据可以存储到数据库、文本文件或者转换成Geojosn,系统启动的时候,直接绘制上去即可。这样做出的软件,可以单独打包部署,比ArcobjectSDK要轻很多。
ArcObjects SDK开发 001 ArcObjects SDK 简介的更多相关文章
- ESP8266开发综合篇(SDK开发-视频教程总揽)
为了解决基础教程简单入门但不实用,项目方案非常实用但比较难的问题,开始推出8266开发综合篇 综合篇涉及到AT,LUA,SDK,LUA(sdk)开发,LUA和SDK开发会同步进行,后期再整理AT指令的 ...
- [Android Pro] 开发一流Android SDK
cp from : https://blog.csdn.net/dd864140130/article/details/53558011 本篇文章已授权微信公众号 guolin_blog (郭霖)独家 ...
- ios开发--高德地图SDK使用简介
高德LBS开放平台将高德最专业的定位.地图.搜索.导航等能力,以API.SDK等形式向广大开发者免费开放.本章节我们来简单学习一下如何使用它的定位及地图SDK. 一.相关框架及环境配置 地图SDK 对 ...
- 使用百度云 BOS 和 C# SDK 开发数据存储
Ø 简介 本文主要介绍如何使用百度云的 C# SDK 操作 BOS(Baidu Object Storage/百度对象存储),以及常见问题和解决办法.本文将以以下几点展开学习: 1. 基本介绍 ...
- FFMPEG SDK 开发介绍(原创)
来源:http://blog.sina.com.cn/s/blog_62a8419a01016exv.html 本文是作者在使用ffmpeg sdk开发过程中的实际经验,现在与大家分享,欢迎学习交流. ...
- Sentry 开发者贡献指南 - SDK 开发(事件负载)
内容整理自官方开发文档 系列 Docker Compose 部署与故障排除详解 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentr ...
- 基于Unity3D 的Vuforia SDK开发基础教程
最新博客地址已转到: http://blog.csdn.net/zzlyw?viewmode=contents ------------------------------------------ ...
- Kinect for Windows SDK开发学习相关资源
Kinect for Windows SDK(K4W)将Kinect的体感操作带到了平常的应用学习中,提供了一种不同于传统的鼠标,键盘及触摸的无接触的交互方式,在某种程度上实现了自然交互界面的理想,即 ...
- 微信公众账号 Senparc.Weixin.MP SDK 开发教程 索引
Senparc.Weixin.MP SDK从一开始就坚持开源的状态,这个过程中得到了许多朋友的认可和支持. 目前SDK已经达到比较稳定的版本,这个过程中我觉得有必要整理一些思路和经验,和大家一起分享. ...
- 高拍仪拍照SDK开发(良田影像S300L|S500L)
高拍仪拍照SDK开发下载地址:点击下载 本SDK适用于:良田影像S300L|S500L 高拍仪如图: SDN开发包安装之后找到安装目录,如图: 大家找到各自需要的版本即可,需要注意的是如果需要上传图片 ...
随机推荐
- .Net7 内容汇总(1)
.Net7 RC1发布 在9月14号,.Net7 RC1正式发布了. 按照微软的说法 This is the first of two release candidates (RC) for .NET ...
- 前端实现docx、pdf格式文件在线预览
theme: vuepress highlight: atelier-heath-light 介绍 在业务中,如果遇到文档管理类的功能,会出现需要在线预览的业务需求,本文主要是通过第三方库来实现文档预 ...
- .NET Core Web APi类库如何内嵌运行?
话题 我们知道在.NET Framework中可以嵌入运行Web APi,那么在.NET Core(.NET 6+称之为.NET)中如何内嵌运行Web Api呢,在实际项目中这种场景非常常见,那么我们 ...
- 查找Linux下的大目录或文件
目录 du -h --max-depth=1 du -h --max-depth=2 | sort -n du -hm --max-depth=2 | sort -n du -hm --max-dep ...
- 通过nginx转发rabbitmq访问手动添加队列的时候报错:Management API returned status code 405
原因: 正常访问该地址:https://xxx.xxx.com/rabbitmq/ 时能正常跳转,但是 rabbitmq management 的 API url 出现了 %2f 字符,这些字符会在经 ...
- 类和实例,super()函数
class Foo: def __init__(self, name): self.name = name def ord_func(self): """定义实例方法,至 ...
- [题解] BZOJ 3456 洛谷 P4841 [集训队作业2013]城市规划 多项式,分治FFT
题目 令\(f_i\)表示n个点的答案.考虑容斥,用所有连边方案减去有多个连通块的方案.枚举1号点所在的连通块大小: \(f_i=2^{i(i-1)/2}-\sum_{j>0}^{i-1}f_j ...
- java中的栈(利用数组实现栈)
java中的栈(利用数组实现栈) 常见的数据结构:https://blog.csdn.net/weixin_43304253/article/details/119764275 栈的介绍 1.栈的英文 ...
- win10+ubuntu双系统的坑
1.把U盘里\EFI\BOOT\grubx64.efi文件重命名为mmx64.efi,避免系统提示缺少文件而退出安装: 2.如果电脑显卡为N卡,则在install Ubuntu时,按e进入编辑,在qu ...
- Windows7下驱动开发与调试体系构建——2.R3与R0的通信示例
目录/参考资料:https://www.cnblogs.com/railgunRG/p/14412321.html 在阅读本节前,建议先阅读<Windows内核安全与驱动开发>第五章内容, ...