基于C#的AE二次开发之入门简介与类库简介

基于C#的AE二次开发之入门简介与部分类库简介

  1. 简介
  • 什么是ArcGIS Engine?
    ArcGIS Engine 是一组完备的并且打包的嵌入式 GIS 组件库和工具库,开发人员可用来创建新的或扩 展已有的桌面应用程序。使用 ArcGIS Engine,开发人员可以将 GIS 功能嵌入到已有的应用软件中,如自 定义行业专用产品;或嵌入到商业生产应用软件中,如Mirosoft Word 和 Excel;还可以创建集中式自定义 应用软件,并将其发送给机构内的多个用户。

  • ArcGIS Engine 的逻辑体系结构

1.1.1 基础服务(Base Services)
包含了 ArcGIS Engine中比较核心的ArcObjects组件,几乎所有的 GIS 组件需要调用它们,如 Geometry和 Display 等。
1.1.2 数据访问(Data Access)
包含了访问矢量或栅格数据的GeoDatabase所有的接口和类组件。
1.1.3 地图展示(Map Presentation)
包含了 GIS 应用程序用于数据显示、数据符号化、要素标注和专题图制作等需要的接口和类组件。
1.1.4 开发组件(Develper Components)
包含了进行快速开发所需要的全部可视化控件,如 MapControl、PageLayoutControl、SceneControl、 GlobeControl、TOCControl、ToolbarControl、SymbologyControl 和 LicensenControl 控件等,除了这些,该 库还包括大量可以有 ToolbarControl 调用的内置 commands、tools、Menus,它们可以极大地简化二次开发 工作。
1.1.5 拓展模块(Extensions)
在图中我们可看出,ArcGIS Engine 的开发体系是一条纵线,功能丰富,层次清晰,最上层的 Extensions包含了许多高级开发功能,如 GeoDatabase Update、空间分析、三维分析、网络分析、Schematics 逻辑示意图以及数据互操作等。ArcGIS Engine 标准版并不包含这些 ArcObjects 许可,他们只能作为扩展存在,需要 特定的 License 才能运行。


2. 类库

