ArcGIS Engine 10 开发.pdf
arcengis 10 开发文档需要的朋友旅游下载esrChinaBEIJING内部文档,请勿外传刷定及修订记录版本完成日期编写/修订纪要编写者备注林雪淋刘文档目录结构完善控件介绍和网络分析功刘宇能完善栅格数据刘宇介绍完善符号亿介刘宇绍完善网络分析刘宇功能完善参考系的刘宇内容esrChinaBEIJING内部文档,请勿外传目录介绍和开发相关的知识三.使用控件创建第一个桌面应用程序四.空间数据库五.几何对象和空间参考六.矢量数据空间分析七.符号化八.栅格数据分析九.编辑十.地图输出实战十二安装部署esrChinaBEIJING内部文档,请勿外传介绍软件架构ArcPadArCGIS标准测览器MobileEngineArcGIsExplorerArclnfoArcEditorOnlIne GIsArcviewNetworkArcReaderArcGIS ServerArcIMs」 ArcSDE文件DBMSrCgIs是ESRI在全面整合了GIS与数据库、软件工程、人工智能、网络抆术及其它多方面的计算机主流技术之后,成功地推出了代表GIS最高技术水平的全系列GIS产品。 ArcGis是一个全面的,可仲缩的GI平台,为用户构建一个完善的GIS系统提供完整的解决方案。 ArcgIs的基本体系能够让用户在任何需要的地方部署GS功能和业务逻辑,无论是在桌面、服务器、还是在野外桌面GIS( ArcGIs Desktop)- ArcgIs桌面GIS软件产品是用米编辑、设计、共享、管理和发布地理信息和概念。 ArcGIS桌面可伸缩的产品结构,从 ArcReader,向上扩展到 Arcview、 Arceditor和 ArcInfo。目前 ArcInfo被公认为是功能最强大的GIS产品。通过一系列的可选的软件扩展模块, ArcGIs Desktop产品的能力还可以进一步得到扩展嵌入式(iS( mbedded gis)一Arci1 S Engine是一个完整的嵌入式GiS组件库和I具包,开发者能用它创建一个新的、或扩展原有的可定制的桌面应用程序。使用 ArcGis Engine,开发者能将GIS功能嵌入到已有的应用稈序中,如基于工业标准的产品以及一些商业应用,也可以创建自定义的应用稈序,为组织机构中的众多用户提供GlS功能。服务器(i|S( Server gIs)— Arcgis serve、 Arc ims和 ArCSDe用于创建和管理基于服务的GIS应用程序,在大型机构和互联网上众多用户之间共享地理信息、。 Arcgis server是一个中心应用服务器,它包含一个可共享的GS软件对象库,能在企业和Web计算框榘中建立服务器端的GiIS应用。 Arcims是通过开放的1nternet办议发布地图、数据和元数据的可伸缩的网络地图服务器。 ArcsDe是在各种关系型数据库管理系esrChinaBEIJING内部文档,请勿外传统中管理地理信息的高级空间缴据服务器移功GIS( Mobile gis)一 Arcpad,支持GPS的无线移动设备,越来越多地应用在野外数据采集和信恳,访问中。 ArcgIs桌面和 ArcGIS Engine可以运行在便携式电脑或平板电脑上,用户可以在野外进行数据采集分析和乃至制定决策介绍ArcGIS Engine是一组完备的并且打包的嵌入式GIS组件库和工具库,开发人员可用来创建新的或扩展已有的桌面应用程序。使用 ArcGIs Engine,开发人员可以将GiS功能嵌入到已有的应用软件中,如自定义行业专用产品;或嵌入到商业生产应用软件中,如 Mirasoftf Word和 Excel;还可以创建集中式自定义应用软件,并将其发送给机构内的多个用户。ArcGIs Engine由两个产品组成:构建软件所用的开发工具包以及使已完成的应用程序能够运行的可再发布的 Runt ime(运行时环境)。 ArcGIS Engine开发工具包是一个基于组件的软件开发产品,可用于构建自定义GIS和制图应用软件。它并不是一个终端用户产品,而是软件开发人员的工具包,适于为 WindowsUNIX或 Linux用户构建基础制图和综合动态GIS应用软件。 ArcGIS Engine Runt ime是一个使终端用户软件能够运行的核心 ArcObjects组件产品,并且将被安装在每一台运行 ArcGisenginρ应用程序的计算机上令 Arcgis engine是基于COM技术的可嵌入的组件库和L具包, ArcGis上 ngine可以帮助我们很轩松的构建自定义应用稈序令使用 Arcgis Engine,开发人员可以将llS功能嵌入到已有的应用软件中,如自定义行业专用产品或嵌入刭商业生产应用软仵中,如 Mirosoftf word和 Excel;还可以创建集中式自定义应用软件,并将其发送给机构内的多个用户CGIS Engine由两个产品组成◇面向开发人员的软件开发包( ArcGIs Engine Developer kit)◇面向最终用户的运行时(ArcG| S Engine runtime)ArcGIs Engine开发工具包是一个基于组件的软件开发产品,可用于构建白定义GIS和制图应用软件。它并不是一个终端用户产品,而是软件开发人员的1具包,支持四种开发环境(C++,(0M,.N,以及Java),适于为 Windows、UNⅹ或 Linux用户构建基础伺图和综合动态GIS应用软件ArcGis Engine runtime是一个使终端用户软件能够运行的核心Arc0 b jects组件产品,并且将被安装在母一台运行 ArcGIS Engine应用程序的计算机上ArcGIs Engine的逻辑体系结构:esrChinaBEIJING内部文档,请勿外传包含了 Arcengine中最核心的 ArcOb jects组件,几乎所有的GS组件需要调用它们,如 Geometry和 ExTensionssplayDeveloperComponents包含了访问矢量或姗格数据的 GeoDatabase所有的接口和类组件。pPresentationData包含了GIS应用程序用于数据显示、数据符号化、要素标注和专题图制作等需要的接口和类组件。ACCeSSBaseServices包含了进行快速开发所需要的全部可视化控件,如 MapControl、 PageLayout Control、 Scenecontrol、G1deControl、 TOCControl、 Toolbar Control、 Symbology Control和 LicensenControl控件等,除∫这些,该库还包括大量可以有 Toolbarcontro1调用的内置 commands、 tools、 Menus,它们可以极大地简化二次开发工作。在图中我们可看出, ArcEngine的开发体系是一条纵线,功能丰富,层次清晰。最上层的 Extensions包含了许多高级开发功能,如 GeoDatabase Update、空间分析、三维分析、网络分析、 Schematics逻辑小意图以及数据可操作等。 ArcEngine标准版并不包含这些 ArcObjects许可,他们只能作为扩展存玍,需要特定的 License才能运行。扩展模块3D维分析Spatial空间分析Network网络分析Maplex智能标注Data Interoperability数据互操作Schematics逻辑示意图Tracking跟踪分析Geostatistical地理统计分析esrChinaBEIJING内部文档,请勿外传中的类库ArcGIs engine开发中,为了更好的管理这些〔川对象,HSRI将这些CM对象放在不同的组件库中,而他们被物哩的防盜bin目录下的dl1中,而逻辑上被分散到不冋的命名空间中SystemSy stem库是 ArcgIs架构中最底层的库。该库包含了暴露组成 Arcgis的其它库所使用的服务的组件。System厍中定义了许多接口,它们可以由开发者来实现。 InItializer对象在 System中定义;所有开发者必须使用该对象在使用 Engine功能的应用稈序中初始化和 uninitialize arcgis engine。开发者不护展该库,但可以通过实现其中的接口来扩展 ArCGIS系统。SystemESystemE库巾包含了可在 Arcgis engine中护展的用户界面组件的接口定义,包括 I Command、Iool和IToolControl接口。开发者使用这些接口来扩展UI组件。该库所包含的对象是 utility对象,开发者可用于简化某些用户界面的开发。开发者不扩展该库,但可以通过实现其屮的接口来扩展 ArcGIs系统。Geometry库处理存储在特征类( feature classes)或其它图形要素( graphical elements)中的特征的geometry或 shape。大多数用户交互的基本几何对象有 Point、 Multipoint、 online和 Polygon。除了这些顶层的实伓,还有作为 Polylines和 Polygons构建樸块的几何体( geometries)。这些是组成几何体的基元( primitives)。它们是 Segments、 Paths和 Rings polylines和 Polygons由形成一条Path的依次相连的 Segments组成。一个 e gen t包含两个不司的点,起点和终点,和一个定义从起点到终点的曲线的要素类型。这种 segments有 CircularArc、Line、EllipticA和 Beziercurve。所有的几何对象都可以有与它们顶点相关的/、M和)s。基本的几何对象都支持几何操作,如 Buffer和Clip。开发者不可以扩展几何基元。GIS中的实休是指现实世界中的特征;这些现实世界中的特征的位置由具有空间参考的几何体米定义。投景和地理坐标系统的空间参考对象都包含在 Geometry库中。开发者可以通过在空间参考间添加新的空间参考和投影来扩展空间参考系统。DisplayDisplay库包含了用于GIS数据显示的对象。除了负责实际图像输出的主要显示对象,该库中还包含了表示颜色和符号的对象,这些颜色和符号用于控制显示上所绘制实体的属性。库中也包含了为用户在与显示交互时提供可视化反馈的对象。开发者大都通过类似JMap或 Pagelayout对象提供的视图与显示交互。该库的所有部分都可以被护展,常被扩展的有符号、颜色和显示反馈( display feedbacks)。utputOutput库被用于创建图形输岀到设备,如打印机、绘图仪和硬拷贝格式,如増强型图元文件( enhancedmetafiles)和栅格影像格式(JPG、BⅦ等)。开发者使用该库和AcGi|S系统其它部分中的对象来创建图形输岀。通常这些是 Display和 Carto库中的对象。开发者可以扩展 output库用丁定制的设备和输出格式。GeoDatabasedaTabase库提供了用于 geodatabase的编程API。 Geodatabase是一个构建在标准工业关系和对象数据库技术基础上的地理数据储存库。库中的对象为 ArCGIs支持的所有数据源提供了统一的编程模型。oDatabase库定义了许多由架构中较髙层次数据源禔供者实现的接口。开发者可以扩展 geodatabase来支持特殊的数据对象( Features、 Classes等)类型。此外,还可以使用 PlugInDataSource对象添加自定义的矢量数据源。 geodatabase支持的 nativeesrChinaBEIJING内部文档,请勿外传数据类型不可以被扩展。DataSourcesfileataSourcesfile库包含用于基于文件数据源的 Geodatabase ap的实现。这些基于文件的数据源包括shapefile、 coverage、TIN、CAD、SDC、 ArcGIS StreetMap和VPF。开发者不能扩展 DataSourcesfile库DatasourcesgDBData SourcesGDB库包含」用丁数据库数据源的 GeoDatabase API的实现。这些数源包括 MicrosoftAccess和SDE软件支持的 RDBMSS。开发者不能扩展 Dat aSourcesGDB库。DataSourceoledBDataSources01eDB库包含用于 Microsoft ole dB数据源的 GeoDatabase API的实现。该库只有在Microsoft windows操作系统上才可以使用。这些数据源包括怔何!D支持的数据提供者和文本文件「作空间。开发者不能扩展 DataSourcesoledr库。DataSourcerasterDataSources Raster库包含了用于 Raster数据源的 GeoDatabase api的实现。这些数据源包括SDE软件支持的 RDBMSS,和所有支持的RD0栅格文件格式。当需要支持新的册格格式时,开发者不扩展该库,而是扩展RDO。开发者不扩展 DataSources raste库oDatabaseDistributedGcoDatabascDistributed库通过提供数据导入、导出 geodatabase的工具来支持到企业 geodatabase的分布式访问。开发者不扩展 GeoDatabaseDistributed库。CartoCarto厍支持地图的创建和显小;这些地图可以包含一幅地图或具有多幅地图和相关旁注的页中的数据。PageLayout对象是宿主一幅或多幅地图和相关旁汴(指北针、图例、比例尺条等)的容器。Map对象是图层的容器。Map对象有操作地图中所有图层的属性:空间参考、地图比例尺等,还有作地图图层的方法。有多种不同类型的图层可以被加载到地图屮。不同数据源通常有一个相关图层负责在地图上显示数据;矢量特征由 Featurelayer对象处理,栅格数据由 Rasterlayer对象处理,TIN数据由 Tinlayer对象处理等。若需要,佟层可以为它们的相关数据处坦所有的绘制操作。但更常见的是图层拥有一个相关的 Renderer对象。 Renderer对象的属性控制数据在地图巾怎样显示。 Renderers一殷使用 Display戽中的 symbols进行实际绘图; renderer只是匹配指定的符号与要绘制的实休的属性。一个Map和一个 Pagelayout可以包含要素( clements)。要素利用几何体来定乂它在地图或页面上的位置,以及控制要素显示的行为。有用于基本形状、文本标注、复杂旁注等的要素。 Carto厍也包含对地图注记和动态标注的支持。LocationLocation库包含支持地理编码和与 route事件一起作的对象。可通过fu控件的 finegrained对象访问地理编码功能,或 Geocode seryer对象提供了一个简饣的API。开发者可以创他们自己的地理编码对象。线性参考功能提供了添加事件到线性特征的对象,并使用多种绘制方法涫染这些事件。开发者可以扩展线性参考功能。Ne tworkAnalyslSNe tworkAnalysis库提供的对象在网络加载到 geodatabase中时,使用网络数据和对象 populating arodataεse来分析网络。开发者可以扩展该库来支持定制的网络跟踪。该库是用于 utility网络的-gas lines、 electricity supply lines等Controls开发者使用 Controls库来构建或扩展具有 ArcgIs功能的应用程序。 Arcgis controls通过封装ArcObjects和提供一个 coarser- grained API,简化了开发过稈。尽管控什封装了 fine grained Arc Ob jects,但它们并不限制访问这些 ArcObjects。 ManControl和 Pagelayout Contro1分别封装了 Carto库中的Map和esrChinaBEIJING内部文档,请勿外传PageLayout对象。 Reader Control封装了Map和 Pagelayout对象,并在使用该控件时提供了简化的API如果地图出版商拥有授权许可,那么开发者可以访问Map和 PageLayout控件的类似方式访问内部对象。该库也包含实现内容列表的T0 Control和宿主与一个合适控件一起工作的命令和工具的Too1 barControlaNalystGeoAnalyst库包含支持核心空间分析功能的对象。这些功能在 ArcGiS Spatial Analyst和 ArcGIS3DAnalyst"库中使用。开发者可以通过创建一个新的栅格操作类型来扩展该库。要求有 ArcGIS SpatialAnalyst或3 D Analyst许可才能使用该库屮的对象。3DAnalyst3 ANalyst库包含在三维场景中使用的对象,它们的工作方式类似于 Carto库中包含的对象在二维地图中作。 scene对象是库中的主要对象之一,因为它与Map对象类似,是数据的容器。( camera和 Target对象根据特征相对于观察者的位置,指定场景的视图。一个场景( scene)包含一个或多个图层;这些图层指定了场景屮的数据和数据怎样绘制3 ANalyst库拥有一个开发控件和一组和该控件协同工作的命令和工具。该控件可以与 Controls库中的对象联合使用。除了创建命令和工具,开发者对该库的扩展较少。使用该库中的对象需要3 D Analysυ许可。GlobecoreGlobecore库包含与g1obe数据一起工作的对象,工作方式类似于 Carto库中包含的对象在二维地图中工作。G1be对象是库巾的主要对象之一,因为亡与Map对象类似,是数据的容器。 GlobeCamera对象根据g1obe相对于观察者的位置,指定了Glbe视图。Glbe可以有一个或多个图层;这些图层指定了 Globe上的数据和数据怎样绘制。介绍完这些,让我们有个感性上的认识,在以后找某个对象的时侯,知道去哪个d1中找。二.和开发相关的知识接口编程使用 ArcGIs Engine,也就意味着使用里面的接口,那么什么是接口呢?在面向对象的编程中,我们都会接触到这个玩意儿,我们知道面向对象有三大特性封装,继承,多态,相信很多人在学习多态的时候会接触接口接口可以用这样一句话来描述“接口就是包含一系列不被实现的方法.而把这些方法的实现交给继承它的类.”,这句话看起来很晦涩,没关系,我们通过下面一个例子说明我定义了一个接口 PEople
用户评论