示例#1
0
        /// <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);
        }