You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
762 lines
34 KiB
762 lines
34 KiB
using ESRI.ArcGIS.Carto; |
|
using ESRI.ArcGIS.DataManagementTools; |
|
using ESRI.ArcGIS.esriSystem; |
|
using ESRI.ArcGIS.Geodatabase; |
|
using ESRI.ArcGIS.Geoprocessor; |
|
using ExcelDataReader; |
|
using KGIS.Framework.AE; |
|
using KGIS.Framework.AE.GPHelper; |
|
using KGIS.Framework.Maps; |
|
using KGIS.Framework.OpenData.Control; |
|
using KGIS.Framework.OpenData.Filter; |
|
using KGIS.Framework.OpenData.InterFace; |
|
using KGIS.Framework.Platform; |
|
using KGIS.Framework.Utils; |
|
using KGIS.Framework.Utils.ExtensionMethod; |
|
using KGIS.Framework.Utils.Helper; |
|
using Kingo.PluginServiceInterface; |
|
using Kingo.PluginServiceInterface.Model; |
|
using KUI.Windows; |
|
using System; |
|
using System.Collections.Generic; |
|
using System.Collections.ObjectModel; |
|
using System.Data; |
|
using System.IO; |
|
using System.Linq; |
|
using System.Runtime.InteropServices; |
|
using System.Windows; |
|
using System.Windows.Controls; |
|
using System.Windows.Forms; |
|
using OpenFileDialog = KGIS.Framework.Utils.Dialog.OpenFileDialog; |
|
using UserControl = System.Windows.Controls.UserControl; |
|
|
|
namespace Kingo.Plugin.YJJK.View |
|
{ |
|
/// <summary> |
|
/// ViewDLTB_TQ.xaml 的交互逻辑 |
|
/// </summary> |
|
public partial class ViewDLTB_TQ : UserControl, IWizardFramework |
|
{ |
|
private IFeatureLayer SelLocation_Layer = null; |
|
List<DataDicTionary> Dics_QS = null;//权属字典 |
|
ObservableCollection<ZLXXInfo> ListZLXXInfo = null;//坐落信息变化数据 |
|
ProjectInfo projInfo = MapsManager.Instance.CurrProjectInfo as ProjectInfo; |
|
|
|
#region IWizardFramework接口属性 |
|
/// <summary> |
|
/// 向导步骤间的参数传递 |
|
/// </summary> |
|
public object Parameter |
|
{ |
|
get; |
|
set; |
|
} |
|
|
|
private string m_strDescription = "此步骤将会提取地类图斑更新层和更新过程层数据"; |
|
/// <summary> |
|
/// 描述 |
|
/// </summary> |
|
public string Description |
|
{ |
|
get { return m_strDescription; } |
|
set { m_strDescription = value; } |
|
} |
|
|
|
private string m_strCaption = "地类图斑数据提取"; |
|
/// <summary> |
|
/// 标题 |
|
/// </summary> |
|
public string Caption |
|
{ |
|
get { return m_strCaption; } |
|
set { m_strCaption = value; } |
|
} |
|
|
|
private bool m_bIsFinalSuccess = false; |
|
/// <summary> |
|
/// 标识是否是最后一步 |
|
/// </summary> |
|
public bool IsFinalSuccess |
|
{ |
|
get { return m_bIsFinalSuccess; } |
|
set { m_bIsFinalSuccess = value; } |
|
} |
|
private bool m_IsSkip = false; |
|
public bool IsSkip |
|
{ |
|
get { return m_IsSkip; } |
|
set { m_IsSkip = value; } |
|
} |
|
|
|
#endregion |
|
public ViewDLTB_TQ() |
|
{ |
|
InitializeComponent(); |
|
Dics_QS = Platform.Instance.DicHelper.GetNoGroupDic(DicTypeEnum.QSDM).ToLookup(x => x.CODE).ToDictionary(x => x.Key, x => x.First()).Values.ToList(); |
|
if (projInfo.ListZLXXInfo != null && projInfo.ListZLXXInfo.Count > 0) |
|
{ |
|
ListZLXXInfo = projInfo.ListZLXXInfo; |
|
} |
|
else |
|
{ |
|
ListZLXXInfo = new ObservableCollection<ZLXXInfo>(); |
|
} |
|
gvCtrl.ItemsSource = ListZLXXInfo; |
|
System.Windows.Controls.ComboBoxItem comboBoxItem = new System.Windows.Controls.ComboBoxItem(); |
|
comboBoxItem.Tag = MapsManager.Instance.MapService.GetFeatureClassByName("DLTBBG"); |
|
comboBoxItem.Content = "变更图斑"; |
|
combBGTB.Items.Add(comboBoxItem); |
|
combBGTB.SelectedItem = comboBoxItem; |
|
comboBoxItem = new System.Windows.Controls.ComboBoxItem(); |
|
comboBoxItem.Tag = MapsManager.Instance.MapService.GetFeatureLayerByLayerName("地类图斑"); |
|
comboBoxItem.Content = "地类图斑"; |
|
combJCDLTB.Items.Add(comboBoxItem); |
|
combJCDLTB.SelectedItem = comboBoxItem; |
|
} |
|
|
|
private void btn_oK_Click(object sender, RoutedEventArgs e) |
|
{ |
|
IFeatureClass BGFeatureClass = null; |
|
IFeatureLayer JCFeatureLayer = null; |
|
IFeatureClass GXGCFC = null;//更新过程层 |
|
IFeatureClass GXFC = null;//更新层 |
|
try |
|
{ |
|
var combBGTBItem = combBGTB.SelectedItem as System.Windows.Controls.ComboBoxItem; |
|
if (combBGTBItem != null) |
|
BGFeatureClass = combBGTBItem.Tag as IFeatureClass; |
|
var combDLTBItem = combJCDLTB.SelectedItem as System.Windows.Controls.ComboBoxItem; |
|
if (combDLTBItem != null) |
|
JCFeatureLayer = combDLTBItem.Tag as IFeatureLayer; |
|
|
|
if (JCFeatureLayer != null && JCFeatureLayer.FeatureClass.FindField("XZQTZLX") == -1) |
|
{ |
|
//添加字段 |
|
IFieldEdit _field = new FieldClass(); |
|
_field.Name_2 = "XZQTZLX"; |
|
_field.AliasName_2 = "行政区调整类型"; |
|
_field.Type_2 = esriFieldType.esriFieldTypeString; |
|
_field.Length_2 = 1; |
|
JCFeatureLayer.FeatureClass.AddField(_field as IField); |
|
} |
|
|
|
if (BGFeatureClass == null) |
|
{ |
|
MessageHelper.ShowTips("变更图斑图层读取失败!"); |
|
return; |
|
} |
|
if (JCFeatureLayer == null) |
|
{ |
|
MessageHelper.ShowTips("基础地类图斑图层读取失败!"); |
|
return; |
|
} |
|
GXGCFC = MapsManager.Instance.MapService.GetFeatureClassByName("DLTBGXGC"); //地类图斑更新过程 |
|
GXFC = MapsManager.Instance.MapService.GetFeatureClassByName("DLTBGX"); //地类图斑更新层 |
|
if (GXFC == null) |
|
{ |
|
MessageHelper.ShowTips("地类图斑更新层读取失败!"); |
|
return; |
|
} |
|
if (GXGCFC == null) |
|
{ |
|
MessageHelper.ShowTips("地类图斑更新过程层读取失败!"); |
|
return; |
|
} |
|
#region 查询数据中是否存在未填写必要属性的数据 DLBM/ZLDWDM/QSDWDM |
|
ITable bgtbTb = BGFeatureClass as ITable; |
|
var count = bgtbTb.RowCount(new QueryFilterClass() { WhereClause = "DLBM='' or ZLDWDM='' or QSDWDM='' " }); |
|
if (count > 0) |
|
{ |
|
if (MessageHelper.ShowYesNoAndTips($"检测到变更图斑存在{count}条数据中地类编码,坐落单位代码,坐落单位名称等必要信息未赋值,是否继续提取?") == System.Windows.Forms.DialogResult.No) |
|
{ |
|
return; |
|
} |
|
} |
|
#endregion |
|
//this.ShowLoading("正在生成地类图斑更新层/更新过程层,请稍后...", 0, 0); |
|
//btn_oK.IsEnabled = false; |
|
//btn_nO.IsEnabled = false; |
|
IFeatureLayer jcDLTBLayer = MapsManager.Instance.MapService.GetFeatureLayerByLayerName("地类图斑"); |
|
if (jcDLTBLayer == null) |
|
{ |
|
MessageHelper.ShowTips("未找到基础库地类图斑图层"); |
|
return; |
|
} |
|
IDGParameter Parm = new IDGParameter(); |
|
ProjectInfo prjInfo = MapsManager.Instance.CurrProjectInfo as ProjectInfo; |
|
Parm.StrProjInfo = System.IO.Path.Combine(prjInfo.ProjDir, prjInfo.ProjName + prjInfo.ProjSuffix); |
|
Parm.ExeDLTB = true; |
|
//ProcesHelper.Instance.ProgressHandle = (o) => |
|
//{ |
|
// this.UpdateMsg(o.ToString()); |
|
//}; |
|
string result = ProcesHelper.Instance.ExeGPForProces(Parm); |
|
|
|
//this.CloseLoading(); |
|
if (result.Contains("Err")) |
|
{ |
|
MessageHelper.ShowTips("地类图斑数据提取失败,失败信息请查看系统日志!"); |
|
} |
|
else |
|
{ |
|
MessageHelper.ShowTips("地类图斑数据提取完成!"); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
//this.CloseLoading(); |
|
MessageHelper.ShowError($"地类图斑数据提取失败:{ex.Message}"); |
|
} |
|
finally |
|
{ |
|
//btn_oK.IsEnabled = true; |
|
//btn_nO.IsEnabled = true; |
|
} |
|
} |
|
private void BtnSelTB_Click(object sender, RoutedEventArgs e) |
|
{ |
|
IFeatureClass BGFeatureClass = null; |
|
try |
|
{ |
|
string xzdltbPaths = ""; |
|
IFeatureClass dltbFc = GetFeatureClass("请选择新增的地类图斑数据", ref xzdltbPaths); |
|
if (dltbFc != null) |
|
{ |
|
btnNewData.Text = xzdltbPaths; |
|
SelLocation_Layer = GeoDBAPI.CreateFeatureLayerInmemeory("SelLocation", "选择范围图斑数据", (dltbFc as IGeoDataset).SpatialReference, dltbFc.ShapeType, dltbFc.Fields); |
|
(SelLocation_Layer.FeatureClass as ITable).DeleteSearchedRows(null); |
|
InsertDataToMemeoryLayer(dltbFc, SelLocation_Layer.FeatureClass, null); |
|
#region 选择的图斑与基础数据库相交,获取图形 并赋 QSDWDM 与 ZLDWDM |
|
if (SelLocation_Layer != null && SelLocation_Layer.FeatureClass.FeatureCount(null) > 0) |
|
{ |
|
this.ShowLoading("正在根据矢量数据范围提取变更图斑,请稍后...", 0, 0); |
|
IFeatureLayer JClayer = MapsManager.Instance.MapService.GetFeatureLayerByLayerName("地类图斑"); |
|
BGFeatureClass = MapsManager.Instance.MapService.GetFeatureClassByName("DLTBBG"); |
|
IFeatureLayer JCDLTB_DLTBBGLayer = null; |
|
IFeatureLayer TempErase = null; |
|
string resultPath = Path.Combine(SysAppPath.GetCurrentAppPath(), "Temp\\ZLBG_DLTB"); |
|
if (!Directory.Exists(resultPath)) |
|
{ |
|
Directory.CreateDirectory(resultPath); |
|
} |
|
else |
|
{ |
|
try |
|
{ |
|
DelectDirect(resultPath); |
|
} |
|
catch (Exception ex) { } |
|
} |
|
string savePath = Path.Combine(resultPath, "TempGDB.gdb"); |
|
string templeteGDBPath = Path.Combine(SysAppPath.GetCurrentAppPath(), "Template", "TempGDB.gdb"); |
|
CopyDirectory(templeteGDBPath, savePath, true); |
|
string outPath = Path.Combine(savePath, "ZLBG_DLTB"); |
|
GPParamClass gPParamClass = new GPParamClass() |
|
{ |
|
FirstFeatureLayer = SelLocation_Layer, |
|
SecondFeatureLayer = new FeatureLayerClass() { FeatureClass = BGFeatureClass }, |
|
OutFeatureClassPath = $"{savePath}\\erase", |
|
IsGetOutPutFeature = true, |
|
PreserveAttributes = "ALL" |
|
}; |
|
GeoprocessorHelper.EraseAnalysis(gPParamClass, ref TempErase); |
|
gPParamClass = new KGIS.Framework.AE.GPHelper.GPParamClass |
|
{ |
|
FirstFeatureLayer = TempErase, |
|
SecondFeatureLayer = JClayer, |
|
OutFeatureClassPath = outPath, |
|
IsGetOutPutFeature = true |
|
}; |
|
GeoprocessorHelper.IntersectAnalysis(gPParamClass, ref JCDLTB_DLTBBGLayer); |
|
if (JCDLTB_DLTBBGLayer != null) |
|
{ |
|
//#region 字段计算器 权属单位代码的前9位等于坐落单位代码的前9位 |
|
//Geoprocessor gp = new Geoprocessor(); |
|
//gp.OverwriteOutput = true; |
|
//CalculateField calc = new CalculateField(); |
|
//calc.in_table = JCDLTB_DLTBBGLayer.FeatureClass; |
|
//calc.field = "QSDWDM"; |
|
//calc.expression = "\"{0}{1}\".format(!ZLDWDM![0:9],!QSDWDM![10:19])"; |
|
//calc.expression_type = "PYTHON"; |
|
//gp.Execute(calc, null); |
|
//#endregion |
|
//修改坐落单位代码 |
|
IFeatureClassAPI fcAPI = new FeatureClassAPI(JCDLTB_DLTBBGLayer.FeatureClass); |
|
fcAPI.FcToFc(BGFeatureClass, null, true); |
|
if (fcAPI != null) |
|
fcAPI.CloseFeatureClass(); |
|
if (BGFeatureClass != null) |
|
Marshal.ReleaseComObject(BGFeatureClass); |
|
BGFeatureClass = null; |
|
} |
|
this.CloseLoading(); |
|
MessageHelper.ShowTips("提取完成!"); |
|
} |
|
#endregion |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
this.CloseLoading(); |
|
LogAPI.Debug("选择范围图斑异常:" + ex.Message); |
|
LogAPI.Debug("选择范围图斑异常:" + ex.StackTrace); |
|
MessageHelper.ShowError("选择范围图斑异常:" + ex.Message); |
|
} |
|
finally |
|
{ |
|
this.CloseLoading(); |
|
} |
|
} |
|
/// <summary> |
|
/// 拷贝模板gdb文件夹 |
|
/// </summary> |
|
/// <param name="SourcePath"></param> |
|
/// <param name="DestinationPath"></param> |
|
/// <param name="overwriteexisting"></param> |
|
public static void CopyDirectory(string SourcePath, string DestinationPath, bool overwriteexisting) |
|
{ |
|
try |
|
{ |
|
SourcePath = SourcePath.EndsWith(@"\") ? SourcePath : SourcePath + @"\"; |
|
DestinationPath = DestinationPath.EndsWith(@"\") ? DestinationPath : DestinationPath + @"\"; |
|
|
|
if (Directory.Exists(SourcePath)) |
|
{ |
|
if (Directory.Exists(DestinationPath) == false) |
|
Directory.CreateDirectory(DestinationPath); |
|
|
|
foreach (string fls in Directory.GetFiles(SourcePath)) |
|
{ |
|
FileInfo flinfo = new FileInfo(fls); |
|
flinfo.CopyTo(DestinationPath + flinfo.Name, overwriteexisting); |
|
} |
|
foreach (string drs in Directory.GetDirectories(SourcePath)) |
|
{ |
|
DirectoryInfo drinfo = new DirectoryInfo(drs); |
|
CopyDirectory(drs, DestinationPath + drinfo.Name, overwriteexisting); |
|
} |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
throw ex; |
|
} |
|
} |
|
|
|
public virtual void DelectDirect(string srcPath) |
|
{ |
|
try |
|
{ |
|
DirectoryInfo dir = new DirectoryInfo(srcPath); |
|
FileSystemInfo[] fileinfo = dir.GetFileSystemInfos(); //返回目录中所有文件和子目录 |
|
foreach (FileSystemInfo i in fileinfo) |
|
{ |
|
if (i is DirectoryInfo) //判断是否文件夹 |
|
{ |
|
DirectoryInfo subdir = new DirectoryInfo(i.FullName); |
|
subdir.Delete(true); //删除子目录和文件 |
|
} |
|
else |
|
{ |
|
File.Delete(i.FullName); //删除指定文件 |
|
} |
|
} |
|
} |
|
catch (Exception e) |
|
{ |
|
throw; |
|
} |
|
} |
|
private void InsertDataToMemeoryLayer(IFeatureClass pSource, IFeatureClass pTarget, IQueryFilter pFilter = null) |
|
{ |
|
try |
|
{ |
|
if (pSource == null || pTarget == null) return; |
|
IFeatureClassAPI fcAPI = new FeatureClassAPI(pSource); |
|
if (pTarget != null) |
|
fcAPI.FcToFc(pTarget, pFilter, false); |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("插入数据失败:"); |
|
LogAPI.Debug(ex); |
|
} |
|
} |
|
public static IFeatureClass GetFeatureClass(string title, ref string paths) |
|
{ |
|
IFeatureClass result = null; |
|
try |
|
{ |
|
// 获取源数据 |
|
OpenDataDialog pDialog = new OpenDataDialog(); |
|
ISpatialDataObjectFilter pOFilter; |
|
pOFilter = new FilterFeatureDatasetsAndFeatureClasses(); |
|
pDialog.AddFilter(pOFilter, true); |
|
if (!string.IsNullOrWhiteSpace(title)) |
|
pDialog.Title = title; |
|
else |
|
pDialog.Title = "选择数据"; |
|
pDialog.AllowMultiSelect = false; |
|
pDialog.RestoreLocation = true; |
|
pDialog.StartLocation = pDialog.FinalLocation; |
|
if (pDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK && pDialog.Selection.Count > 0) |
|
{ |
|
List<ISpatialDataObject> distObj = pDialog.Selection; |
|
foreach (var obj in distObj) |
|
{ |
|
if (obj.DatasetType == esriDatasetType.esriDTFeatureClass) |
|
{ |
|
IFeatureClass featureclass = (obj.DatasetName as IName).Open() as IFeatureClass; |
|
result = featureclass; |
|
paths += obj.FullName;//展示完整路径 |
|
//paths = featureclass.AliasName;//展示文件名 |
|
} |
|
} |
|
} |
|
return result; |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("选择数据失败:" + ex.Message.ToString()); |
|
return result; |
|
} |
|
} |
|
private void BtnOpenFile_Click(object sender, RoutedEventArgs e) |
|
{ |
|
if (MessageHelper.ShowYesNoAndTips("是否要先获取当前坐落变更表格模板?") == DialogResult.Yes) |
|
{ |
|
string savepaths = string.Empty; |
|
SaveFileDialog dialogCopy = new SaveFileDialog |
|
{ |
|
DefaultExt = "xlsx", |
|
Filter = "Excel Files(*.xlsx)|*.xlsx", |
|
FileName = "变更坐落" + DateTime.Now.ToString("yyyyMMddHHmmssfff") |
|
}; |
|
if (dialogCopy.ShowDialog() == DialogResult.OK) |
|
savepaths = dialogCopy.FileName; |
|
else |
|
return; |
|
if (string.IsNullOrWhiteSpace(savepaths)) |
|
{ |
|
MessageHelper.Show("未获取到文件路径!"); |
|
return; |
|
} |
|
if (File.Exists(savepaths)) |
|
{ |
|
var result = MessageHelper.ShowYesNoAndTips("文件已存在,是否覆盖?"); |
|
if (result == DialogResult.No) return; |
|
} |
|
string strPath = AppDomain.CurrentDomain.BaseDirectory + @"工作空间\模板\坐落变更模板\坐落变更模板.xlsx"; |
|
File.Copy(strPath, savepaths, true); |
|
if (MessageHelper.ShowYesNoAndTips("模板下载已完成,是否打开?") == DialogResult.Yes) |
|
{ |
|
System.Diagnostics.Process.Start("explorer.exe", savepaths); |
|
} |
|
return; |
|
} |
|
string filePath = string.Empty; |
|
OpenFileDialog dialog = new OpenFileDialog |
|
{ |
|
DefaultExt = "xls", |
|
Filter = "Excel文件|*.xls;*.xlsx" |
|
}; |
|
if (dialog.ShowDialog()) |
|
{ |
|
filePath = dialog.FileName; |
|
if (Platform.Instance.DicHelper.GetNoGroupDic(DicTypeEnum.QSDM) == null) |
|
{ |
|
MessageHelper.ShowError("请先进行字典设置!"); |
|
return; |
|
} |
|
using (var streamData = File.Open(filePath, FileMode.Open, FileAccess.Read)) |
|
{ |
|
using (var readerData = ExcelReaderFactory.CreateReader(streamData)) |
|
{ |
|
var result = readerData.AsDataSet(); |
|
DataTable tempDT = result.Tables[0]; |
|
if (tempDT.Columns == null || tempDT.Columns.Count != 5) |
|
{ |
|
MessageHelper.ShowError("导入模板错误!"); |
|
return; |
|
} |
|
tempDT.Columns[0].ColumnName = "变更前代码"; |
|
tempDT.Columns[1].ColumnName = "变更前名称"; |
|
tempDT.Columns[2].ColumnName = "变更后代码"; |
|
tempDT.Columns[3].ColumnName = "变更后名称"; |
|
tempDT.Columns[4].ColumnName = "是否仅权属变化"; |
|
tempDT.Rows.RemoveAt(0); |
|
if (tempDT != null && tempDT.Rows.Count > 0) |
|
{ |
|
var Index = -1; |
|
ListZLXXInfo = new ObservableCollection<ZLXXInfo>(); |
|
foreach (DataRow row in tempDT.Rows) |
|
{ |
|
var QS = Dics_QS.Where(x => x.CODE == row["变更后代码"].ToString()).FirstOrDefault(); |
|
if (QS != null) |
|
Index = Dics_QS.IndexOf(QS); |
|
if (Index > 0) |
|
ListZLXXInfo.Add(new ZLXXInfo() |
|
{ |
|
ID = ListZLXXInfo.OrderByDescending(x => x.ID).FirstOrDefault() == null ? 0 : ListZLXXInfo.OrderByDescending(x => x.ID).FirstOrDefault().ID + 1, |
|
BGQDM = row["变更前代码"].ToString(), |
|
BGQMC = row["变更前名称"].ToString(), |
|
BGHDM = row["变更后代码"].ToString(), |
|
BGHMC = row["变更后名称"].ToString(), |
|
IsQS = row["是否仅权属变化"].ToString(), |
|
Data = Dics_QS, |
|
DataDicTionary = QS |
|
}); |
|
} |
|
projInfo.ListZLXXInfo = ListZLXXInfo; |
|
gvCtrl.ItemsSource = null; |
|
gvCtrl.ItemsSource = ListZLXXInfo; |
|
projInfo.Save(); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
|
|
private void Txt_Delete_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) |
|
{ |
|
try |
|
{ |
|
var TextBlock = sender as System.Windows.Controls.TextBlock; |
|
if (TextBlock != null) |
|
{ |
|
var Info = ListZLXXInfo.FirstOrDefault(f => f.ID == TextBlock.Tag.ToInt());//.Where(x => x.ID == TextBlock.Tag.ToInt()).FindFirst(); |
|
ListZLXXInfo.Remove(Info); |
|
} |
|
Platform.Instance.SendMsg(new KGIS.Framework.Utils.Interface.NotifyMsgPackage() { MsgType = "SaveProject" }); |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("删除坐落信息失败:" + ex.Message); |
|
} |
|
} |
|
|
|
private void Txt_Add_MouseLeftButtonDown(object sender, RoutedEventArgs e) |
|
{ |
|
ListZLXXInfo.Add(new ZLXXInfo() |
|
{ |
|
ID = ListZLXXInfo.OrderByDescending(x => x.ID).FirstOrDefault() == null ? 0 : ListZLXXInfo.OrderByDescending(x => x.ID).FirstOrDefault().ID + 1, |
|
Data = Dics_QS, |
|
}); |
|
Platform.Instance.SendMsg(new KGIS.Framework.Utils.Interface.NotifyMsgPackage() { MsgType = "SaveProject" }); |
|
} |
|
|
|
private void ComboBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) |
|
{ |
|
System.Windows.Controls.ComboBox sender1 = sender as System.Windows.Controls.ComboBox; |
|
if (sender1 != null) |
|
{ |
|
var SelectedItem = sender1.SelectedItem as DataDicTionary; |
|
if (SelectedItem == null) |
|
{ |
|
if (!string.IsNullOrEmpty(sender1.Text)) |
|
{ |
|
sender1.ItemsSource = Dics_QS.Where(x => x.DisplayName.Contains(sender1.Text)).ToList(); |
|
sender1.IsDropDownOpen = true; |
|
} |
|
} |
|
else |
|
{ |
|
int[] rows = gvCtrl.GetSelectedRowHandles(); |
|
if (rows.Length == 1) |
|
{ |
|
var Default = ListZLXXInfo.Where(x => x.ID == rows[0]).FirstOrDefault(); |
|
if (Default != null) |
|
{ |
|
Default.BGHMC = SelectedItem.NAME; |
|
Default.DataDicTionary = SelectedItem; |
|
Default.BGHDM = SelectedItem.CODE; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
|
|
private void SelectBGTB_Click(object sender, RoutedEventArgs e) |
|
{ |
|
string bgPaths = ""; |
|
IFeatureClass dltbFc = GetFeatureClass("请选择变更图斑数据", ref bgPaths); |
|
if (dltbFc != null) |
|
{ |
|
System.Windows.Controls.ComboBoxItem comboBoxItem = new System.Windows.Controls.ComboBoxItem(); |
|
comboBoxItem.Content = bgPaths; |
|
comboBoxItem.Tag = dltbFc; |
|
combBGTB.Items.Add(comboBoxItem); |
|
combBGTB.SelectedItem = comboBoxItem; |
|
} |
|
} |
|
|
|
private void SelectDLTB_Click(object sender, RoutedEventArgs e) |
|
{ |
|
string jcPaths = ""; |
|
IFeatureClass dltbFc = GetFeatureClass("请选择变更图斑数据", ref jcPaths); |
|
if (dltbFc != null) |
|
{ |
|
System.Windows.Controls.ComboBoxItem comboBoxItem = new System.Windows.Controls.ComboBoxItem(); |
|
comboBoxItem.Content = jcPaths; |
|
comboBoxItem.Tag = new FeatureLayer() { FeatureClass = dltbFc, Name = dltbFc.AliasName }; |
|
combJCDLTB.Items.Add(comboBoxItem); |
|
combJCDLTB.SelectedItem = comboBoxItem; |
|
} |
|
} |
|
|
|
private void ComboBox_PreviewTextInput(object sender, System.Windows.Input.TextCompositionEventArgs e) |
|
{ |
|
System.Windows.Controls.ComboBox sender1 = sender as System.Windows.Controls.ComboBox; |
|
if (sender1 != null && e.Text.Length > 6) |
|
{ |
|
sender1.ItemsSource = Dics_QS.Where(x => x.DisplayName.Contains(e.Text)).ToList(); |
|
sender1.IsDropDownOpen = true; |
|
} |
|
} |
|
|
|
private void ComboBox_SelectionChanged(object sender, RoutedEventArgs e) |
|
{ |
|
try |
|
{ |
|
KUI.ComboBox.AutoCompleteBox sender1 = sender as KUI.ComboBox.AutoCompleteBox; |
|
if (sender1 != null && !string.IsNullOrEmpty(sender1.Text) && sender1.Text.Contains("-")) |
|
{ |
|
var Default = ListZLXXInfo.Where(x => x.ID == sender1.Tag.ToInt()).FirstOrDefault(); |
|
if (Default != null) |
|
{ |
|
Default.BGHMC = sender1.Text.Split('-')[1]; |
|
Default.BGHDM = sender1.Text.Split('-')[0]; |
|
} |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("ComboBox_SelectionChanged失败:" + ex.Message.ToString()); |
|
} |
|
} |
|
|
|
#region IWizardFramework接口函数 |
|
public bool Execute() |
|
{ |
|
try |
|
{ |
|
this.ShowLoading("正在生成地类图斑更新层/更新过程层,请稍后...", 0, 0); |
|
m_bIsFinalSuccess = true; |
|
|
|
} |
|
catch (Exception ex) |
|
{ |
|
this.CloseLoading(); |
|
MessageHelper.ShowError($"地类图斑数据提取失败:{ex.Message}"); |
|
} |
|
finally |
|
{ |
|
this.CloseLoading(); |
|
} |
|
return m_bIsFinalSuccess; |
|
} |
|
|
|
public bool Validating() |
|
{ |
|
IFeatureClass BGFeatureClass = null; |
|
IFeatureLayer JCFeatureLayer = null; |
|
IFeatureClass GXGCFC = null;//更新过程层 |
|
IFeatureClass GXFC = null;//更新层 |
|
try |
|
{ |
|
var combBGTBItem = combBGTB.SelectedItem as System.Windows.Controls.ComboBoxItem; |
|
if (combBGTBItem != null) |
|
BGFeatureClass = combBGTBItem.Tag as IFeatureClass; |
|
var combDLTBItem = combJCDLTB.SelectedItem as System.Windows.Controls.ComboBoxItem; |
|
if (combDLTBItem != null) |
|
JCFeatureLayer = combDLTBItem.Tag as IFeatureLayer; |
|
if (BGFeatureClass == null) |
|
{ |
|
MessageHelper.ShowTips("变更图斑图层读取失败!"); |
|
return false; |
|
} |
|
if (JCFeatureLayer == null) |
|
{ |
|
MessageHelper.ShowTips("基础地类图斑图层读取失败!"); |
|
return false; |
|
} |
|
if (JCFeatureLayer != null && JCFeatureLayer.FeatureClass.FindField("XZQTZLX") == -1) |
|
{ |
|
//添加字段 |
|
IFieldEdit _field = new FieldClass(); |
|
_field.Name_2 = "XZQTZLX"; |
|
_field.AliasName_2 = "行政区调整类型"; |
|
_field.Type_2 = esriFieldType.esriFieldTypeString; |
|
_field.Length_2 = 1; |
|
JCFeatureLayer.FeatureClass.AddField(_field as IField); |
|
} |
|
GXGCFC = MapsManager.Instance.MapService.GetFeatureClassByName("DLTBGXGC"); //地类图斑更新过程 |
|
GXFC = MapsManager.Instance.MapService.GetFeatureClassByName("DLTBGX"); //地类图斑更新层 |
|
if (GXFC == null) |
|
{ |
|
MessageHelper.ShowTips("地类图斑更新层读取失败!"); |
|
return false; |
|
} |
|
if (GXGCFC == null) |
|
{ |
|
MessageHelper.ShowTips("地类图斑更新过程层读取失败!"); |
|
return false; |
|
} |
|
#region 查询数据中是否存在未填写必要属性的数据 DLBM/ZLDWDM/QSDWDM |
|
ITable bgtbTb = BGFeatureClass as ITable; |
|
var count = bgtbTb.RowCount(new QueryFilterClass() { WhereClause = "DLBM='' or ZLDWDM='' or QSDWDM='' " }); |
|
if (count > 0) |
|
{ |
|
if (MessageHelper.ShowYesNoAndTips($"检测到变更图斑存在{count}条数据中地类编码,坐落单位代码,坐落单位名称等必要信息未赋值,是否继续提取?") == System.Windows.Forms.DialogResult.No) |
|
{ |
|
return false; |
|
} |
|
} |
|
#endregion |
|
IFeatureLayer jcDLTBLayer = MapsManager.Instance.MapService.GetFeatureLayerByLayerName("地类图斑"); |
|
if (jcDLTBLayer == null) |
|
{ |
|
MessageHelper.ShowTips("未找到基础库地类图斑图层"); |
|
return false; |
|
} |
|
(Parameter as IDGParameter).AllowPDFZ = cbAllowGDPD.IsChecked == true; |
|
(Parameter as IDGParameter).AllowUnion = cbAllowUnion.IsChecked == true; |
|
(Parameter as IDGParameter).AutoCalcGDKCSX = cbAutoCalcGDKCSX.IsChecked == true; |
|
(Parameter as IDGParameter).AutoSetGDLX = cbAutoSetGDLX.IsChecked == true; |
|
} |
|
catch (Exception ex) |
|
{ |
|
MessageHelper.ShowError($"地类图斑数据提取失败:{ex.Message}"); |
|
return false; |
|
} |
|
return true; |
|
} |
|
|
|
public void Back() |
|
{ |
|
|
|
} |
|
|
|
public void Intializing(bool IsSkip = false) |
|
{ |
|
if (IsSkip) |
|
{ |
|
m_IsSkip = IsSkip; |
|
(Parameter as IDGParameter).ExeDLTB = false; |
|
(Parameter as IDGParameter).AllowPDFZ = false; |
|
(Parameter as IDGParameter).AllowUnion = false; |
|
(Parameter as IDGParameter).AutoCalcGDKCSX = false; |
|
(Parameter as IDGParameter).AutoSetGDLX = false; |
|
} |
|
else |
|
{ |
|
(Parameter as IDGParameter).ExeDLTB = true; |
|
(Parameter as IDGParameter).AllowPDFZ = cbAllowGDPD.IsChecked == true; |
|
(Parameter as IDGParameter).AllowUnion = cbAllowUnion.IsChecked == true; |
|
(Parameter as IDGParameter).AutoCalcGDKCSX = cbAutoCalcGDKCSX.IsChecked == true; |
|
(Parameter as IDGParameter).AutoSetGDLX = cbAutoSetGDLX.IsChecked == true; |
|
} |
|
} |
|
#endregion |
|
} |
|
}
|
|
|