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");
posted @ 2011-11-10 21:31  xmwang  阅读(853)  评论(0编辑  收藏  举报