ArcGIS二次开发是当前gis领域的一项重要必不可少的技能。下面介绍它的基本功能
一、ArcGIS Engine功能
在使用之前首先安装和部署arcgis sdk,(在这里不在赘述相关知识)可以实现的功能主要有地图的基本操作、信息查询、专题地图制作、数据编辑、网络分析、空间统计分析、三维分析等。
1、地图的基本操作
地图的基本操作主要包括加载矢量、栅格数据,浏览缩放地图,保存地图,在地图上显示文本注记,绘制点线面几何体等。
2、信息查询
信息查询主要通过矩形圆形或多边形来选中地图上的要素,或者通过sql语句进行要素属性的查询。
3、专题地图制作
专题地图制作就是使用各种渲染方式(如分级渲染、柱状图渲染、点密度渲染、比例尺渲染等)绘制地图图层,生成不同的专题图。
4、数据编辑
数据编辑功能即对数据进行编辑操作以满足各种需求,如对GIS矢量数据进行添加删除,对节点进行移动、添加、删除,对属性信息进行修改等操作。
5、网络分析
网络分析分为交通网络分析和几何网络分析。在交通网络分析中,可以实现最短路径分析等相关功能,在几何网络分析中,可以进行管爆分析、查找源和汇等有关操作。
6、空间统计分析
空间统计分析主要分析数据的空间关系和空间特征,可以实现距离制图、密度制图、栅格插值,坡度和破向提取、单元统计、分区统计等。
7、三维分析
三维分析是实现数据的三维可视化显示,该功能主要舒勇GlobeControl和SceneControl来实现。
二、ArcGIS Engine类库
arcgis Engine不同组件库分别封装不同的GIS功能。在.NET环境中,不同的GIS功能分别被定义在不同的命名空间内。
ArcGIS Engine提供的类库主要可以分为Version类库、界面和空间类库、数据访问类库、数据分析类库等几大部分。
1、Version类库
Vision类库包含将独立的应用程序绑定到特定的ArcGIS系列产品中的方法。在使用AE 10进行开发的过程中,需要在应用程序中的启动阶段添加arcgis产品的绑定,所包含的绑定产品有ARCReader、Desktop、Engine、EngineOrDesktop和Server五种。
2、界面和控件类库
-
- System类库
System类库包含在ESRI.ArcGIS.esriSystem命名空间下,是ArcGIS体系结构中最底层的类库,为构成ArcGIS的其他类库提供相关的组件。该类库中最重要的是AoInitalize(初始化)对象,它用于初始化ArcObjects组件运行许可。
-
- System UI类库
System UI类库包含在ESRI.ArcGIS.SystemUI命名空间下,包含用户界面组件接口的定义,如ICommand、ITool和IToolControl等接口,开发人员通过对这些接口的继承来扩展自己的ArcGIS应用程序。
-
- Controls类库
Controls类库包含在ESRI.ArcGIS.Controls命名空间下,主要包含一系列的用户界面组件及相关的操作接口,主要有MapControl、PageLayoutControl、ReaderControl、TOControl、ToolbarControl等。
3、可视化显示类库
-
- Carto类库
- Carto类库包含在ESRI.ArcGIS.Carto命名空间下。它是最重要的地图可视化类库,支持地图的创建和显示。类库中的Map对象包括空间参考、地图比例尺,以及操作地图图层等多种属性和方法,可以将许多不同类型的容器,其中的地图元素包括指北针、图例和比例尺等。
- Geometry类库
- Geometry类库包含在ESRI.ArcGIS.Geometry命名空间下。它用来处理存储在要素类中的几何图形或其他类型的图形元素,如用户绘制的图形等。基本几何图形对象有Point、MultiPoint、Polyline和Polygon等。Polyline和Polygon由一系列相连接的、构成Path的片段组成,片段的类型有Circular Ari(圆形)、Line、Elliptical Ari椭圆)和Bezier Curve(贝塞尔曲线)等。所有几何图形对象都可以有与其顶点相关联的Z(elevation)、M(measure)和IDS属性。所有的几何图形对象也都支持诸如Buffer、Clip等几何操作。
- GIS中的实体指的是现实世界中的地理要素,而现实世界中地理要素的位置由一个带有空间参考的几何图形来定义。空间参考对象(地理坐标系统和投影坐标系)也都包括在Geometry类库中,可以通过添加新的空间参考来扩展参考系统。
- Display类库
- Display类库包含在ESRI.ArcGIS.DisPlay命名空间下。它不仅包含GIS数据的显示对象,还包含符号和颜色对象,用以控制实体绘制的各种属性等。开发人员与程序最常用的交互方式就是使用Map对象或PageLayout对象提供的视图(View)。
- OutPut类库
- Output类库包含在ESRI.ArcGIS.Output命名空间下。用于创建输出到诸如打印机或绘图仪等设备的图形,以及增强型图元文件和栅格图像格式等硬拷贝格式的图形。
- Carto类库
4、数据访问类库
-
- Geodatabase类库
- Geodatabase数据库包含在ESRI.ArcGIS.Geodatabase命名空间下。它提供开发地理数据库相关功能所需要的应用程序编程接口。Geodatabase类库中的对象为ArcGIS支持的所有数据源提供了一个统一的编程模型。此外,Geodatabase类库还可以通过PlugInDataSource对象来添加自定义的矢量数据源。
- DataSourcesFile类库
- DataSourcesFile类库包含在ESRI.ArcGIS.DataSourcesFile命名空间下。它包含用于访问文件数据源的GeoDatabase应用程序编辑接口。基于文件的数据源包括Shapefile、Coverage、TIN、CAD/StreetMap和VPF等。
- DataSourcesGDB类库
- DataSourcesGDB类库包含在ESRI.ArcGIS.DataSourcesGDB命名空间下。它包含用于访问数据库数据源的GeoDatabase应用程序编辑接口。这些数据源包括Microsoft Access和ARCSDE支持的关系数据库管理系统,如Microsoft SQL Server和Oracle等。
- DataSourcesOleDB类库
- DataSourcesOleDB类库包含在ESRI.ArcGIS.DataSourcesOleDB命名空间下。它包含访问Microsoft OLE DB数据源的GeoDatabase应用程序编辑接口。此类类库只能在Microsoft Windows操作系统上,可以连接所有的支持OLE DB的数据库。
- DataSourcesRaster类库
- 包含在ESRI.ArcGIS.DataSourcesReaster命名空间下。它包含访问栅格数据源的GeoDatabase应用程序编辑接口,能够访问基于ARCSDE的关系数据库所支持的RDO栅格文件格式。当需要支持新的栅格格式时,开发者不是扩展这个类库,而是通过扩展RDO来实现。
- GeoDatabaseDistributed类库
- 包含在ESRI.ArcGIS.GeoDatabaseDistributed命名空间下。它通过提供地理数据库数据导入和导出工具,以支持对企业级地理数据库的分布式访问。
- Geodatabase类库
5、数据分析类库
-
- NetworkAnalysis类库
- 包含在ESRI.ArcGIS.NetworkAnalysis命名空间下,它提供地理数据库中加载几何网络数据对象,并提供对象用于分析加载到地理数据库中的几何网络。可以扩展NetworkAnalysis类库以便管理支持自定义的几何网络分析。这个类库的目的在于操作各种公用设施网络,如供电、供水管道,燃气管道,电力管线等。
- GeoAnalysis类库
- 包含在ESRI.ArcGIS.GeoAnalysis下,它包含核心空间分析的功能的对象,这些功能和对象用于SpatialAnalysis和3DAnalysis两个类中。可以通过创建新类型的栅格操作来扩展GeoAnalysis类库。为使用这个类库中对象,需要具有ArcGIS Spatial Analysis和ArcGIS 3D Analysis扩展模块许可,或者具有ArcGIS Engine运行时Spatial Analysis和3D Analysis选项许可。
- 3DAnalysis类库
- 包含在ESRI.ArcGIS.Analysis3D命名空间下。包含操作三维场景的对象,与Carto类库操作二维地图对象类似。Scene对象是3dAnalysis类库的主要对象,该对象图Map对象一样,是数据的容器。Camera对象用于确定在考虑要素位置与观察者关系时如何进行场景浏览。一个场景由一个或者多个图层组成,这些图层规定了场景中包含的数据及这些数据如何显示。要使用这个类库中的对象,需要3d Analysis扩展模块的许可。
- SpatialAnalysis类库
- SpatialAnalysis类库包含在栅格数据和矢量数据上执行空间分析的对象。要使用这个类库中的对象,需要ArcGIS Spatial Analysis扩展模块的许可。
- GlobalCore类库
- GlobeCore类库包含在ESRI.ArcGIS.GlobeCore命名空间下,它包含操作Globe数据的对象,其方式与Carton类库操作二维地图的对象类似。Globe对象是GlobeCore类库的主要对象,它与Map对象一样,也是数据的容器。GlobeCamera对象用于确定在考虑Globe位置与观察者关系时Globe应该如何浏览。一个Globe有一个或者多个图层规定Globe中包含的数据如何显示。
- GlobeCore类库中有一个开发控件及其一起使用的命名工具,该控件可以与Controls类库中的对象协同使用。要使用这个类库中的对象,需要3d Analysis模块的许可。
- NetworkAnalysis类库
6、其他类库
-
- Server类库
- 包含在ESRI.ArcGIS.Server命名空间下,包含允许用户连接及操作的ArcGIS Server的对象,使用GISServerConnection对象来访问Arcgis Server。通过GISServerConnection可以访问ServerObjectsManager对象,并通过它操作ServerConnection对象,以处理运行在服务器上AO。
- GISClient类库
- 包含在ESRI.ArcGIS.GISClient命名空间下,允许开发人员使用Web服务,这些web服务可以由ArcIMS或ArcGIS Server提供。包含连接GIS服务以操作ArcGIS Server对象的通用编程模型。但是,在ArcGIS Server上运行的AO组件不能通过Client的接口来访问。要直接访问在服务器上运行的Ao组件应使用Server类库中的功能。
- Location类库
- 命名空间ESRI.ArcGIS.Location ,包含支持地理编码和操作路径事件的对象。地理编码功能可以通过细粒度的对象来完全控制访问,或者通过GeocodeServer对象提供对象用于向线性要素中添加事件,并用于各种绘制方法来绘制这些事件。
- Server类库
21:03:44 2016-09-11