Ejemplo n.º 1
0
        /// <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);
            }
        }
Ejemplo n.º 2
0
        /// <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);
        }