ArcGIS Engine中的重点类库介绍

简介:

转自 ArcGIS Engine中的重点类库介绍

System类库

System类库是ArcGIS体系结构中最底层的类库。System类库包含给构成ArcGIS的其他类库提供服务的组件。System类库中定义了大量开发者可以实现的接口。AoInitializer对象就是在System类库中定义的,所有的开发者必须使用这个对象来初始化ArcGISEngine和解除ArcGIS Engine的初始化。开发者不能扩展这个类库,但可以通过实现这个类库中包含的接口来扩展ArcGIS系统。

SystemUI类库

SystemUI类库包含用户界面组件接口定义,这些用户界面组件可以在ArcGISEngine中进行扩展。包含ICommandIToolIToolControl接口。开发者用这些接口来扩展UI组件,ArcGISEngine开发人员自己的组件将使用这些UI组件。这个类库中包含的对象是一些实用工具对象,开发人员可以通过使用这些对象简化用户界面的开发。开发者不能扩展这个类库,但可以通过实现这个类库中包含的接口来扩展ArcGIS系统。

Geometry类库

Geometry类库处理存储在要素类中的要素几何图形或形状或其他图形元素。大多数用户会遇到的基本几何图形对象为PointMultiPointPolylinePolygon。除了这些顶级实体外,就是作为多义线和多边形的组成部分的几何图形,是组成几何图形的子要素。它们是SegementPathRingPolylinePolygon由一系列相连接的、构成列Path的片段组成。一个片段由两个不同的点,即起始点和结束点,以及一个定义这两点之间弯曲度的元素类型组成。片段的类型有CircularArcLineElliptic ArcBezierCurve。所有几何图形对象都可以有与其顶点相关联的ZMIDs。所有的基本几何图形对象都支持诸如BufferClip等几何操作。几何子要素不可以由开发者扩展。

GIS中的实体指的是现实世界中的要素;现实世界中要素的位置由一个带有空间参考的几何图形来定义。空间参考对象,包括投影坐标和地理坐标系统,都包括在Geometry类库中。开发者可以通过添加新的空间参考和投影来扩展空间参考系统。

Display类库

Display类库包含用于显示GIS数据的对象。除了负责实际输出图像的主要显示对象外,这个类库还包含表示符号和颜色的对象,它们用来控制在显示上绘制时实体的属性。Display类库还包含在与显示交互时提供给用户可视化反馈的对象。开发者与Display最常用的交互方式就是类似于Map对象或PageLayout对象提供的视图。Display类库的所有部分都能进行扩展;通常扩展的对象包括符号、颜色和显示反馈。

Server类库

Server类库包含允许用户连接并操作ArcGIS Server的对象。开发人员用GISServer Connection对象来访问ArcGIS Server。通过GISServer Connection可以访问Server ObjectsMananger对象。用这个对象,开发人员可以操作Server Context对象,以处理运行于服务器上的ArcObjects。开发人员还可以用GISClient类库与ArcGIS Server进行交互。

Output类库

Output类库用于创建图形输出到诸如打印机和绘图仪等设备及诸如增强型元文件和栅格图像格式(JPGBMP等)等硬拷贝格式。开发人员用这个类库中的对象及ArcGIS系统的其他部分创建图形输出。通常是DisplayCarto类库中的对象。开发者可以为自定义设备和输出格式扩展Output类库。

GeoDatabase类库

Geodatabase类库为地理数据库提供了编程API。地理数据库是建立在标准工业关系型和对象关系数据库技术之上的地理数据仓库。Geodatabase类库中的对象为ArcGIS支持的所有数据源提供了一个统一编程模型。GeoDatabase类库定义了许多由ArcObjects架构中更高级的数据源提供者实现的接口。开发者可以扩展地理数据库,以支持特定类型的数据对象(要素、类等);此外,Geodatabase类库还有用PlugInDataSource对象添加的自定义矢量数据源。地理数据库支持的本地数据类型不能扩展。

