📄 class1.cs
字号:
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 + -