ArcGIS数据访问途径简单介绍

本文介绍了ArcGIS中两种主要的数据访问方法:通过图层访问和通过IWorkspace访问GeoDatabase。通过图层访问包括使用MxDocument和MapDocument访问地图图层;通过IWorkspace访问则涉及建立不同类型的GeoDatabase连接,并通过IFeatureWorkspace访问要素类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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");

转载于:https://www.cnblogs.com/xmwang/archive/2011/11/10/2244974.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值