/// <summary> /// 获取Workspace /// </summary> /// <param name="dataPath"></param> /// <param name="dataType"></param> /// <returns></returns> public IWorkspace GetWorkspace(string dataPath, string dataType) { IWorkspaceFactory pWorkspaceFactory = null; IWorkspace pWorkspace = null; IPropertySet pPropertySet = new PropertySetClass(); int index; string filePath = ""; string dataTypeName = dataType.ToLower(); //根据不同的数据类型获取不同的WorkspaceFactory,设置不同的IPropertySet参数 switch (dataTypeName) { //mdb类型的dataPath为mdb本身的全路径 case "mdb": pPropertySet.SetProperty("DATABASE", dataPath); pWorkspaceFactory = new AccessWorkspaceFactoryClass(); break; //shp类型的dataPath为其父文件夹的全路径 case "shp": index = dataPath.LastIndexOf("\\"); filePath = dataPath.Substring(0, index); pPropertySet.SetProperty("DATABASE", filePath); pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); break; //dwg类型的dataPath为其父文件夹的全路径 case "dwg": index = dataPath.LastIndexOf("\\"); filePath = dataPath.Substring(0, index); pPropertySet.SetProperty("DATABASE", filePath); pWorkspaceFactory = new CadWorkspaceFactoryClass(); break; //gdb类型的dataPath为gdb文件夹的全路径 case "gdb": pPropertySet.SetProperty("DATABASE", dataPath); pWorkspaceFactory = new FileGDBWorkspaceFactoryClass(); break; case "jpg": case "bmp": case "tif": index = dataPath.LastIndexOf("\\"); filePath = dataPath.Substring(0, index); pPropertySet.SetProperty("DATABASE", filePath); pWorkspaceFactory = new RasterWorkspaceFactoryClass(); break; default: break; } pPropertySet.SetProperty("DATABASE", dataPath); pWorkspace = pWorkspaceFactory.Open(pPropertySet, 0); return(pWorkspace); }