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 简介的更多相关文章

  1. ESP8266开发综合篇(SDK开发-视频教程总揽)

    为了解决基础教程简单入门但不实用,项目方案非常实用但比较难的问题,开始推出8266开发综合篇 综合篇涉及到AT,LUA,SDK,LUA(sdk)开发,LUA和SDK开发会同步进行,后期再整理AT指令的 ...

  2. [Android Pro] 开发一流Android SDK

    cp from : https://blog.csdn.net/dd864140130/article/details/53558011 本篇文章已授权微信公众号 guolin_blog (郭霖)独家 ...

  3. ios开发--高德地图SDK使用简介

    高德LBS开放平台将高德最专业的定位.地图.搜索.导航等能力,以API.SDK等形式向广大开发者免费开放.本章节我们来简单学习一下如何使用它的定位及地图SDK. 一.相关框架及环境配置 地图SDK 对 ...

  4. 使用百度云 BOS 和 C# SDK 开发数据存储

    Ø  简介 本文主要介绍如何使用百度云的 C# SDK 操作 BOS(Baidu Object Storage/百度对象存储),以及常见问题和解决办法.本文将以以下几点展开学习: 1.   基本介绍 ...

  5. FFMPEG SDK 开发介绍(原创)

    来源:http://blog.sina.com.cn/s/blog_62a8419a01016exv.html 本文是作者在使用ffmpeg sdk开发过程中的实际经验,现在与大家分享,欢迎学习交流. ...

  6. Sentry 开发者贡献指南 - SDK 开发(事件负载)

    内容整理自官方开发文档 系列 Docker Compose 部署与故障排除详解 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentr ...

  7. 基于Unity3D 的Vuforia SDK开发基础教程

    最新博客地址已转到: http://blog.csdn.net/zzlyw?viewmode=contents   ------------------------------------------ ...

  8. Kinect for Windows SDK开发学习相关资源

    Kinect for Windows SDK(K4W)将Kinect的体感操作带到了平常的应用学习中,提供了一种不同于传统的鼠标,键盘及触摸的无接触的交互方式,在某种程度上实现了自然交互界面的理想,即 ...

  9. 微信公众账号 Senparc.Weixin.MP SDK 开发教程 索引

    Senparc.Weixin.MP SDK从一开始就坚持开源的状态,这个过程中得到了许多朋友的认可和支持. 目前SDK已经达到比较稳定的版本,这个过程中我觉得有必要整理一些思路和经验,和大家一起分享. ...

  10. 高拍仪拍照SDK开发(良田影像S300L|S500L)

    高拍仪拍照SDK开发下载地址:点击下载 本SDK适用于:良田影像S300L|S500L 高拍仪如图: SDN开发包安装之后找到安装目录,如图: 大家找到各自需要的版本即可,需要注意的是如果需要上传图片 ...

随机推荐

  1. PLG SaaS 产品 Figma 商业模式拆解

    9 月 15 日,Figma 的 CEO Dylan Field 发布消息:今天,Figma 宣布接受 Adobe 的收购... Adobe 以约 200 亿美元收购 Figma,这也是 Adobe ...

  2. Redis 的大 Key 对持久化有什么影响?

    作者:小林coding 图解计算机基础(操作系统.计算机网络.计算机组成.数据库等)网站:https://xiaolincoding.com 大家好,我是小林. 上周有位读者字节一二面时,被问到:Re ...

  3. 全志H616基于官方外设开发-蜂鸣器

    #include <stdio.h> #include <wiringPi.h> #include <unistd.h> #define BEEP 0 //设置针脚 ...

  4. Markdowm基础语法的使用(typora)

    Mackdown学习 一级标题:一个#加空格 回车 二级标题:两个#加空格 回车 以此类推... 一级标题(Ctrl+1) 二级标题(Ctrl+2) 三级标题(Ctrl+3) 四级标题(Ctrl+4) ...

  5. 在Portainer上管理其他docker主机(这只是其中一种方式),另一种方式看这个文档:使用Portainer管理其他主机的docker应用有两种方式

    其他主机开启远程连接docker端口 需要设置一下2375端口的监听.通过修改docker配置文件方式进行监听. 修改配置文件修改监听端口 使用Centos7安装的docker,所以下面的配置是适用于 ...

  6. 20. 使用Fluentd发送告警邮件

    告警是预防系统故障的一个重要工具,目前已经有许多成熟的方案通过监控系统运行指标来进行阈值预警.今天简单了解一下如何使用Fluentd实现邮件告警功能. Fluentd的告警是基于日志分析实现的,通过监 ...

  7. PHP全栈开发(八):CSS Ⅴ 超链接 style

    CSS里面有专门针对超链接的选择器,也就是他们: a:link - 正常,未访问过的链接 a:visited - 用户已访问过的链接 a:hover - 当用户鼠标放在链接上时 a:active - ...

  8. PHP全栈开发(八):CSS Ⅲ background

    设置背景颜色: div { background-color:#b0c4de; } 不仅可以给body标签设置背景颜色,还能给p,div,h标签设置背景颜色 设置背景图片: body { backgr ...

  9. 代码块及final关键字的使用

    1.代码块的作用:用来初始化类.对象 2.代码块如果有修饰的话,只能使用static. 3.分类:静态代码块 vs 非静态代码块 4.静态代码块 内部可以有输出语句 随着类的加载而执行,而且只执行一次 ...

  10. Python学习笔记----操作字符串

    1.字符串相加.列表相加.列表和字符串不能混着使用 #序列相加 a="hello" b="python" c=a+b print("字符串相加的结果& ...