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. Windows服务器无法配置IP

    前天在给一台服务器配置IP地址的时候发现一个奇怪的问题.IP地址配置之后不生效,还是使用的169.254这个微软保留自动分配地址.由于这个是一台虚拟机,尝试了删除添加网卡也没有用.配置IP不成功的时候 ...

  2. GitHub desktop常见问题及解决办法

    1.There are unresolved conflicts in the working directory. 问题出现:A台电脑push代码后,可能新建了分支,然后B电脑打开GitHub de ...

  3. 5.Ceph 基础篇 - 认证

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485272&idx=1&sn=4b27c357 ...

  4. k8s日志架构和基本日志

    如果一个容器崩溃了.一个Pod被驱逐了.或者一个节点停机了,您通常仍然需要访问您应用程序的日志.为此,您需要一个生命周期与节点.Pod.容器相对独立的存储空间来存储应用程序日志和系统日志. 此时,我们 ...

  5. 使用shell做http web接口,可以传递参数--废弃

    此文章废弃,参考另一篇 参考网址: https://me.jinchuang.org/archives/114.html https://www.cnblogs.com/jinchuang/p/142 ...

  6. 第三章:模版层 - 1:Django模板语言详解

    本节将介绍Django模版系统的语法.Django模版语言致力于在性能和简单性上取得平衡. 如果你有过其它编程背景,或者使用过一些在HTML中直接混入程序代码的语言,那么你需要记住,Django的模版 ...

  7. MongoDB分片集群-Sharded Cluster

    分片概念 分片(sharding)是一种跨多台机器分布数据的方法, MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作的部署. 换句话说:分片(sharding)是指将数据拆分,将其分散存在 ...

  8. Linux 宝塔部署 ASP.NET Core 应用

    第一步,发步应用 我这是一个API 应用和 MVC 应用 设置,服务器上要运行的端口 API 端口5000 MVC 端口5001 打包文件夹,发步 1.桌面新建俩个文件夹 2.右键项目发步,选中iis ...

  9. 实现fastdfs防盗链功能

    目录 1.背景 2.实现原理 2.1 开启防盗链 2.2 重启 nginx 2.3 Java代码生成token 1.token生成规则 2.java生成token 3.测试 3.1 带正确token访 ...

  10. 使用HTML表单收集数据

    1.什么是表单 在项目开发过程中,凡是需要用户填写的信息都需要用到表单. #2.form标签 在HTML中我们使用form标签来定义一个表单.而对于form标签来说有两个最重要的属性:action和m ...