⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 class1.cs

📁 ESRI scheme 文件投影修改
💻 CS
📖 第 1 页 / 共 2 页
字号:
                    IFeatureClass pFeaClass;
                    IDataset pDS;
                    IEnumNameEdit pEnumNameEdit = new NamesEnumeratorClass();
                    IEnumName pEnumName;

                    IReplicaDescription pRepDescription = new ReplicaDescriptionClass();
                    for (int i = 0; i < layerName.Length; i++)
                    {
                        pFeaClass = pMasterFeaWorkspace.OpenFeatureClass(layerName[i]);
                        pDS = pFeaClass as IDataset;
                        pEnumNameEdit.Add(pDS.FullName as IName);
                    }
                    pEnumName = pEnumNameEdit as IEnumName;
                    pRepDescription.Init(pEnumName, pCheckOutWorkspaceName, reuseSchema, dataExtractionType);
                    pRepDescription.ReplicaModelType = replicaModelType;//简单图层类型或与SDE数据库一样
                    ICheckOut pCheckOut = new CheckOutClass();
                    pCheckOut.CheckOutData(pRepDescription, true, checkoutName);
                    pCheckOutWorkspace = null;
                    GC.Collect();
                    //MessageBox.Show("签出数据成功!");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message + "\r\n" + ex.StackTrace);
                //MessageBox.Show("签出数据失败!" + "\r\n" + ex.Message);
            }
        }
        #endregion

        #endregion

        #region 测试

        #region 签入==测试
        /// <summary>
        /// 签入数据 //测试使用
        /// </summary>
        public void CheckIn()
        {
            try
            {
                IWorkspaceName pMasterWorkspaceName;
                IWorkspaceName pCheckOutWorkspaceName;
                IWorkspace pCheckOutWorkspace;
                IWorkspace pMasterWorkspace;
                IWorkspaceReplicas pCheckOutWorkspaceRelicas;
                IReplica pCheckOutReplica;
                IWorkspaceFactory pCheckOutWorkFact;
                IWorkspaceFactory pMasterWorkFact;
                IPropertySet pMasterPropSet;
                IPropertySet pCheckOutPropSet;
                IDataset pDataset;
                ICheckIn pCheckIn;

                pCheckOutPropSet = new PropertySetClass();
                pCheckOutPropSet.SetProperty("Database", "f:\\EngineCheckOut2.mdb");
                pCheckOutWorkFact = new AccessWorkspaceFactoryClass();
                pCheckOutWorkspace = pCheckOutWorkFact.Open(pCheckOutPropSet, 0);
                if (pCheckOutWorkspace != null)
                {
                    pCheckOutWorkspaceName = (pCheckOutWorkspace as IDataset).FullName as IWorkspaceName;

                    pCheckOutWorkspaceRelicas = pCheckOutWorkspace as IWorkspaceReplicas;
                    pCheckOutWorkspaceRelicas.Replicas.Reset();
                    pCheckOutReplica = pCheckOutWorkspaceRelicas.Replicas.Next();
                    if (pCheckOutReplica == null)
                    {
                        MessageBox.Show("从PGDB中找不到版本信息!");
                        return;
                    }
                    IPropertySet pPropertySet = new PropertySetClass();
                    pPropertySet.SetProperty("SERVER", "192.168.16.62");
                    pPropertySet.SetProperty("INSTANCE", "5151");
                    pPropertySet.SetProperty("DATABASE", "");
                    pPropertySet.SetProperty("USER", "sde");
                    pPropertySet.SetProperty("PASSWORD", "sde");
                    pPropertySet.SetProperty("VERSION", "SDE.tt");

                    pMasterWorkFact = new SdeWorkspaceFactoryClass();
                    pMasterWorkspace = pMasterWorkFact.Open(pPropertySet, 0);
                    IDataset pMasterDataset;
                    //pMasterDataset = (pMasterWorkspace as IFeatureWorkspace).OpenFeatureClass("DATA.k250_index") as IDataset;
                    pMasterDataset = pMasterWorkspace as IDataset;
                    pMasterWorkspaceName = pMasterDataset.FullName as IWorkspaceName;
                    pCheckIn = new CheckInClass();
                    pCheckIn.CheckInFromGDB(pMasterWorkspaceName, pCheckOutReplica.Name, pCheckOutWorkspaceName, true, true);//pCheckOutReplica.Name
                }
                MessageBox.Show("签入数据成功!");
            }
            catch (Exception ex)
            {
                MessageBox.Show("签入数据失败!" + "\r\n" + ex.Message);
            }
        }
        #endregion

        #region 签出==测试
        /// <summary>
        /// 签出数据//测试使用
        /// </summary>
        public void CheckOut(IWorkspace pMasterWorkspace)
        {
            try
            {
                IPropertySet pCheckOutPropSet;
                IWorkspaceFactory pCheckOutWorkFact;
                IWorkspaceName pCheckOutWorkspaceName;
                IName pName;
                IWorkspace pCheckOutWorkspace;

                pCheckOutPropSet = new PropertySetClass();
                //检查PGDB     path + "\\" + fileName.mdb 是否已经存在
                string file = "f:\\EngineCheckOut2.mdb";
                if (File.Exists(file))
                {
                    File.Delete(file);
                }
                //检查版本名称为 fileName 的版本是否存在
                bool hasVersion = false;
                string versionName = Path.GetFileNameWithoutExtension(file);
                IEnumVersionInfo pEnumVersionInfo = (pMasterWorkspace as IVersionedWorkspace).Versions;
                if (pEnumVersionInfo != null)
                {
                    pEnumVersionInfo.Reset();
                    IVersionInfo pVersionInfo = pEnumVersionInfo.Next();
                    while (pVersionInfo != null)
                    {
                        if (pVersionInfo.VersionName == "SDE." + versionName)
                        {
                            hasVersion = true;
                            break;
                        }
                        pVersionInfo = pEnumVersionInfo.Next();
                    }
                }
                if (hasVersion)
                {
                    IVersion pVersion = (pMasterWorkspace as IVersionedWorkspace).FindVersion(versionName);
                    if (pVersion != null)
                    {
                        if (MessageBox.Show("版本 " + Path.GetFileNameWithoutExtension(file) + "已经存在!\r\n删除改版本吗?") == DialogResult.OK)
                        {
                            try
                            {
                                pVersion.Delete();
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show("删除版本时出错!\r\n" + ex.Message);
                            }
                        }
                    }
                }
                pCheckOutPropSet.SetProperty("Database", file);
                pCheckOutWorkFact = new AccessWorkspaceFactoryClass();
                pCheckOutWorkspaceName = pCheckOutWorkFact.Create("f:\\", "EngineCheckOut2", pCheckOutPropSet, 0);
                pName = pCheckOutWorkspaceName as IName;
                pCheckOutWorkspace = pName.Open() as IWorkspace;
                if (pCheckOutWorkspace != null)
                {
                    IFeatureWorkspace pMasterFeaWorkspace = pMasterWorkspace as IFeatureWorkspace;
                    IFeatureClass pFeaClass = pMasterFeaWorkspace.OpenFeatureClass("DATA.k250_index");
                    IDataset pDS = pFeaClass as IDataset;
                    IEnumNameEdit pEnumNameEdit = new NamesEnumeratorClass();
                    pEnumNameEdit.Add(pDS.FullName);
                    IEnumName pEnumName = pEnumNameEdit as IEnumName;
                    IReplicaDescription pRepDescription = new ReplicaDescriptionClass();
                    pRepDescription.Init(pEnumName, pCheckOutWorkspaceName, false, esriDataExtractionType.esriDataCheckOut);
                    pRepDescription.ReplicaModelType = esriReplicaModelType.esriModelTypeFullGeodatabase;
                    ICheckOut pCheckOut = new CheckOutClass();
                    pCheckOut.CheckOutData(pRepDescription, true, "EngineCheckOut2");
                    //System.Runtime.InteropServices.Marshal.ReleaseComObject(pCheckOutWorkspace);
                    pCheckOutWorkspace = null;
                    GC.Collect();
                    MessageBox.Show("签出数据成功!");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("签出数据失败!" + "\r\n" + ex.Message);
            }
        }
        #endregion

        #endregion

        //        /// <summary>
        //        /// 签出管理
        //        /// </summary>
        //        public void CheckOutManage()
        //        {
        //        }
        //
        //        /// <summary>
        //        /// 提取数据
        //        /// </summary>
        //        public void ExtractData()
        //        {
        //        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -