/// <summary> /// 获取初始化后的各种工作空间 /// </summary> /// <param name="sSourceFile"></param> /// <param name="pSourceType"></param> /// <returns></returns> public IFeatureWorkspace GetFeatureWorkspace(string sSourceFile, WorkspaceSource pSourceType) { try { if ((string.IsNullOrEmpty(sSourceFile) | !File.Exists(sSourceFile)) & (string.IsNullOrEmpty(sSourceFile) | !Directory.Exists(sSourceFile))) { MessageBox.Show("数据文件 " + sSourceFile + " 丢失。", "打开工作空间错误", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(null); } IWorkspaceFactory factory = null; WorkspaceSource source = pSourceType; if (source <= WorkspaceSource.esriWSStreetMapWorkspaceFactory) { if (source < WorkspaceSource.esriWSAccessWorkspaceFactory) { goto Label_010D;//当source<1.返回空 } switch (((int)(source - 1L))) { case 0: factory = new AccessWorkspaceFactoryClass(); goto Label_0111; case 1: case 4: case 5: case 7: case 8: case 10: goto Label_010D; case 2: factory = new ArcInfoWorkspaceFactoryClass(); goto Label_0111; case 3: factory = new CadWorkspaceFactoryClass(); goto Label_0111; case 6: factory = new PCCoverageWorkspaceFactoryClass(); goto Label_0111; case 9: factory = new SDCWorkspaceFactoryClass(); goto Label_0111; case 11: factory = new ShapefileWorkspaceFactoryClass(); goto Label_0111; case 12: factory = new StreetMapWorkspaceFactoryClass() as IWorkspaceFactory; goto Label_0111; } } if ((source <= WorkspaceSource.esriWSFileGDBWorkspaceFactory) && (source >= WorkspaceSource.esriWSVpfWorkspaceFactory)) { switch (((int)(source - 0x11L))) { case 0: factory = new VpfWorkspaceFactoryClass(); goto Label_0111; case 1: factory = new FileGDBWorkspaceFactoryClass(); goto Label_0111; } } Label_010D: return(null);//返回空 Label_0111: if (!factory.IsWorkspace(sSourceFile)) { return(null); } return(factory.OpenFromFile(sSourceFile, 0) as IFeatureWorkspace); } catch (Exception exception) { this.mErrOpt.ErrorOperate(this.mSubSysName, "FunFactory.WorkspaceFun", "GetFeatureWorkspace", exception.GetHashCode().ToString(), exception.Source, exception.Message, "", "", ""); return(null); } }
/// <summary> /// Opens the workspace. /// </summary> /// <param name="sFilePath">The s file path.</param> /// <param name="type">The type.</param> /// <returns>IWorkspace.</returns> public static IWorkspace OpenWorkspace(string sFilePath, DataType type) { IWorkspace result; try { sFilePath = sFilePath.TrimEnd(new char[] { '\\' }); IWorkspaceFactory workspaceFactory = null; if (type <= DataType.sde) { switch (type) { case DataType.shp: workspaceFactory = new ShapefileWorkspaceFactoryClass(); //关闭资源锁定 IWorkspaceFactoryLockControl ipWsFactoryLock = (IWorkspaceFactoryLockControl)workspaceFactory; if (ipWsFactoryLock.SchemaLockingEnabled) { ipWsFactoryLock.DisableSchemaLocking(); } break; case DataType.mdb: workspaceFactory = new AccessWorkspaceFactoryClass(); break; case (DataType)3: break; case DataType.gdb: workspaceFactory = new FileGDBWorkspaceFactoryClass(); break; default: if (type == DataType.sde) { workspaceFactory = new SdeWorkspaceFactoryClass(); } break; } } else if (type != DataType.cad) { if (type != DataType.raster) { if (type == DataType.coverage) { workspaceFactory = new ArcInfoWorkspaceFactoryClass(); } } else { workspaceFactory = new RasterWorkspaceFactoryClass(); } } else { workspaceFactory = new CadWorkspaceFactoryClass(); } result = workspaceFactory.OpenFromFile(sFilePath, 0); } catch { result = null; } return(result); }