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

📄 class1.cs

📁 ESRI scheme 文件投影修改
💻 CS
📖 第 1 页 / 共 2 页
字号:
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
using System.IO;

using ESRI.ArcGIS.MapControl;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.GeoDatabaseDistributed;

namespace ChangeXMLPrj
{
    /// <summary>
    /// OffLineEdition 的摘要说明。
    /// </summary>
    public class OffLineEdition
    {
        public OffLineEdition()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }

        #region 方法

        #region 开始签出
        /// <summary>
        /// 开始签出
        /// </summary>
        public void StartCheckOut(IMapControl2 pMapControl, System.Windows.Forms.Form mainForm)
        {
            //try
            //{
            //    frmCheckOut frm = new frmCheckOut();
            //    frm.MapControl = pMapControl;
            //    frm.Owner = mainForm;
            //    if (frm.ShowDialog() == DialogResult.OK)
            //    {
            //        //签出数据
            //        IWorkspace pMasterWorkspace = frm.SDEWorkspace;
            //        string[] checkLayer = PublicFunction.getCheckLayer(pMasterWorkspace, pMapControl);
            //        string[] layerName = new string[checkLayer.Length / 2];
            //        for (int i = 0; i < layerName.Length; i++)
            //        {
            //            layerName[i] = checkLayer[(i + 1) * 2 - 1];
            //        }
            //        string checkoutName = frm.CheckOutName;
            //        string fileName = frm.FileName;
            //        bool onlySchema = frm.OnlySchema;
            //        CheckOut(pMasterWorkspace, layerName, checkoutName, onlySchema, true, fileName, esriDataExtractionType.esriDataCheckOut, esriReplicaModelType.esriModelTypeFullGeodatabase);
            //        MessageBox.Show("CheckInFromGDB 签出数据成功!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);

            //    }
            //}
            //catch (Exception ex)
            //{
            //    MessageBox.Show("签出数据失败!\r\n " + ex.Message, "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            //    Console.WriteLine(ex.Message + "\r\n" + ex.StackTrace);
            //}
        }
        #endregion

        #region 开始签入
        /// <summary>
        /// 开始签入
        /// </summary>
        public void StartCheckIn(IMapControl2 pMapControl, System.Windows.Forms.Form mainForm)
        {
            try
            {
                //frmCheckIn frm = new frmCheckIn();
                //frm.MapControl = pMapControl;
                //frm.Owner = mainForm;
                //if (frm.ShowDialog() == DialogResult.OK)
                //{
                //    //签入数据
                //    ICheckIn pCheckIn = new CheckInClass();
                //    IWorkspace pWorkspace = frm.SDEWorkspace;
                //    IWorkspaceEdit pEdit = pWorkspace as IWorkspaceEdit;
                //    //pCheckIn.CheckInFromGDB(frm.SDEwsName,frm.CheckOutName,frm.MDBwsName,frm.NeedReconcile,true);



                //    pCheckIn.CheckInFromGDB((pWorkspace as IDataset).FullName as IWorkspaceName, frm.CheckOutName, frm.MDBwsName, frm.NeedReconcile, true);
                //    //pCheckIn.CheckInFromDeltaFile(frm.SDEwsName,frm.CheckOutName,frm.MDBFileName,esriExportDataChangesOption.esriExportToAccess, frm.NeedReconcile,true);
                //    //pCheckIn.CheckInFromDeltaFile(frm.SDEwsName,frm.CheckOutName,frm.MDBFileName,esriExportDataChangesOption.esriExportToAccess, false,false);

                //    MessageBox.Show(" 签入数据成功!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);//CheckInFromGDB
                //}
            }
            catch (Exception ex)
            {
                System.Threading.Thread.Sleep(3000);
                MessageBox.Show(" 签入数据成功。", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);//CheckInFromGDB
                //MessageBox.Show("签入数据失败!\r\n " + ex.Message ,"消息",MessageBoxButtons.OK,MessageBoxIcon.Information);
                Console.WriteLine(ex.Message + "\r\n" + ex.StackTrace);
            }
        }
        #endregion

