森林草原湿地荒漠调查
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.
 
 
 

176 lines
8.6 KiB

using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
using KGIS.Framework.AE;
using KGIS.Framework.AE.Enum;
using KGIS.Framework.Utils;
using KGIS.Framework.Utils.Dialog;
using KGIS.Framework.Utils.Helper;
using KUI.Windows;
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Windows;
namespace Kingo.Plugin.DataLoad.View
{
/// <summary>
/// 覆盖工程数据 的交互逻辑
/// </summary>
public partial class FrmLoadProjectData : BaseWindow
{
public FrmLoadProjectData()
{
InitializeComponent();
this.Title = "覆盖工程数据";
}
private string SelectPathName = string.Empty;
private readonly List<string> ZLlays = new List<string>() { "DLTBGX", "DLTBGXGC", "CZCDYDGX", "CZCDYDGXGC", "CZCDYDGX", "CJDCQGX", "CJDCQJXGX", "CJDCQGXGC", "XZQGX", "XZQJXGX", "XZQGXGC", "TTQGX", "LMFWGX", "GCHZZGX", "GFBQGX", "GDDBGX", "CCWJQGX", "PDTGX" };
private void BtnSelectedOtherData_Click(object sender, RoutedEventArgs e)
{
try
{
FolderBrowserDialog m_Dialog = new FolderBrowserDialog();
System.Windows.Forms.DialogResult result = m_Dialog.ShowDialog();
if (result == System.Windows.Forms.DialogResult.Cancel) return;
string m_Dir = m_Dialog.SelectedPath.Trim();
SelectPathName = m_Dir;
this.btnPrjDir.Text = m_Dir;//工程路径
}
catch (Exception ex)
{
LogAPI.Debug("新建工程页面中-选择工程目录时失败,异常原因: " + ex + " ; ");
MessageHelper.ShowTips("操作异常:" + ex.Message);
}
}
private void BtnLoad_Click(object sender, RoutedEventArgs e)
{
IWorkspaceAPI s_WsAPI = null;
IFeatureClassAPI TempFCApi = null;
try
{
this.ShowLoading("正在进行数据覆盖中.......", 0, 0);
IFeatureLayer ImproDataLayer;
if (cbOverlayBGData.IsChecked == true)
{
this.UpdateMsg($"正在进行DLTBBG数据覆盖中.......");
s_WsAPI = new WorkspaceAPI(System.IO.Path.Combine(SelectPathName, "BGDB.gdb"), WorkspaceTypeEnum.GDBFile, true);
ImproDataLayer = KGIS.Framework.Maps.MapsManager.Instance.MapService.GetFeatureLayerByName("DLTBBG");
if (ImproDataLayer != null && ImproDataLayer.FeatureClass != null)
(ImproDataLayer.FeatureClass as FeatureClass).Workspace.ExecuteSQL("Delete From DLTBBG WHERE 1=1");
TempFCApi = s_WsAPI.OpenFeatureClass2("DLTBBG");
if (TempFCApi != null && s_WsAPI != null)
TempFCApi.FcToFc(ImproDataLayer.FeatureClass, null, false);
}
ImproDataLayer = null;
TempFCApi = null;
s_WsAPI = null;
if (cbOverlayZLData.IsChecked == true)
{
s_WsAPI = new WorkspaceAPI(System.IO.Path.Combine(SelectPathName, "ZLDB.gdb"), WorkspaceTypeEnum.GDBFile, true);
if (s_WsAPI == null) ZLlays.Clear();
foreach (var item in ZLlays)
{
this.UpdateMsg($"正在进行{item}数据覆盖中.......");
ImproDataLayer = KGIS.Framework.Maps.MapsManager.Instance.MapService.GetFeatureLayerByName(item);
if (ImproDataLayer == null) continue;
if (ImproDataLayer != null && ImproDataLayer.FeatureClass != null)
(ImproDataLayer.FeatureClass as FeatureClass).Workspace.ExecuteSQL($"Delete From {item} WHERE 1=1");
TempFCApi = s_WsAPI.OpenFeatureClass2(item);
if (TempFCApi != null && ImproDataLayer.FeatureClass != null && TempFCApi.FeatureClass.FeatureCount(null) != 0)
TempFCApi.FcToFc(ImproDataLayer.FeatureClass, null, false);
TempFCApi = null;
}
}
ImproDataLayer = null;
s_WsAPI = null;
if (cbOverlayNMData.IsChecked == true)
{
this.UpdateMsg($"正在进行DLTB_NMK数据覆盖中.......");
s_WsAPI = new WorkspaceAPI(System.IO.Path.Combine(SelectPathName, "NMDB.gdb"), WorkspaceTypeEnum.GDBFile, true);
ImproDataLayer = KGIS.Framework.Maps.MapsManager.Instance.MapService.GetFeatureLayerByName("DLTB_NMK");
if (ImproDataLayer != null)
{
if (ImproDataLayer != null && ImproDataLayer.FeatureClass != null)
(ImproDataLayer.FeatureClass as FeatureClass).Workspace.ExecuteSQL("Delete From DLTB_NMK WHERE 1=1");
TempFCApi = s_WsAPI.OpenFeatureClass2("DLTB_NMK");
if (TempFCApi != null && s_WsAPI != null)
TempFCApi.FcToFc(ImproDataLayer.FeatureClass, null, false);
}
}
this.CloseLoading();
MessageHelper.ShowTips("覆盖数据成功!");
}
catch (Exception ex)
{
this.CloseLoading();
LogAPI.Debug("覆盖数据异常:" + ex);
MessageHelper.ShowTips("覆盖数据异常:" + ex.Message);
}
finally
{
this.CloseLoading();
s_WsAPI?.CloseWorkspace();
TempFCApi?.CloseFeatureClass();
}
}
private void BtnClose_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
private void BtnDele_Click(object sender, RoutedEventArgs e)
{
IFeatureLayer DeleDataLayer = null;
try
{
if (cbOverlayBGData.IsChecked == false && cbOverlayZLData.IsChecked == false && cbOverlayNMData.IsChecked == false)
{
MessageHelper.ShowTips("清除数据至少勾选一项进行清除!");
return;
}
this.ShowLoading("正在进行数据清除中.......", 0, 0);
if (cbOverlayBGData.IsChecked == true)
{
this.UpdateMsg($"正在进行DLTBBG数据清除中.......");
DeleDataLayer = KGIS.Framework.Maps.MapsManager.Instance.MapService.GetFeatureLayerByName("DLTBBG");
if (DeleDataLayer != null && DeleDataLayer.FeatureClass != null)
(DeleDataLayer.FeatureClass as FeatureClass).Workspace.ExecuteSQL("Delete From DLTBBG WHERE 1=1");
}
if (cbOverlayZLData.IsChecked == true)
{
foreach (var item in ZLlays)
{
this.UpdateMsg($"正在进行{item}数据清除中.......");
DeleDataLayer = KGIS.Framework.Maps.MapsManager.Instance.MapService.GetFeatureLayerByName(item);
if (DeleDataLayer != null && DeleDataLayer.FeatureClass != null)
(DeleDataLayer.FeatureClass as FeatureClass).Workspace.ExecuteSQL($"Delete From {item} WHERE 1=1");
}
}
if (cbOverlayNMData.IsChecked == true)
{
this.UpdateMsg($"正在进行DLTB_NMK数据清除中.......");
DeleDataLayer = KGIS.Framework.Maps.MapsManager.Instance.MapService.GetFeatureLayerByName("DLTB_NMK");
if (DeleDataLayer != null && DeleDataLayer.FeatureClass != null)
(DeleDataLayer.FeatureClass as FeatureClass).Workspace.ExecuteSQL("Delete From DLTB_NMK WHERE 1=1");
}
this.CloseLoading();
KGIS.Framework.Maps.MapsManager.Instance.MapService.getAxMapControl().ActiveView.Refresh();
MessageHelper.ShowTips("清除数据结束!");
}
catch (Exception ex)
{
this.CloseLoading();
PluginServiceInterface.CommonHelper.RecordsErrLog("数据覆盖-清除数据异常", ex);
MessageHelper.ShowTips("清除数据异常:" + ex.Message);
}
finally
{
if (DeleDataLayer != null && DeleDataLayer.FeatureClass != null)
Marshal.ReleaseComObject(DeleDataLayer);
}
}
}
}