2.1 Version 库
Version 库是 ArcGIS 10 新出来的一个类库,该类库包含了将独立应用程序绑定到特定的 ArcGIS 系列 产品的函数和方法,该类库是在运行 Engine 的应用程序的时候。
2.2 System 库
System 库是 ArcGIS 架构中最底层的库。该库包含了暴露组成 ArcGIS 的其它库所使用的服务的组件。 System 库中定义了许多接口,它们可以由开发者来实现。AoInitializer 对象在 System 中定义;所有开发 者必须使用该对象在使用 Engine 功能的应用程序中初始化和 uninitialize ArcGIS Engine。开发者不扩展该库,但可以通过实现其中的接口来扩展 ArcGIS 系统。
2.3 SystemUI 库
SystemUI 库中包含了可在 ArcGIS Engine 中扩展的用户界面组件的接口定义,包括 ICommand、ITool 和 IToolControl 接口。开发者使用这些接口来扩展 UI 组件。该库所包含的对象是 utility 对象,开发者可用于简化某些用户界面的开发。开发者不扩展该库,但可以通过实现其中的接口来扩展 ArcGIS 系统。
2.4 Geometry 库
Geometry 库处理存储在特征类(feature classes)或其它图形要素(graphical elements)中的特征的 geometry 或 shape。大多数用户交互的基本几何对象有 Point 、MultiPoint 、Polyline 和 Polygon 。除了这些顶层的 实体,还有作为 Polylines 和 Polygons 构建模块的几何体(geometries)。这些是组成几何体的基元(primitives)。 它们是 Segments、Paths 和 Rings。Polylines 和 Polygons 由形成一条 Path 的依次相连的 Segments 组成。 一个 Segment 包含两个不同的点,起点和终点,和一个定义从起点到终点的曲线的要素类型。这种 segments 有 CircularArc、Line、EllipticArc 和 BezierCurve。所有的几何对象都可以有与它们顶点相关的 Z、M 和 IDs。
基本的几何对象都支持几何操作,如 Buffer 和 Clip。开发者不可以扩展几何基元。GIS 中的实体是指现实 世界中的特征;这些现实世界中的特征的位置由具有空间参考的几何体来定义。投影和地理坐标系统的空 间参考对象都包含在 Geometry 库中。开发者可以通过在空间参考间添加新的空间参考和投影来扩展空间 参考系统。
2.5 Display库
Display 库包含了用于 GIS 数据显示的对象。除了负责实际图像输出的主要显示对象,该库中还包含 了表示颜色和符号的对象,这些颜色和符号用于控制显示上所绘制实体的属性。库中也包含了为用户在与 显示交互时提供可视化反馈的对象。开发者大都通过类似于 Map 或 PageLayout 对象提供的视图与显示交互。该库的所有部分都可以被扩展,常被扩展的有符号、颜色和显示反馈
2.6 Output 库
Output 库被用于创建图形输出到设备,如打印机、绘图仪和硬拷贝格式,如增强型图元文件(enhanced metafiles)和栅格影像格式(JPG、BMP 等)。开发者使用该库和 ArcGIS 系统其它部分中的对象来创建图形 输出。通常这些是 Display 和 Carto 库中的对象。开发者可以扩展 output 库用于定制的设备和输出格式。
2.7 GeoDatebase 库
GeoDatabase 库提供了用于 geodatabase 的编程 API。Geodatabase 是一个构建在标准工业关系和对象数据库技术基础上的地理数据储存库。库中的对象为 ArcGIS 支持的所有数据源提供了统一的编程模型。 GeoDatabase 库定义了许多由架构中较高层次数据源提供者实现的接口。开发者可以扩展 geodatabase 来支 持特殊的数据对象(Features、Classes 等)类型。此外,还可以使用 PlugInDataSource 对象添加自定义的矢量 数据源。geodatabase 支持的 native 数据类型不可以被扩展。
2.8 DateSources 库
DataSourcesFile 库包含用于基于文件数据源的 GeoDatabase API 的实现。这些基于文件的数据源包括shapefile、coverage、TIN、CAD、SDC、ArcGIS StreetMap™和 VPF。开发者不能扩展 DataSourcesFile 库。
2.9 DataSourcesOleDB 库
DataSourcesOleDB 库包含用于 Microsoft OLE DB 数据源的 GeoDatabase API 的实现。该库只有在 Microsoft Windows 操作系统上才可以使用。这些数据源包括任何 OLE DB 支持的数据提供者和文本文件 工作空间。开发者不能扩展 DataSourcesOleDB 库。
2.10 DataSourcesRaster 库
DataSourcesRaster 库包含了用于 Raster 数据源的 GeoDatabase API 的实现。这些数据源包括 SDE 软 件支持的 RDBMSs,和所有支持的 RDO 栅格文件格式。当需要支持新的栅格格式时,开发者不扩展该库, 而是扩展 RDO。开发者不扩展 DataSourcesRaste 库。
2.11 GeoDatabaseDistributed 库
GeoDatabaseDistributed 库通过提供数据导入、导出 geodatabase 的工具来支持到企业 geodatabase 的分 布式访问。开发者不扩展 GeoDatabaseDistributed 库。
2.12 Carto 库
Carto 库支持地图的创建和显示;这些地图可以包含一幅地图或具有多幅地图和相关旁注的页中的数 据。PageLayout 对象是宿主一幅或多幅地图和相关旁注(指北针、图例、比例尺条等)的容器。Map 对象是 图层的容器。Map 对象有操作地图中所有图层的属性:空间参考、地图比例尺等,还有操作地图图层的方法。有多种不同类型的图层可以被加载到地图中。不同数据源通常有一个相关图层负责在地图上显示数据; 矢量特征由 FeatureLayer 对象处理,栅格数据由 RasterLayer 对象处理,TIN 数据由 TinLayer 对象处理等。 若需要,图层可以为它们的相关数据处理所有的绘制操作。但更常见的是图层拥有一个相关的 Renderer 对 象。Renderer 对象的属性控制数据在地图中怎样显示。Renderers 一般使用 Display 库中的 symbols 进行 实际绘图;renderer 只是匹配指定的符号与要绘制的实体的属性。一个 Map 和一个 PageLayout 可以包含 要素(elements)。要素利用几何体来定义它在地图或页面上的位置,以及控制要素显示的行为。有用于基本 形状、文本标注、复杂旁注等的要素。Carto 库也包含对地图注记和动态标注的支持。
2.13 Location 库
Location 库包含支持地理编码和与 route 事件一起工作的对象。可通过 full 控件的 finegrained对象访问地理编码功能,或GeocodeServer 对象提供了一个简化的 API。开发者可以创建他们自己的地理编码对象。线性参考功能提供了添加事件到线性特征的对象,并使用多种绘制方法渲染这些事件。开发者可以扩 展线性参考功能。
2.14 NetworkAnalysis 库
NetworkAnalysis 库提供的对象在网络加载到 geodatabase 中时,使用网络数据和对象 populating a geodatabase 来分析网络。开发者可以扩展该库来支持定制的网络跟踪。该库是用于utility 网络的——gas lines、electricity supply lines 等。
2.15 Controls 库
Controls 库来构建或扩展具有 ArcGIS 功能的应用程序。ArcGIS Controls 通过封装 ArcObjects 和提供一个 coarser-grained API,简化了开发过程。尽管控件封装了 fine grained ArcObjects,但它们并不限制访问这些 ArcObjects。MapControl 和 PageLayoutControl 分别封装了 Carto 库中的 Map 和 PageLayout 对象。ReaderControl 封装了 Map 和 PageLayout 对象,并在使用该控件时提供了简化的 API。 如果地图出版商拥有授权许可,那么开发者可以访问 Map 和 PageLayout 控件的类似方式访问内部对象。该库也包含实现内容列表的 TOCControl 和 宿主与一个合适控件一起工作的命令和工具的 ToolbarControl
2.16 GeoAnalyst 库
GeoAnalyst 库包含支持核心空间分析功能的对象。这些功能在 ArcGIS Spatial Analyst 和 ArcGIS 3D Analyst™库中使用。开发者可以通过创建一个新的栅格操作类型来扩展该库。要求有 ArcGIS Spatial Analyst 或 3D Analyst 许可才能使用该库中的对象。
2.17 3DAnalyst 库
3DAnalyst 库包含在三维场景中使用的对象,它们的工作方式类似于 Carto 库中包含的对象在二维地图中工作。Scene 对象是库中的主要对象之一,因为它与 Map 对象类似,是数据的容器。Camera 和 Target 对象根据特征相对于观察者的位置,指定场景的视图。一个场景(scene)包含一个或多个图层;这些图层指定了场景中的数据和数据怎样绘制。3DAnalyst 库拥有一个开发控件和一组和该控件协同工作的命令和工具。该控件可以与 Controls 库中 的对象联合使用。除了创建命令和工具,开发者对该库的扩展较少。使用该库中的对象需要 3D Analyst 许 可。
2.18 GlobeCore 库
GlobeCore 库包含与 globe 数据一起工作的对象,工作方式类似于 Carto 库中包含的对象在二维地图 中工作。Globe 对象是库中的主要对象之一,因为它与 Map 对象类似,是数据的容器。GlobeCamera对象根据 globe 相对于观察者的位置,指定了 Globe 视图。Globe 可以有一个或多个图层;这些图层指定了Globe上的数据和数据怎样绘制。介绍完这些,让我们有个感性上的认识,在以后找某个对象的时候,知道去哪个 Dll 中找。


  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值