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. 入门Python,看完这篇就行了!

    转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/3bbc3146.html 你好,我是测试蔡坨坨. 众所周知,Python语法简洁.功能强大,通过简单的代码就能实现很多实用. ...

  2. filebeat读取超链接日志 symlinks

    filebeat读取超链接日志文件,还需要增加配置上额外的参数:symlinks: true 符号链接选项允许Filebeat除常规文件外,可以收集符号链接.收集符号链接时,即使报告了符号链接的路径, ...

  3. MySQL5.6 & 5.7 配置 SSL

    mysql5.7上开启并配置ssl [root@mysqlmaster01 bin]# ./mysql_ssl_rsa_setup --datadir=/data/mysql_data1/ --use ...

  4. 通过 Docker 部署 Mysql 8.0 主从模式

    文章转载自:http://www.mydlq.club/article/106/ 系统环境: Mysql 版本:8.0.23 Docker 版本:19.03.13 一.为什么需要 Mysql 主从复制 ...

  5. KVM 下如何关闭 virbr0

    安装KVM 后都会发现网络接口里多了一个叫做 virbr0 的虚拟网络接口: 这是由于安装和启用了 libvirt 服务后生成的,libvirt 在服务器(host)上生成一个 virtual net ...

  6. prometheus和granfana企业级监控实战v5

    文件地址:https://files.cnblogs.com/files/sanduzxcvbnm/prometheus和granfana企业级监控实战v5.pdf

  7. linux开机自启服务

    前言:最近,有一个项目需要用到开机自动启动机房,所以就研究了一下 1.把node的快捷方式放在放在/usr/bin/(环境变量)下面,所有的命令默认是从这里面进行调用的 ln -s /home/too ...

  8. 实验02_Proteus仿真数码管显示代码

    一.原理总结 利用两个寄存器R4和R5来存储两个数码管的显示效果,R4是前一个数码管显示所需,而R5是后一个数码管显示所需,利用左移操作RLC来使之每一位被依次输入到C中,然后将C输入到LED中(当L ...

  9. Linux-->磁盘分区,挂载

    Linux分区 原理介绍 Linux无论有几个分区,分给哪一个目录使用,他归根结底都只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分. Linux采用了一 ...

  10. misc办公室爱情

    ​ 隐藏文字password2 ​编辑 word改后缀zip解开后document.xml找到password1 ​编辑 True_lOve_i2_supReMe 用wbs43open+密码解密pdf ...