ArcGIS离线数据编辑【二】
来源:互联网 发布:java运行class文件 编辑:程序博客网 时间:2024/06/07 20:40
在《ArcGIS离线数据编辑【一】》中介绍了ArcGIS的离线数据编辑技术的主要实现过程,本节将在上文的基础上介绍在离线数据编辑中的ArcSDE数据库版本的管理有关内容。
设定当前的ArcSDE数据库中除了默认的Default版本外,在Default版本基础上创建两个子版本V1、V2,并将这三个版本分别赋予sde、Version1、Version2三个用户。
分别以V1、V2两个版本登录,执行相应的离线编辑,确保编辑后的结果在向其父版本提交时存在冲突。
在提交版本过程中,首先使用IWorkspaceEdit4接口的Reconcile4方法进行版本协调,监测是否存在冲突;Reconcile4方法参数要根据冲突解决方案来设定
监测出来的冲突提供了如下三种解决方案:
(1)数据库版本替换当前版本:使用Default版本中的内容替换当前提交的版本。
(2)当前版本替换数据库版本:使用当前提交的编辑版本替换Default版本中的内容。
(3)用户自定义冲突解决方案:根据实际的情况对冲突要素实体逐个解决。
版本提交的源代码:
publicstaticvoid CommitVsn(IWorkspacewsp,clsPublic.ConflictCheck pCheck,AxMapControl sMapCtrl)
{
IWorkspaceEdit pWSE = wspasIWorkspaceEdit;
IVersionEdit4 pVsnE = wspasIVersionEdit4;
try
{
boolbLock = true;
boolbabortIfConflict =false;
boolbChildWin =false;
boolbattributeCheck =true;
if(pCheck == clsPublic.ConflictCheck.Current)
bChildWin = true;
pWSE.StartEditing(false);
if(!pWSE.IsBeingEdited())return;
pWSE.StartEditOperation();
if(!pVsnE.Reconcile4(“SDE.DEFAULT”, bLock, babortIfConflict, bChildWin,battributeCheck))
{
if(pVsnE.CanPost())
{
pVsnE.Post(“SDE.DEFAULT”);
pWSE.StopEditOperation();
}
else
{
pWSE.AbortEditOperation();
}
pWSE.StopEditing(true);
}
else
{
if(pCheck == clsPublic.ConflictCheck.UserDefine)
{
//用户自定义处理过程
SortedList<string,IConflictClass>sConflictClassLst =newSortedList<string,IConflictClass>();
IVersionEdit pVsnEdit = wspasIVersionEdit;
CheckConflictClass(pVsnEdit, sConflictClassLst);
if (sConflictClassLst.Count == 0)
{
pVsnE.Post(“SDE.DEFAULT”);
pWSE.StopEditOperation();
pWSE.StopEditing(true);
}
else
{
frmManageConflict pfrm =newfrmManageConflict(pVsnEdit,sConflictClassLst,sMapCtrl);
pfrm.ShowDialog();
bool bAllManage = pfrm.IsAllManage;
pfrm.Dispose();
if (bAllManage)
{
pVsnE.Post(“SDE.DEFAULT”);
pWSE.StopEditOperation();
pWSE.StopEditing(true);
}
else
{
pWSE.AbortEditOperation();
pWSE.StopEditing(false);
}
}
}
elseif (pCheck ==clsPublic.ConflictCheck.Current)
{
pVsnE.Post(“SDE.DEFAULT”);
pWSE.StopEditOperation();
pWSE.StopEditing(true);
}
elseif (pCheck ==clsPublic.ConflictCheck.DataBase)
{
pWSE.StopEditOperation();
pWSE.StopEditing(true);
}
}
MessageBox.Show(“版本提交完毕!“,“提示“, MessageBoxButtons.OK,MessageBoxIcon.Information);
}
catch (Exception pEr)
{
MessageBox.Show(pEr.Message,“提示“,MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
pWSE.AbortEditOperation();
pWSE.StopEditing(false);
}
}
- ArcGIS离线数据编辑【二】
- ArcGIS离线数据编辑【一】
- ArcGIS for Android 离线数据编辑原理
- ArcGIS for Android离线数据编辑实现原理
- 【技术直通车】ArcGIS for Android离线数据编辑实现原理
- ArcGIS for Android离线数据编辑实现原理
- ArcGIS Runtime for .Net Quartz开发探秘(七):外业数据采集-离线数据编辑
- Arcgis for Android离线数据下载
- ArcGIS for Android 离线数据图例加载
- 【Arcgis android】 离线编辑实现及一些代码段
- ArcGIS Server flex实现在线数据编辑
- ArcGIS Runtime数据加载及编辑同步
- ArcGIS Runtime数据加载及编辑同步
- ArcGIS for Android 离线数据空间查询--I查询
- ArcGIS for Android 离线数据空间分析--叠加分析
- ArcGIS Runtime加载本地Shape数据和编辑Shape数据
- ArcGIS Runtime加载本地shape数据和编辑shape数据
- ArcGIS Runtime加载本地Shape数据和编辑Shape数据
- android handler消息机制
- 启动“附近的人”功能,你有兴趣吗?
- IE浏览时出现“为了帮助保护你的计算机,Windows已经关闭了此程序”等提示,如何处理?
- 强烈推荐:240多个jQuery插件
- 指针的大小
- ArcGIS离线数据编辑【二】
- 高效使用Bitmaps(三) 神奇的Cache
- struts2中Convention中的basePackage与locators配置种种
- hdu1068 二分图最大独立子集
- 看懂ppc 彙編 必備
- 判断浏览器是否为IE
- Latex 初学者入门(四)-- 多个作者共享同一个地址
- String的"+"-StringBuilder-StringBuffer比较
- 2013年底互联网电子商务行业技术类职位招聘