ArcGIS数据访问途径简单介绍
ArcGIS数据访问比较简单,有现成的组件可以利用,主要有两种方式,一种是通过图层访问,一种是IWorkspace方式访问
一、通过图层访问
a.通过MxDocument访问地图图层
[C#]
IMap pMap; IMaps pMaps = pMxDocument.Maps; for (int i = 0; i <= pMaps.Count - 1; i++) { pMap = pMaps.get_Item(i); Console.WriteLine(pMap.Name); IEnumLayer pEnumLayer = pMap.get_Layers(null, true); pEnumLayer.Reset(); ILayer pLayer = pEnumLayer.Next(); while (pLayer != null) { Console.WriteLine(pLayer.Name); pLayer = pEnumLayer.Next(); } }
b.通过MapDocument访问地图图层,不需要ArcMap,直接读.mxd文件
[C#]
IMapDocument pMapDocument = new MapDocumentClass(); if (pMapDocument.get_IsMapDocument(path)) { pMapDocument.Open(path, null); IMap pMap; for (int i = 0; i <= pMapDocument.MapCount - 1; i++) { pMap = pMapDocument.get_Map(i); Console.WriteLine(pMap.Name); IEnumLayer pEnumLayer = pMap.get_Layers(null, true); pEnumLayer.Reset(); ILayer pLayer = pEnumLayer.Next(); while (pLayer != null) { Console.WriteLine(pLayer.Name); pLayer = pEnumLayer.Next(); } } }
二、通过IWorkspace访问GeoDatabase
可以通过IWorkspace访问三种GeoDatabase:Personal、File、ArcSDE
建立File型GeoDatabase数据库连接
[C#]
// For example, path = @"C:\myData\myfGDB.gdb". public static IWorkspace FileGdbWorkspaceFromPath(String path) { Type factoryType = Type.GetTypeFromProgID( "esriDataSourcesGDB.FileGDBWorkspaceFactory"); IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance (factoryType); return workspaceFactory.OpenFromFile(path, 0); }
建立Personal型GeoDatabase数据库连接
[C#]
// For example, path = @"C:\myData\mypGDB.mdb". public static IWorkspace AccessWorkspaceFromPath(String path) { Type factoryType = Type.GetTypeFromProgID( "esriDataSourcesGDB.AccessWorkspaceFactory"); IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance (factoryType); return workspaceFactory.OpenFromFile(path, 0); }
通过IFeatureWorkspace访问要素类
[C#]
// Cast the workspace to IFeatureWorkspace and open a feature class. IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace; IFeatureClass featureClass = featureWorkspace.OpenFeatureClass("Parcels");