GISClient类库

GISClient类库允许开发者使用Web服务;这些Web服务可以由ArcIMSArcGISServer提供。GISClient类库中包含用于连接GIS服务器以使用Web服务的对象。该类库支持ArcIMS的图像和要素服务。GISClient类库提供以无态方式直接或通过Web服务目录操作ArcGISServer对象的通用编程模型。在ArcGIS Server上运行的ArcObjects组件不能通过GISClient接口来访问。要直接获得访问在服务器上运行的ArcObjects,开发人员应使用Server类库中的功能。

DataSourcesFile类库

DataSourcesFile类库包含用于基于文件数据源的GeoDatabase API实现。这些基于文件的数据源包括shapefilecoverageTINCADSDCStreetMapVPF。开发者不能扩展DtaSourcesFile类库。

DataSourcesGDB类库

DataSourcesGDB类库包含用于数据库数据源的GeoDatabase API实现。这些数据源包括MicrosoftAccessArcSDE支持的关系型数据库管理系统—IBMDB2InformixMicrosoftSQL ServerOracle。开发者不能扩展DataSourcesGDB类库。

DataSourcesOleDB类库

DataSourcesOleDB类库包含用于MicrosoftOLEDB数据源的GeoDatabaseAPI实现。此类库只能用在Windows操作系统上。这些数据源包括支持数据提供者和文本文件工作空间的所有OLEDB。开发者不能扩展DataSourcesOleDB类库。

DataSourcesRaster类库

DataSourcesRaste类库包含用于栅格数据源的GeoDatabase API实现。这些数据源包括ArcSDE支持的关系型数据库管理系统—IBMDB2InformixMicrosoftSQL ServerOracle,以及其支持的RDO栅格文件格式。当需要支持新的栅格格式时,开发者不扩展这个类库,而是扩展RDO。开发者不能扩展DataSourcesRaster类库。

GeoDatabaseDistributed类库

GeoDatabaseDistributed类库通过提供地理数据库数据导入和导出工具,可以支持对企业级地理数据库的分布式访问。开发者不能扩展GeoDatabaseDistribute类库。

Carto类库

Carto类库支持地图的创建和显示;这些地图可以在一幅地图或由许多地图及其地图元素组成的页面中包含数据。PageLayout对象是驻留一幅或多幅地图及其底土元素的容器。地图元素包括指北针、图例、比例尺等。Map对象包括地图上所有图层都有的属性空间参考、地图比例尺等,以及操作地图图层的方法。可以将许多不同类型的图层加载到地图中。

不同的数据源通常有相应的图层负责数据在地图上的显示,矢量要素由FeatureLayer对象处理,栅格数据由RasterLayer对象处理,TIN数据由TinLayer对象处理,等等。必要的话,图层可以处理与之相关数据的所有绘图操作,但通常图层都是一个相关的Renderer对象。Renderer对象的属性控制着数据在地图中的显示方式。Renderers通常用Display类库中的符号来进行实际绘制,而Renderer只是将特定符号与待绘实体的属性相匹配。Map对象和PageLayout对象可以包含元素。元素用其几何图形定义其在地图或页面上的位置,用行为控制元素的显示。包括用于基本形状、文字标注和复杂标注等的元素。Carto类库还支持地图注释和动态标注。尽管开发者可以在其应用程序中直接使用MapPageLayout对象,但通常来说开发者更经常使用更高级的对象,如MapControlPageLayoutControlArcGIS应用程序。这些高级对象简化了一些任务,尽管它们也提供对更低级别的MapPageLayout对象的访问,允许开发者更好的控制对象。MapPagelayout对象并不是Carto类库中提供地图和页面绘制的仅有对象。MxdServerMapServer对象都支持地图和页面的绘制,但不是绘制到窗口中,而是直接绘制到文件中。开发者可以用MapDocument对象保存地图和地图文档(.mxd)中页面布局的状态,以便在ArcMapArcGIS控件中使用。Carto类库通常可以在许多方面进行扩展。自定义RendererLayer等都很普遍。自定义图层通常是向地图应用程序中加载自定义数据最简单的方法。