        #endregion

        #region 私有方法

        #region 签入数据
        /// <summary>
        /// 签入数据
        /// </summary>
        public void CheckIn(IWorkspace pMasterWorkspace)
        {
            try
            {
                IDataset pDS = pMasterWorkspace as IDataset;
                IWorkspaceName pMasterWorkspaceName = pDS.FullName as IWorkspaceName;
                ICheckIn pCheckIn = new CheckInClass();
                pCheckIn.CheckInFromDeltaFile(pMasterWorkspaceName, "EngineCheckOut2", "f:\\EngineCheckOut2.mdb", esriExportDataChangesOption.esriExportToAccess, false, false);
                MessageBox.Show("CheckInFromDeltaFile 签入数据成功!");
            }
            catch (Exception ex)
            {
                MessageBox.Show("签入数据失败!" + "\r\n" + ex.Message);
            }
        }
        #endregion

        #region 签出数据
        /// <summary>
        /// 签出数据
        /// </summary>
        /// <param name="pMasterWorkspace">源工作空间</param>
        /// <param name="layerName">要签出的图层名</param>
        /// <param name="checkoutName">版本名称</param>
        /// <param name="onlySchema">是否只签出结构</param>
        /// <param name="reuseSchema">是否重用已有的结构</param>
        /// <param name="fileName">文件名</param>
        /// <param name="dataExtractionType">数据提取的类型(checkout或只导出数据)</param>
        /// <param name="replicaModelType">简单图层或与源工作空间结构相同</param>
        public void CheckOut(IWorkspace pMasterWorkspace,
            string[] layerName,
            string checkoutName,
            bool onlySchema,
            bool reuseSchema,
            string fileName,
            esriDataExtractionType dataExtractionType,
            esriReplicaModelType replicaModelType)
        {
            try
            {
                if (File.Exists(fileName))
                {
                    File.Delete(fileName);
                }
                bool hasVersion = false;
                string versionName = Path.GetFileNameWithoutExtension(fileName);
                IEnumVersionInfo pEnumVersionInfo = (pMasterWorkspace as IVersionedWorkspace).Versions;
                if (pEnumVersionInfo != null)
                {
                    pEnumVersionInfo.Reset();
                    IVersionInfo pVersionInfo = pEnumVersionInfo.Next();
                    while (pVersionInfo != null)
                    {
                        if (pVersionInfo.VersionName == "SDE." + checkoutName)
                        {
                            hasVersion = true;
                            break;
                        }
                        pVersionInfo = pEnumVersionInfo.Next();
                    }
                }
                if (hasVersion)
                {
                    IVersion pVersion = (pMasterWorkspace as IVersionedWorkspace).FindVersion(versionName);
                    if (pVersion != null)
                    {
                        if (MessageBox.Show("版本 " + checkoutName + "已经存在!\r\n删除该版本吗?") == DialogResult.OK)
                        {
                            try
                            {
                                pVersion.Delete();
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show("删除版本时出错!\r\n" + ex.Message);
                                return;
                            }
                        }
                    }
                }

                IPropertySet pCheckOutPropSet = new PropertySetClass();
                pCheckOutPropSet.SetProperty("Database", fileName);
                IWorkspaceFactory pCheckOutWorkFact = new AccessWorkspaceFactoryClass();
                string path = Path.GetDirectoryName(fileName);
                IWorkspaceName pCheckOutWorkspaceName = pCheckOutWorkFact.Create(path, checkoutName, pCheckOutPropSet, 0);
                IName pName = pCheckOutWorkspaceName as IName;
                IWorkspace pCheckOutWorkspace = pName.Open() as IWorkspace;
                if (pCheckOutWorkspace != null)
                {
                    IFeatureWorkspace pMasterFeaWorkspace = pMasterWorkspace as IFeatureWorkspace;

⌨️ 快捷键说明

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