|
|
|
|
using ESRI.ArcGIS.Carto;
|
|
|
|
|
using ESRI.ArcGIS.Controls;
|
|
|
|
|
using ESRI.ArcGIS.Geodatabase;
|
|
|
|
|
using KGIS.Framework.AE;
|
|
|
|
|
using KGIS.Framework.Maps;
|
|
|
|
|
using KGIS.Framework.Utils;
|
|
|
|
|
using KGIS.Framework.Utils.ExtensionMethod;
|
|
|
|
|
using KGIS.Framework.Utils.Helper;
|
|
|
|
|
using KGIS.Framework.Views;
|
|
|
|
|
using Kingo.PluginServiceInterface;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Runtime.InteropServices;
|
|
|
|
|
using System.Windows;
|
|
|
|
|
using System.Windows.Controls;
|
|
|
|
|
using System.Windows.Input;
|
|
|
|
|
|
|
|
|
|
namespace Kingo.Plugin.NYYP.View
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// UCNYYP.xaml 的交互逻辑
|
|
|
|
|
/// </summary>
|
|
|
|
|
public partial class UCNYYP : UserControl, IElementInfo
|
|
|
|
|
{
|
|
|
|
|
List<IElementInfo> _Elements = null;
|
|
|
|
|
IElementInfo _FeatureInfo = null;
|
|
|
|
|
IElementInfo _NYYPInfo = null;
|
|
|
|
|
IFeatureLayer _curFeatureLayer;
|
|
|
|
|
IFeatureLayer _curJCTBFeatureLayer;
|
|
|
|
|
public UCNYYP()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
Title = "图斑预判组件";
|
|
|
|
|
DockWidth = 550;
|
|
|
|
|
this.Loaded += (s, e) =>
|
|
|
|
|
{
|
|
|
|
|
MapsManager.Instance.MapService.OnSelectionChanged -= MapService_OnSelectionChanged;
|
|
|
|
|
MapsManager.Instance.MapService.OnSelectionChanged += MapService_OnSelectionChanged;
|
|
|
|
|
_curJCTBFeatureLayer = MapsManager.Instance.MapService.GetFeatureLayerByName("JCTB");
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
private int CurShowJCOID = 0;
|
|
|
|
|
private void MapService_OnSelectionChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (!IsShow)
|
|
|
|
|
{
|
|
|
|
|
MapsManager.Instance.MapService.OnSelectionChanged -= MapService_OnSelectionChanged;
|
|
|
|
|
return;
|
|
|
|
|
}//当前窗口关闭时,注销触发事件
|
|
|
|
|
|
|
|
|
|
ISelectionSet pJCSelectionSetes = (_curJCTBFeatureLayer as IFeatureSelection).SelectionSet;//获取图层要素已被选择的
|
|
|
|
|
int oid = -1;
|
|
|
|
|
if (pJCSelectionSetes != null && pJCSelectionSetes.Count != 0)
|
|
|
|
|
{
|
|
|
|
|
IEnumIDs enumIDs = pJCSelectionSetes.IDs;
|
|
|
|
|
enumIDs.Reset();
|
|
|
|
|
oid = -1;
|
|
|
|
|
while ((oid = enumIDs.Next()) >= 0)
|
|
|
|
|
{
|
|
|
|
|
if (CurShowJCOID == oid) break;//不重新绑定当前已选择行
|
|
|
|
|
IFeature f = _curJCTBFeatureLayer.FeatureClass.GetFeature(oid);
|
|
|
|
|
BindData(f);
|
|
|
|
|
Marshal.ReleaseComObject(f);
|
|
|
|
|
Marshal.ReleaseComObject(enumIDs);
|
|
|
|
|
CurShowJCOID = oid;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Marshal.ReleaseComObject(pJCSelectionSetes);
|
|
|
|
|
if (oid == -1)
|
|
|
|
|
{
|
|
|
|
|
BindData(null);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug(ex.Message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void BindData(object obj)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (_curFeatureLayer == null)
|
|
|
|
|
_curFeatureLayer = MapsManager.Instance.MapService.GetFeatureLayerByName("DLTBBG");
|
|
|
|
|
Init();
|
|
|
|
|
tvDataList.Items.Clear();
|
|
|
|
|
if (obj is IFeature)
|
|
|
|
|
{
|
|
|
|
|
IFeature tempFeature = obj as IFeature;
|
|
|
|
|
string mFcName = (tempFeature.Class as FeatureClass).BrowseName;
|
|
|
|
|
if (mFcName == "JCTB")
|
|
|
|
|
{
|
|
|
|
|
_FeatureInfo?.BindData(obj);
|
|
|
|
|
_NYYPInfo?.BindData(obj);
|
|
|
|
|
int SJLYIndex = _curJCTBFeatureLayer.FeatureClass.FindField("SJLY");
|
|
|
|
|
ListBoxItem item = new ListBoxItem
|
|
|
|
|
{
|
|
|
|
|
Margin = new Thickness(32, 0, 0, 0),
|
|
|
|
|
Tag = obj
|
|
|
|
|
};
|
|
|
|
|
if ((obj as IFeature).Value[SJLYIndex].ToString().Trim() == "ZZBG")
|
|
|
|
|
item.Content = "自主变更图斑:" + (obj as IFeature).OID;
|
|
|
|
|
else
|
|
|
|
|
item.Content = "国家监测图斑:" + (obj as IFeature).OID;
|
|
|
|
|
tvDataList.Items.Add(item);
|
|
|
|
|
if (tvDataList.Items.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
(tvDataList.Items[0] as ListBoxItem).IsSelected = true;
|
|
|
|
|
}
|
|
|
|
|
//GetBGTBForJCTB(tempFeature);
|
|
|
|
|
if (tvDataList.SelectedItem is ListBoxItem itemSe) itemSe.FontStyle = FontStyles.Oblique;
|
|
|
|
|
}
|
|
|
|
|
else if (mFcName == "DLTBBG")
|
|
|
|
|
{
|
|
|
|
|
_FeatureInfo?.BindData(obj);
|
|
|
|
|
_NYYPInfo?.BindData(obj);
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
_FeatureInfo?.BindData(obj);
|
|
|
|
|
_NYYPInfo?.BindData(obj);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("加载图斑变更详情页面时发生异常,异常信息如下:");
|
|
|
|
|
LogAPI.Debug(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public void GetBGTBForJCTB(IFeature pJCTB)
|
|
|
|
|
{
|
|
|
|
|
if (pJCTB == null) return;
|
|
|
|
|
|
|
|
|
|
List<TBInfo> listBGFC = new List<TBInfo>();
|
|
|
|
|
IFeatureClass featureClassBG = MapsManager.Instance.MapService.GetFeatureClassByName("DLTBBG");
|
|
|
|
|
int JCBHIndex = pJCTB.Fields.FindField("TBBH");
|
|
|
|
|
if (JCBHIndex == -1) return;
|
|
|
|
|
string strJCBH = pJCTB.Value[JCBHIndex].ToTrim();
|
|
|
|
|
if (string.IsNullOrWhiteSpace(strJCBH)) return;
|
|
|
|
|
|
|
|
|
|
IQueryFilter queryFilter = new QueryFilterClass()
|
|
|
|
|
{
|
|
|
|
|
WhereClause = string.Format("TBYBH='{0}'", strJCBH)
|
|
|
|
|
};
|
|
|
|
|
if (featureClassBG.FeatureCount(queryFilter) == 0)
|
|
|
|
|
{
|
|
|
|
|
System.Windows.Forms.DialogResult result = MessageHelper.ShowYesNoCancelAndTips("无对应变更图斑数据,是否从监测图层中加载?");
|
|
|
|
|
if (result == System.Windows.Forms.DialogResult.Yes)
|
|
|
|
|
{
|
|
|
|
|
IFeatureClassAPI featureClassAPI_GJJCTB = new FeatureClassAPI(_curJCTBFeatureLayer.FeatureClass);
|
|
|
|
|
int JCJCBHIndex = featureClassAPI_GJJCTB.FeatureClass.FindField("TBBH");
|
|
|
|
|
int JCBGDLIndex = featureClassAPI_GJJCTB.FeatureClass.FindField("BGDL");
|
|
|
|
|
int JCTZIndex = featureClassAPI_GJJCTB.FeatureClass.FindField("TZ");
|
|
|
|
|
int JCBGFWIndex = featureClassAPI_GJJCTB.FeatureClass.FindField("KZXX");
|
|
|
|
|
int JCWBGLXIndex = featureClassAPI_GJJCTB.FeatureClass.FindField("WBGLX");
|
|
|
|
|
int JCSJLYIndex = featureClassAPI_GJJCTB.FeatureClass.FindField("SJLY");
|
|
|
|
|
//AddFildsToBGTB(featureClassBG);
|
|
|
|
|
int BGTBYBHIndex = featureClassBG.FindField("TBYBH");
|
|
|
|
|
int BGDLBMIndex = featureClassBG.FindField("DLBM");
|
|
|
|
|
int BGSFJCTBIndex = featureClassBG.FindField("SFJCTB");
|
|
|
|
|
int TZIndex = featureClassBG.FindField("TZ");
|
|
|
|
|
int BGDLIndex = featureClassBG.FindField("BGDL");
|
|
|
|
|
int BGFWIndex = featureClassBG.FindField("BGFW");
|
|
|
|
|
int WBGLXIndex = featureClassBG.FindField("WBGLX");
|
|
|
|
|
int SJLYIndex = featureClassBG.FindField("SJLY");
|
|
|
|
|
//检测图斑
|
|
|
|
|
IFeatureCursor T_Cursor = null;
|
|
|
|
|
if (featureClassAPI_GJJCTB.FeatureClass != null)
|
|
|
|
|
{
|
|
|
|
|
IFeatureClassLoad pFclsLoad = featureClassBG as IFeatureClassLoad;
|
|
|
|
|
if (pFclsLoad != null)
|
|
|
|
|
pFclsLoad.LoadOnlyMode = true;
|
|
|
|
|
//地类变更图斑
|
|
|
|
|
IFeatureBuffer buffer = featureClassBG.CreateFeatureBuffer();
|
|
|
|
|
T_Cursor = featureClassBG.Insert(true);
|
|
|
|
|
buffer.Shape = pJCTB.ShapeCopy;
|
|
|
|
|
buffer.Value[BGDLIndex] = pJCTB.Value[JCBGDLIndex];
|
|
|
|
|
buffer.Value[TZIndex] = pJCTB.Value[JCTZIndex];
|
|
|
|
|
buffer.Value[BGFWIndex] = pJCTB.Value[JCBGFWIndex];
|
|
|
|
|
buffer.Value[WBGLXIndex] = pJCTB.Value[JCWBGLXIndex];
|
|
|
|
|
buffer.Value[SJLYIndex] = "1";
|
|
|
|
|
buffer.Value[BGTBYBHIndex] = pJCTB.Value[JCJCBHIndex];
|
|
|
|
|
buffer.Value[BGDLBMIndex] = pJCTB.Value[JCBGDLIndex];
|
|
|
|
|
buffer.Value[BGSFJCTBIndex] = "1";
|
|
|
|
|
T_Cursor.InsertFeature(buffer);
|
|
|
|
|
T_Cursor.Flush();
|
|
|
|
|
if (pFclsLoad != null)
|
|
|
|
|
pFclsLoad.LoadOnlyMode = false;
|
|
|
|
|
Marshal.ReleaseComObject(T_Cursor);
|
|
|
|
|
Marshal.ReleaseComObject(buffer);
|
|
|
|
|
Marshal.ReleaseComObject(pFclsLoad);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
IFeatureCursor featureCursorBG = featureClassBG.Search(queryFilter, false);
|
|
|
|
|
IFeature bgF = null;
|
|
|
|
|
while ((bgF = featureCursorBG.NextFeature()) != null)
|
|
|
|
|
{
|
|
|
|
|
ListBoxItem item = new ListBoxItem();
|
|
|
|
|
item.Margin = new Thickness(32, 0, 0, 0);
|
|
|
|
|
item.Content = "图斑:" + bgF.OID;
|
|
|
|
|
item.Tag = bgF;
|
|
|
|
|
tvDataList.Items.Add(item);
|
|
|
|
|
}
|
|
|
|
|
Marshal.ReleaseComObject(featureCursorBG);
|
|
|
|
|
Marshal.ReleaseComObject(featureClassBG);
|
|
|
|
|
if (tvDataList.Items.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
(tvDataList.Items[0] as ListBoxItem).IsSelected = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ControlsEditingSaveCommandClass saveCmd = null;
|
|
|
|
|
bool IsSave = false;
|
|
|
|
|
public void SaveEdit()
|
|
|
|
|
{
|
|
|
|
|
IsSave = true;
|
|
|
|
|
if (saveCmd == null)
|
|
|
|
|
{
|
|
|
|
|
saveCmd = new ControlsEditingSaveCommandClass();
|
|
|
|
|
saveCmd.OnCreate(MapsManager.Instance.MapService.Hook);
|
|
|
|
|
}
|
|
|
|
|
if (saveCmd.Enabled)
|
|
|
|
|
{
|
|
|
|
|
saveCmd.OnClick();
|
|
|
|
|
}
|
|
|
|
|
IsSave = false;
|
|
|
|
|
_FeatureInfo?.SaveEdit();
|
|
|
|
|
_NYYPInfo?.SaveEdit();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Init()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (_Elements == null)
|
|
|
|
|
{
|
|
|
|
|
_Elements = UIShell.OSGi.BundleRuntime.Instance.GetService<IElementInfo>();
|
|
|
|
|
}
|
|
|
|
|
if (_Elements == null) return;
|
|
|
|
|
if (_NYYPInfo == null)
|
|
|
|
|
{
|
|
|
|
|
_NYYPInfo = _Elements.FirstOrDefault(f => f.Title == "内业预判");
|
|
|
|
|
}
|
|
|
|
|
if ((_NYYPInfo as UserControl).Parent != null)
|
|
|
|
|
{
|
|
|
|
|
((_NYYPInfo as UserControl).Parent as Grid).Children.Clear();
|
|
|
|
|
}
|
|
|
|
|
if (_NYYPInfo != null)
|
|
|
|
|
NYYPInfoPanel.Children.Add(_NYYPInfo as UIElement);
|
|
|
|
|
if (_FeatureInfo == null)
|
|
|
|
|
{
|
|
|
|
|
_FeatureInfo = _Elements.FirstOrDefault(f => f.Title == "要素属性");
|
|
|
|
|
}
|
|
|
|
|
if ((_FeatureInfo as UserControl).Parent != null)
|
|
|
|
|
{
|
|
|
|
|
((_FeatureInfo as UserControl).Parent as Grid).Children.Clear();
|
|
|
|
|
}
|
|
|
|
|
TBInfo.Children.Add(_FeatureInfo as UIElement);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("初始化图斑详情页面失败!");
|
|
|
|
|
LogAPI.Debug(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void tvDataList_PreviewMouseUp(object sender, MouseButtonEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//ListBoxItem item = tvDataList.SelectedItem as ListBoxItem;
|
|
|
|
|
foreach (ListBoxItem itemBOX in tvDataList.Items)
|
|
|
|
|
{
|
|
|
|
|
if (itemBOX.IsSelected == true)
|
|
|
|
|
itemBOX.FontStyle = FontStyles.Oblique;
|
|
|
|
|
else
|
|
|
|
|
itemBOX.FontStyle = FontStyles.Normal;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("要素属性中 元素树操作时鼠标抬起 时异常,异常信息如下:");
|
|
|
|
|
LogAPI.Debug(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void tvDataList_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (tvDataList.SelectedItem == null)
|
|
|
|
|
return;
|
|
|
|
|
ListBoxItem item = tvDataList.SelectedItem as ListBoxItem;
|
|
|
|
|
if (item == null || item.Tag == null)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
object Data = null;
|
|
|
|
|
if (item.Tag is IFeature)
|
|
|
|
|
{
|
|
|
|
|
Data = item.Tag;
|
|
|
|
|
}
|
|
|
|
|
_FeatureInfo?.BindData(item.Tag);
|
|
|
|
|
_NYYPInfo?.BindData(item.Tag);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug(ex.Message);
|
|
|
|
|
throw;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool IsShow { get; set; }
|
|
|
|
|
public int ShowIndex { get; set; }
|
|
|
|
|
public bool ResetSize { get; set; }
|
|
|
|
|
public bool AllowEdit { get; set; }
|
|
|
|
|
public Guid ID { get; set; }
|
|
|
|
|
public DockStyle DockAreas { get; set; }
|
|
|
|
|
public System.Drawing.Size FloatSize { get; set; }
|
|
|
|
|
public int DockWidth { get; set; }
|
|
|
|
|
public int DockHeight { get; set; }
|
|
|
|
|
public DockStyle DefaultArea { get; set; }
|
|
|
|
|
public bool ShowCloseButton { get; set; }
|
|
|
|
|
public bool ShowAutoHideButton { get; set; }
|
|
|
|
|
public string Title { get; set; }
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
public class TBInfo
|
|
|
|
|
{
|
|
|
|
|
public string Caption { get; set; }
|
|
|
|
|
public object Data { get; set; }
|
|
|
|
|
public TBInfo(IFeature pFeature)
|
|
|
|
|
{
|
|
|
|
|
Caption = pFeature.OID.ToString();
|
|
|
|
|
Data = pFeature;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|