Location类库

Location类库包含支持地理编码和操作路径事件的对象。地理编码功能可以通过细粒度对象来完全控制访问,或通过GeocodeServer对象提供的简化API来访问。开发者可以创建自己的地理编码对象。线性参考功能提供对象用于向线性要素添加事件,用各种绘制方法来绘制这些事件。开发者可以扩展线性参考功能。

NetworkAnalysis类库

NetworkAnalysis类库提供用于在地理数据库中加载网络数据的对象并提供对象用于分析加载到地理数据库中的网络。开发者开以扩展NetworkAnalysis类库以便支持自定义网络追踪。这个类库目的在于操作公共网络:供气管线、电力供应线网等。

Controls类库

开发者用Controls类库来构建或扩展具有ArcGIS功能的应用程序。ArcGISControls通过封装ArcObjects并提供粗粒度的API简化了开发过程。尽管这些控件封装了细粒度的ArcObjects,但是并不限制对这些细粒度的ArcObjects的访问。MapControlPageLayoutControl分别封装了Carto类库的的MapPageLayout对象。ReaderControl同时封装了MapPageLayout对象,且在操作控件时提供了简化的API。如果授权了地图发布程序,开发者可以以访问MapPageLayout控件类似的方式访问内部对象。Controls类库还包含实现一个目录表的TOCControl及驻留操作合适控件的命令和工具的ToolbarControl。开发者通过创建自己的用于操作控件的命令和工具来扩展Controls类库。为此Controls类库提供HookHelper对象。这个对象使得创建一个操作任何控件及操作诸如ArcMap这样的ArcGIS应用程序的命令变得非常简单。

GeoAnalyst类库

GeoAnalyst类库包含支持核心空间分析功能的对象。这些功能用在SpatialAnalyst3Danalyst两个类库中。开发者可以通过创建新类型的栅格操作来扩展GeoAnalyst类库。为使用这个类库中的对象,需要ArcGISSpatial Analyst3DAnalyst扩展模块许可,或者ArcGISEngine运行时空间分析或3D分析选项许可。

3DAnalyst类库

3Danalyst类库包含操作3D场景的对象,其方式与Carto类库包含操作2D地图的对象类似。Scene对象是3Danalyst类库中主要对象之一,因为该对象与Map对象一样,是数据的容器。CameraTarget对象规定在考虑要素位置与观察者关系时场景如何浏览。一个场景由一个和多个图层组成;这些图层规定了场景中包含的数据及这些数据如何显示。开发者很少扩展3Danalyst类库。为使用这个类库中的对象,需要ArcGIS3DAnalyst扩展模块许可或ArcGISEngine运行时3D分析选项许可。

GlobeCore类库

GlobeCore类库包含操作globe数据的对象,其方式与Carto类库包含操作2D地图的对象类似。Globe对象是GlobeCore类库中主要对象之一,因为该对象与Map对象一样,是数据的容器。GlobeCamera对象规定在考虑globe位置与观察者关系时golbe如何浏览。一个golbe有一个和多个图层;这些图层规定了golbe中包含的数据及这些数据如何显示。

GlobeCore类库中有一个开发控件及与其一起使用的命令和工具。该开发控件可以与Controls类库中的对象协同使用。

SpatialAnalyst类库

