工作空间是空间和非空间数据集(例如要素类、栅格数据集和表)的容器。IWorkspaceFactory 和 IWorkspace接口将是开发人员使用地理数据库库的主要入口点。
一、 创建地理数据库
-
创建文件地理数据库。
public static IWorkspace CreateFileGdbWorkspace(String path) { // 实例化文件地理数据库工作空间工厂并创建文件地理数据库。 // Create 方法返回一个工作区名称对象。 Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory"); IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType); IWorkspaceName workspaceName = workspaceFactory.Create(path, "Sample.gdb", null, 0); // 将工作区名称对象强制转换为 IName 接口并打开工作区。 IName name = (IName)workspaceName; IWorkspace workspace = (IWorkspace)name.Open(); return workspace; }
-
创建个人地理数据库
public static IWorkspace CreateAccessWorkspace(String path) { Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.AccessWorkspaceFactory"); IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType); IWorkspaceName workspaceName = workspaceFactory.Create(path, "Sample.mdb", null, 0); IName name = (IName)workspaceName; IWorkspace workspace = (IWorkspace)name.Open(); return workspace; }
-
创建企业级 ArcSDE 地理数据库的连接文件
public static IWorkspaceName CreateConnectionFile(String path, String server, String instance, String user, String password, String database, String version) { IPropertySet propertySet = new PropertySetClass(); propertySet.SetProperty("SERVER", server); propertySet.SetProperty("INSTANCE", instance); propertySet.SetProperty("DATABASE", database); propertySet.SetProperty("USER", user); propertySet.SetProperty("PASSWORD", password); propertySet.SetProperty("VERSION", version); Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.SdeWorkspaceFactory"); IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType); return workspaceFactory.Create(path, "Sample.sde", propertySet, 0); }
二、连接地理数据库
-
连接到文件地理数据库
public static IWorkspace FileGdbWorkspaceFromPath(String path) { Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory"); IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType); return workspaceFactory.OpenFromFile(path, 0); }
-
连接到个人地理数据库
public static IWorkspace AccessWorkspaceFromPath(String path) { Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.AccessWorkspaceFactory"); IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType); return workspaceFactory.OpenFromFile(path, 0); }
-
连接临时工作区
public static IWorkspace OpenScratchWorkspace() { Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.ScratchWorkspaceFactory"); IScratchWorkspaceFactory scratchWorkspaceFactory = (IScratchWorkspaceFactory)Activator.CreateInstance(factoryType); IWorkspace scratchWorkspace = scratchWorkspaceFactory.DefaultScratchWorkspace; return scratchWorkspace; }
public static IWorkspace OpenFileGdbScratchWorkspace() { Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBScratchWorkspaceFactory"); IScratchWorkspaceFactory scratchWorkspaceFactory = (IScratchWorkspaceFactory)Activator.CreateInstance(factoryType); IWorkspace scratchWorkspace = scratchWorkspaceFactory.DefaultScratchWorkspace; return scratchWorkspace; }