ArcObjects是ESRI公司ArcGIS系列产品的开发平台,它是基于Microsoft COM技术(基于微软COM技术,所以只能在这个环境中运行)构建的GIS组件产品,是一套可重用的通用的二次开发组件产品,它可以用于大量开发框架中,包括流行的像.NET、Visual、C++、Java等开发环境。
ArcObjects不是为最终用户而是专门为开发人员提供的二次开发组件。
ArcObjects是ArcGIS系列产品的基础,大部分ArcGIS产品都是由ArcObjects构建的。
ArcGIS Engine是一组完备的并且打包的嵌入式GIS组件库和工具库,开发人员可用来创建新的或扩展已有的桌面应用程序。使用ArcGIS Engine,开发人员可以将GIS功能嵌入到已有的应用软件中,如自定义行业专用产品;或嵌入到商业生产应用软件中,如Microsoft Word和Excel;还可以创建集中式自定义应用软件,并将其发送给机构内的多个用户。
-ArcGIS Engine本质就是在ArcObjects的基础上封装的 一组高级接口,其核心构建在ArcObjects之上,完全可扩展,也属于ArcGIS Engine的产品。
开发者在桌面端或移动端应用程序中可以通过.COM的API、.NET、Java和C++调用ArcGIS Engine的GIS data,maps和geoprocessing 脚本。
-核心功能,几何图形的操作、图形编辑
-访问矢量和栅格数据
-高级的空间和SQL查询、空间分析
-标注、符号化、专题图渲染、动态地图
-开发包、地图控件、制图控件和3D控件、工具条、TOC
(1)可视化独立应用程序
(2)非可视化独立应用程序
(3)嵌入式应用程序
(1)准备数据
(2)确定应用程序的类型
(3)实现软件功能的开发实现
(4)应用程序功能的开发实现
(5)配置和发布
市面上AE教程大致到ArcGIS10.2,ESRI宣布从ArcGIS10.5开始便停止AE的更新,使用AO做开发,初学者可以在学习C#语言后,从AE入门,逐渐过度到AO。
不同版本下AE数据类型数量
Enums:枚举类型,用于实现一些定义的内容
Structs:结构体
Interfaces:接口
Classes:类
AE开发中,为了更好地管理COM对象,ESRI将这些COM对象放到不同的组件库中。
在.NET环境中,一个组件库对应一个assembly(程序集),assembly可以有多个不同的命名空间(类似于Python中的第三方库)。如:
ESRI.ArcGIS.ADF Assembly 的Namespaces:
ESRI.ArcGIS.ADF
ESRI.ArcGIS.ADF.BaseClasses
ESRI.ArcGIS.ADF.CATIDs
ESRI.ArcGIS.ADF.COMSupport
ESRI.ArcGIS.ADF.Resources
AO是COM的组件库,再把AO组件库根据类别封装为不同的程序集,不同的程序集共享一个DLL文件,而一个程序集中,命名空间可以有多个;可以这么说,一个程序集就是一个新的组件库.
在AO10.2中组件库共有75个(75 assemblies)
在AE10.2中组件库共有35个
只能在ArcGIS Desktop下使用的有40个组件库
System:System程序集是ArcGIS框架中最底层的一个程序集,它包含了一些被其他程序集使用的一些基础组件。
SystemUI:SystemUI程序集定义了一些在ArcGIS中被用户界面组件使用的类型,像IConmmand和ITool这样的接口就在这里定义。
ADF:(Application Developer Framework)应用程序开发框架。包括ADF ADF Local ADF.Core ADF.Connection ADF.Connection.Local和ADF.Connection.Core.提供了.Net环境下基础类,组件服务,组件ID以及一些实用的类,如Convertor、ComReleaser等。
Controls:控件程序集包含了应用程序开发中用到的控件,包括在控件中使用的命令和工具。
Carto:包含了为数据显示服务的对象,PageLayout和Map对象在这个程序集中,以及支持各种数据类型的图层,渲染。这个程序集中也包含了MxdServer和MapServer对象,它们通常被Server用来显示地图数据。
Geometry:几何程序集包含了核心的几何对象,比如点、线、面等。在几何程序集中还定义和实现了空间参考的对象,包括投影坐标系和几何坐标系
Display:显示程序集包含了支持在输出设备上显示图形的组件,屏幕显示,符号,颜色、显示交互(Feedback)等都在这个程序集中定义。
Output:提供了将MapControl和PagelayoutControl中的地图输出到打印机以及其他设备文件中。
DataInterop:数据互操作模块,提供了在Engine中直接访问70多种数据的接口。
Geodatabase:包含了所有相关数据组织的定义类型、要素、表、网格、TIN、栅格数据集、栅格目录、要素、子类、拓扑模型都在这个程序集中定义。其他一些类型的实现在各自的数据来源中的程序集。
DataSourcesFile:此程序集包含了为支持的矢量数据格式提供的工作空间工厂和工作空间。
DataSourceGDB: 此程序集包含了为存储在RDBMS中的矢量和栅格数据提供的工作空间工厂和工作空间。
DataSourcesOleDB:此程序集为通过OleDB(对象链接与嵌入)方式提供的数据提供空组数据。
DefenseSolutions:此程序集包含为制作军事防御应用,有军事符号、坐标转换、制作军用地理几何对象和其他国防工具。
NetworkAnalysis:此程序集用于网络分析。
NetworkAnalyst:此程序集提供网络分析的数据集对象,以支持网络分析。
Location:此程序集包含位置相关的数据对象,可以是路径时间或者地理编码。
GeoAnalyst:此数据集包含了核心的空间分析功能,这些功能是在spatialAnalyst和3DAnalyst扩展都会用到的功能。
3DAnalyst:此程序集包含了数据的3d分析对象,也包括显示3d数据,在这个程序集中有一个控件SceneControl可用。
GlobeCore:此程序集包括了globe数据分析的对象,也包括了显示globe数据,在这个程序集中有一个控件GlobeControl可用。
SpatialAnalyst:此程序集包含了在栅格和矢量数据上执行空间分析的对象。
Schematic:提供了在Engine中访问ArcGIS Schematic扩展的核心类,构建逻辑拓扑图。
ArcGIS Engine包括ArcObjects的核心功能,是对ArcObjects 中大部分接口、类库进行封装所构成的。ArcGIS Engine中组件的接口、方法、属性与ArcObjects是相同的。
在ArcGISEngine产品未出现时,要基于ArcObjects进行开发,必须安装ArcGISDesktop,而ArcGIS Engine是独立的COM组件,在应用其进行开发时,不需要安装ArcGIS Desktop,只需安装ArcGIS Engine开发工具包即可。
ArcObjects包含了很多ArcGIS Desktop中的UI功能,而部分UI功能在ArcGIS Engine中是没有的。如在ArcCatalog 中向地图文档中添加数据所用到的IGxDialog接口,用于打印设置的IPrintDialog 接口等。