这个类库中的对象,需要ArcGIS空间分析扩展模块许可或ArcGIS Engine运行时空间分析选项许可。开发者很少扩展GlobeCore类库。为使用这个类库中的对象,需要ArcGIS3DAnalyst扩展模块许可或ArcGISEngine运行时3D分析选项许可。SpatialAnalyst类库包含在栅格数据和矢量数据上执行空间分析的对象。开发者通常使用这个类库中的对象,而不扩展这个类库

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
相关文章
|
SQL 开发框架 数据可视化
ArcGIS Engine学习系列1 AE基础介绍
市面上AE教程大致到ArcGIS10.2,ESRI宣布从ArcGIS10.5开始便停止AE的更新,使用AO做开发,初学者可以在学习C#语言后,从AE入门,逐渐过度到AO。不同版本下AE数据类型数量Enums:枚举类型,用于实现一些定义的内容Structs:结构体Interfaces:接口Classes:类AE开发中,为了更好地管理COM对象,ESRI将这些COM对象放到不同的组件库中。
295 0
|
C++ 容器
Qt+ArcGIS Engine 10.1 开发(二)
ArcGIS Engine+Qt(GUI开发,使用Qt提供的方法) 上面的这种方法,因为不能调试,所以我相信你不会喜欢,其实我也不喜欢,那我们就用这种方式吧,这种方式不需要上面提到的dll,因此也不需要额外的配置。
960 0
|
定位技术 容器 索引
ArcGIS Engine Style文件操作
对于一个GISer来说,地图,符号这些都应该有着比别人更深刻的理解和认识,作为平台软件都会提供一套自己的符号库,符号库里面根据类别和种类进行区分,因为点,线,面的自然存在和固有属性是不肯能让你用面状符号去渲染点和线的,学GIS的人,一般都会有分类的意识。
1041 0
|
定位技术
ArcGIS Engine中的Symbols详解
本文由本人翻译ESRI官方帮助文档。尊重劳动成果,转载请注明来源。 Symbols     ArcObjects用了三种类型的Symbol(符号样式)来绘制图形特征:marker symbols(标记符号),line symbols(线符号),和fill symbols(填充符号)。
899 0
|
定位技术 C# C++
VC2010+ArcGIS Engine 10.1 开发(一)
                      使用MFC(VS2010)开发ArcGIS Engine 10.1 网上C#结合ArcGIS Engine的资料简直太多了,多的都无法形容,但是C++的却很少,前一段时间不断的有人问在VC中如何开发ArcGI...
1104 0
|
C# 定位技术
VC2010+ArcGIS Engine 10.1 开发(二)
采用ActiveX控件插入的方式 上面我们是通过代码直接将地图控件放到界面上,这种有一个不好的地方就是,如果我们要设置控件的一些样式和视觉效果,我们要自己写很多代码,在C#中我们就很容易,其实在VC中也可以采用这种方式,下来我介绍下: 插入控件 在Vi...
846 0
|
开发工具 C++ C语言
Qt+ArcGIS Engine 10.1 开发(一)
  Qt作为一个跨平台C++图形用户界面应用程序开发框架,相当于微软的MFC(只能运行在Windows平台上),Qt命运多舛,几经易主,现在属于芬兰IT服务公司Digia。 Qt环境安装 Qt的最新版本是Qt5.0,该版本是在12月中旬发布的,在这里我用的是Qt4.8。
1319 0
|
C++
ArcGIS Engine 10报错:ArcGIS version not specified...
        ArcGIS Engine 10桌面应用程序第一次开发,于是使用VS创建一个简单的AE应用程序,然后拖放一个toolbar、LicenseControl以及MapControl控件。
788 0
|
分布式数据库 数据库
ArcGIS Engine+分布式数据库操作
我们知道Geodatabase的分布式数据库可以在线也可以离线,而在线和离线的接口是不同的,这是因为两者的操作过程不一样,我们看一下两者的区别:                                                                             ...
751 0
ArcGIS Engine+拓扑操作
///  /// 建立拓扑 ///  /// 目标数据集 /// 拓扑名称  public void CreateTopology(IFeatureDataset featureDataset, string topologyName)  { // 建立一个空拓扑(拓扑名称、获得数据集的...
836 0