AE创建个人地理数据库MDB及文件地理数据库GDB

        在ArcGIS二次开发中,不可避免的需要创建或打开工作空间用于存放要素类、栅格数据集和表。例如文件系统工作空间有Shapefile工作空间、文件地理数据库(gdb)、个人地理数据库(mdb);

附上代码,打开工作空间,若不存在则创建:

/// <summary>
/// 打开临时地理数据库若不存在则创建
/// </summary>
/// <param name="filePath">文件路径例如:shp:"F:\\GIS测试数据\\hhh\\111.shp"  mdb:"F:\\GIS测试数据\\111.mdb"  gdb:"F:\\GIS测试数据\\111.gdb"</param>
/// <returns></returns>
public static IWorkspace GetWorkspace2(string filePath)
{
    string sPathFloder = System.IO.Path.GetDirectoryName(filePath);
    string sPathName = System.IO.Path.GetFileName(filePath);
    string sFileExtension = System.IO.Path.GetExtension(filePath).ToUpper();
    if (!Directory.Exists(sPathFloder))
        Directory.CreateDirectory(sPathFloder);

    // Instantiate a workspace factory if not exists then create a workspace.
    IWorkspaceName pWorkspaceName = null;
    string sWorkspaceId = "esriDataSourcesGDB.FileGDBWorkspaceFactory";
    switch (sFileExtension)
    {
        case ".GDB":
            sWorkspaceId = "esriDataSourcesGDB.FileGDBWorkspaceFactory";
            if (!Directory.Exists(filePath))
                pWorkspaceName = ((IWorkspaceFactory)Activator.CreateInstance(Type.GetTypeFromProgID(sWorkspaceId))).Create(sPathFloder, sPathName, null, 0);
            else
                pWorkspaceName = new WorkspaceNameClass()
                {
                    WorkspaceFactoryProgID = sWorkspaceId,
                    PathName = filePath
                };
            break;
        case ".MDB":
            sWorkspaceId = "esriDataSourcesGDB.AccessWorkspaceFactory";
            if(!File.Exists(filePath))
                pWorkspaceName = ((IWorkspaceFactory)Activator.CreateInstance(Type.GetTypeFromProgID(sWorkspaceId))).Create(sPathFloder, sPathName, null, 0);
            else
                pWorkspaceName = new WorkspaceNameClass()
                {
                    WorkspaceFactoryProgID = sWorkspaceId,
                    PathName = filePath
                };
            break;
        case ".SHP":
            sWorkspaceId = "esriDataSourcesFile.ShapefileWorkspaceFactory";
            pWorkspaceName = new WorkspaceNameClass()
            {
                WorkspaceFactoryProgID = sWorkspaceId,
                PathName = sPathFloder
            };
            break;
    }

    // Cast the workspace name object to the IName interface and open the workspace.
    IName name = (IName)pWorkspaceName;
    IWorkspace workspace = (IWorkspace)name.Open();
    return workspace;
}

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值