《GIS程序设计》期末复习
接口是引用类型,接口成员包括:方法、属性 、索引器
常用类库及控件
基础类库: Version类库
ArcEngine 10.0新出的类库,包含里将独立应用程序绑定到特定的ArcGIS系列产品的函数和方法。
System库是ArcGIS框架中最底层的一个库,它包含了一些被其他库使用的一些基础组件。SystemUI库定义了一些在ArcGIS中被用户界面组件使用的类型。像ICommand和ITool这样的接口就在这里定义。 Geometry
几何库包含了核心的几何对象,比如点,面,线等要素类(FeatureClass)和图形元素(Graphic Element)。在几何库中还定义和实现了空间参考的对象,包括投影坐标系和几何坐标系。 Display
显示库包含了支持在输出设备上显示GIS数据的组件,屏幕显示、图像绘制输出、符号、颜色、显示交互(Feedback)等都在这个库中定义。 Server
提供了连接、管理ArcGIS Server的核心类,如IServerObjectManager、IServerObject等,其他类库的对象可以通过ArcGIS Server的IServerContext进行远程创建。 Output
提供了将MapControl和PagelayoutControl中的地图输出到打印机、绘图仪以及其他设备文件中。
数据访问类库: 1、Geodatabase
包含了所有相关数据组织的定义类型,提供了与数据访问相关的接口。要素、表、网络、TIN、栅格数据集、栅格目录、要素子类、拓扑模型都在这个库中定义。其他一些类型的实现在各自的数据来源的库中。 2、DataSourcesFile
DataSourcesFile库基于文件数据源,包含了为支持的矢量数据格式提供的工作空间工厂和工作空间.
3、DataSourcesRaster
DataSourcesRaster 包含了用于栅格数据源的工作空间工厂和工作空间。 4、DataSourcesGDB
DataSourcesGDB 库基于数据库数据源,包含了为存储在RDBMS中的矢量和栅格数据提供的工作空间工厂和工作空间。 5、GISClient
包含了作用于远程GIS服务的对象。这些远程服务可以由ArcGIS Server和ArcIMS提供。 6、GeoDatabaseDistributed
该类库包含了需要执行checkout/checkin的离线GeoDatabase的对象,支持对企业地理数据库的分布式访问。
制图、数据显示类库: 1、Carto
包含了为数据显示的对象。如Map、Layer、FeatureLayer等对象,支持地图的创建及显示,包含了Renderer对象,控制着数据的显示方式。Map对象和PageLayout对象可以包含元素。这个库中也包括了MxdServer和MapServer对象,它们通常被Server用来显示地图数据。 2、Location
包含了与位置数据操作相关的对象。位置数据可以是路径事件,或者地理编码的位置。
地理分析类库: 1、NetAnalysis类库
提供了用于地理数据库中加载网络数据的对象并提供对象用于分析加载到地理数据库的网络,用于操作公共网络,如道路网,供气管线,电力供应线网等。 2、GeoAnalyst
GeoAnalyst库包含了核心的空间分析功能,这些功能是在SpatialAnalyst和3DAnalyst扩展都会用到的功能。 3、SpatialAnalyst
SpatialAnalyst库包含了在栅格和矢量数据上执行空间分析的对象。 4、3DAnalyst
3DAnalyst库包含了数据的3d分析对象,也包括显示3d数据,在这个库中有一个控件SceneControl可用。 5、GlobeCore
GlobeCore库包含了globe数据分析的对象,也包含了显示globe数据,在这个库中有一个控件GlobeControl可用。
一个地图文档可以包含有多个数据框,每个数据框都可以拥有不同的图层和表现。FocusMap是指向当前活动的数据框。
类库及其包含的常见接口汇总: ->表示派生 Geometry类库:
1Geometry->Envelope、Point、Curve(Curve->polycurve->polyline/polygon)
2 SpatialReference
Carto类库:Map and PageLayout
Map(MapDocument(->PageLayout)、SpatialBookmark->AOIBookmark、) IMapDocument IMapBookmarks IEnumSpatialBookmark
IBasicMap
IActiveView IGraphicsContainer Element(Graphic Element、Frame Element)
MapFrame、MapSorroundFrame、IMarkerElement ILegend2 ILegendFormat IScaleBar IMarkerNorthArrow IFeatureSelection
Layer: IFatureLayer、RasterLayer、 Renderer: ISimpleRenderer
FeatureRenderer(SimpleRenderer、UniqueValueRenderer、ClassBreaksRenderer、) RasterRenderer:(RasterGDBRenderer、RasterUniqueRenderer) NetWork Renderering: Lable and Annotation: MapServer: IExtentStack ILegendClass IPage
IPrintAndExport
Controls类库:包含了各个控件 DataSourcesFile类库:
Coverage、CAD、
DataSourcesRaster类库:
IRasterWorkspace IRasterPyramid3
DataSourcesGDB类库: GeoDataBase类库:
WorkspaceFactory Workspace
DataSet->GeoDataSet(->FeatureDataSet)、Table(Row Fields Field) Table->ObjectClass->FeatureClass IFeatureClass IFeature
IEnumDataset IDataset IFeatureWorkspace
Row->Object->Feature
QueryFilter Cursor QueryDef ISpatialFilter IFeatureCursor
Topology:
Raster: IRasterRasterWorkspaceFactory RasterDataSet RasterCursor NetWork DataSet
Display类库:
Color
ColorRamp
Symbol:ISimpleMarkerSymbol ILineProperties ITemplate
IStyleGalleryItem
Output:
IPaper IExport IPrinter
地图数据访问
1.加载地图文档
(1)使用IMapControl接口的LoadMxFile()方法加载;
步骤:打开文件对话框选择要打开的文档,OpenFileDialog(请查询各参数,并设置值); 调用CheckMxFile()方法检查是否为有效地图文档;
调用LoadMxFile(string mxPath,object mapnameorindex,object password )。 (2)通过IMapDocument接口的Open()方法加载
步骤:打开文件对话框选择要打开的文档,openFileDialog;
通过MapDocument打开地图文档,使用Open(FileName,””)方法; 通过ActiveView属性的FocusMap属性赋予当前的Map对象. 2.加载矢量数据
(1)通过工作空间工厂的OpenFromFile()方法打开工作空间,然后通过工作空间的OpenFeatureClass(FileName)方法打开要素类。
用到的接口:IWorkspaceFactory、 IWorkspace、 IFeatureWorkspace、 IFeatureClass、IFeatureLayer、ILayer
步骤:通过OpenFiledialog打开文件路径(一系列检查不变)
获取文件路径和文件名称(这里和打开文档不同,为什么) 创建地理空间工厂WorkspaceFactory(怎么创建) 创建地理空间Workspace(怎么创建) 创建要素图层FeatureLayer
为要素图层FeatureLayer定义数据集FeatureClass 将FeatureLayer添加至地图
(2)通过axMapControl1.AddShapeFile(filepath,filename)加载 3.加载栅格数据
用到的接口及关键步骤:
IWorkspaceFactory、IWorkspace、IRasterWorkspace、
IRasterDataset :pRasterDataset = pRasterWorkspace.OpenRasterDataset(Name); IRasterPyramid3(影像金字塔的判断与创建)
IRaster:pRaster=pRasterDataset.CreateDefaultRaster()、 IRasterLayer :pRasterLayer.CreateFromRaster(pRaster); ILayer :pLayer = pRasterLayer as ILayer;
4.加载常用数据源的步骤:
1创建数据对应的工作空间工厂(workspaceFactory) 2使用WorkspaceFactory创建工作空间(Workspace) 3使用Workspace打开并得到图层的数据集DataSet 4将DataSet赋值给新建图层的数据源 5添加图层到MapControl中进行显示
空间数据显示-图层渲染
ITextSymbol接口是定义文本字符样式的主要接口,它定义的ITextSymbol::Font属性是产生一个TextSymbol符号的关键。程序员可以使用IFontDisp接口来设置字体的大小和是否是粗体、倾斜等属性。
符号化分类:
点符号化ISimpleMarkerSymbol 、ICharacterMarkerSymbol、
线符号化ISimpleLineSymbol、IMarkerLineSymbol、IHashLineSymbol
面符号化ISimpleFillSymbol、 ILineFillSymol 、IMarkerFillSymol 、IMultiLyerFillSymbol 文本符号化ITextSymbol 、 ISimpleTextSymbol 和 IFormattedTextSymbol 步骤:
//第一步,获取图层Layer,并转换为IGeoFeatureLayer ILayer pLayer=new FeatureLayerClass(); pLayer = map.get_Layer(0);
IGeoFeatureLayer pGeoFeatureLayer = pLayer as IGeoFeatureLayer; //第二步,定义渲染器,获取符号
ISimpleRenderer pSimpleRender = new SimpleRenderer();
pSimpleRender.Symbol = getSimpleMarkerSymbol(120, 120, 120, 2, 60, 2); //第三步,将获取到的符号渲染到获取到的图层上
pGeoFeatureLayer.Renderer = pSimpleRender as IFeatureRenderer;