|
|
|
|
using ESRI.ArcGIS.Carto;
|
|
|
|
|
using ESRI.ArcGIS.Geodatabase;
|
|
|
|
|
using KGIS.Framework.Maps;
|
|
|
|
|
using KGIS.Framework.Utils;
|
|
|
|
|
using KGIS.Framework.Utils.Helper;
|
|
|
|
|
using Kingo.PluginServiceInterface;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Text.RegularExpressions;
|
|
|
|
|
using System.Windows;
|
|
|
|
|
using System.Windows.Controls;
|
|
|
|
|
|
|
|
|
|
namespace Kingo.Plugin.SystemSetting.View.ViewSystemSetting
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
public partial class FrmWYInfoSetting : BaseWindow
|
|
|
|
|
{
|
|
|
|
|
private bool isADD { get; set; }
|
|
|
|
|
private List<WYZPCfg> wYZPCfgs = null;
|
|
|
|
|
private WYZPCfg layerInfo = null;
|
|
|
|
|
public Action Refresh;
|
|
|
|
|
|
|
|
|
|
public FrmWYInfoSetting(bool isADD, WYZPCfg layerInfo, List<WYZPCfg> wYZPCfgs)
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
this.isADD = isADD;
|
|
|
|
|
this.layerInfo = layerInfo;
|
|
|
|
|
this.wYZPCfgs = wYZPCfgs;
|
|
|
|
|
GetLayerInfo();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void GetLayerInfo()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
List<LayerName> layerNameList = new List<LayerName>();
|
|
|
|
|
List<ILayer> pLayerList = MapsManager.Instance.MapService.GetAllLayerInMap<ILayer>();
|
|
|
|
|
if (pLayerList != null && pLayerList.Count != 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (var pLayer in pLayerList)
|
|
|
|
|
{
|
|
|
|
|
if (pLayer is IGroupLayer || pLayer is IRasterLayer)
|
|
|
|
|
continue;
|
|
|
|
|
LayerName layer = new LayerName
|
|
|
|
|
{
|
|
|
|
|
Name = (pLayer as IDataset).BrowseName,
|
|
|
|
|
AliasName = pLayer.Name
|
|
|
|
|
};
|
|
|
|
|
layerNameList.Add(layer);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
List<RelevantModel> modelList = new List<RelevantModel>();
|
|
|
|
|
string[] model = new string[] { "属性", "图形" };
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < model.Length; i++)
|
|
|
|
|
{
|
|
|
|
|
string name = model[i];
|
|
|
|
|
RelevantModel modelInfo = new RelevantModel
|
|
|
|
|
{
|
|
|
|
|
Name = name,
|
|
|
|
|
Index = i
|
|
|
|
|
};
|
|
|
|
|
modelList.Add(modelInfo);
|
|
|
|
|
}
|
|
|
|
|
this.cobLayerName.ItemsSource = layerNameList;
|
|
|
|
|
this.cobModel.ItemsSource = modelList;
|
|
|
|
|
if (this.isADD == false && this.layerInfo != null)
|
|
|
|
|
{
|
|
|
|
|
List<LayerName> nameList = layerNameList.FindAll(x => x.Name == this.layerInfo.LayerName);
|
|
|
|
|
if (nameList != null && nameList.Count != 0)
|
|
|
|
|
{
|
|
|
|
|
LayerName layerName = nameList[0];
|
|
|
|
|
this.cobLayerName.SelectedItem = layerName;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<RelevantModel> list = modelList.FindAll(x => x.Name == this.layerInfo.RelevantModel);
|
|
|
|
|
if (list != null && list.Count != 0)
|
|
|
|
|
{
|
|
|
|
|
RelevantModel relevantModel = list[0];
|
|
|
|
|
this.cobModel.SelectedItem = relevantModel;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.layerInfo.RelevantModel == "属性")
|
|
|
|
|
{
|
|
|
|
|
BindCobFields(this.layerInfo.LayerName);
|
|
|
|
|
|
|
|
|
|
this.cobFields.IsEditable = false;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.cobFields.ItemsSource = null;
|
|
|
|
|
this.cobFields.IsEditable = true;
|
|
|
|
|
this.cobFields.Text = this.layerInfo.AreaScale;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("获取外业信息图层配置失败:" + ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnOK_Click(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (this.cobLayerName.SelectedItem == null)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.Show(string.Format("未选择图层名称!"));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (this.cobModel.SelectedItem == null)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.Show(string.Format("未选择关联方式!"));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
RelevantModel model = this.cobModel.SelectedItem as RelevantModel;
|
|
|
|
|
if (model.Name == "属性")
|
|
|
|
|
{
|
|
|
|
|
if (this.cobFields.SelectedItem == null)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.Show(string.Format("未选择属性字段!"));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrWhiteSpace(this.cobFields.Text))
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.Show(string.Format("未输入面积占比!"));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Regex rx = new Regex("^[0-9]*$");
|
|
|
|
|
if (rx.IsMatch(this.cobFields.Text) == false)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.Show(string.Format("面积占比输入不正确,请输入正整数!"));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
double areaScale = Convert.ToDouble(this.cobFields.Text);
|
|
|
|
|
if (areaScale > 100)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.Show(string.Format("面积占比输入不正确,不可超出100!"));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.isADD == true)
|
|
|
|
|
{
|
|
|
|
|
WYZPCfg layerInfo = new WYZPCfg();
|
|
|
|
|
layerInfo.IsCheck = true;
|
|
|
|
|
LayerName layer = this.cobLayerName.SelectedItem as LayerName;
|
|
|
|
|
List<WYZPCfg> WyInfoList = wYZPCfgs.FindAll(x => x.LayerName == layer.Name);
|
|
|
|
|
if (WyInfoList != null && WyInfoList.Count != 0)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.Show(string.Format("{0}图层在配置文件中已存在,不在进行添加,请选择其他图层!", layer.AliasName));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
layerInfo.LayerName = layer.Name;
|
|
|
|
|
layerInfo.LayerAliasName = layer.AliasName;
|
|
|
|
|
layerInfo.RelevantModel = model.Name;
|
|
|
|
|
if (layerInfo.RelevantModel == "属性")
|
|
|
|
|
{
|
|
|
|
|
LayerField field = this.cobFields.SelectedItem as LayerField;
|
|
|
|
|
layerInfo.AttributeField = field.Name;
|
|
|
|
|
layerInfo.AreaScale = null;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
layerInfo.AreaScale = this.cobFields.Text;
|
|
|
|
|
layerInfo.AttributeField = null;
|
|
|
|
|
}
|
|
|
|
|
wYZPCfgs.Add(layerInfo);
|
|
|
|
|
MessageHelper.Show("外业信息图层添加成功!");
|
|
|
|
|
Refresh?.Invoke();
|
|
|
|
|
this.Close();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (this.layerInfo != null)
|
|
|
|
|
{
|
|
|
|
|
LayerName layer = this.cobLayerName.SelectedItem as LayerName;
|
|
|
|
|
foreach (WYZPCfg item in wYZPCfgs)
|
|
|
|
|
{
|
|
|
|
|
if (item.LayerName == this.layerInfo.LayerName)
|
|
|
|
|
{
|
|
|
|
|
item.LayerName = layer.Name;
|
|
|
|
|
item.LayerAliasName = layer.AliasName;
|
|
|
|
|
item.RelevantModel = model.Name;
|
|
|
|
|
if (item.RelevantModel == "属性")
|
|
|
|
|
{
|
|
|
|
|
LayerField field = this.cobFields.SelectedItem as LayerField;
|
|
|
|
|
item.AttributeField = field.Name;
|
|
|
|
|
item.AreaScale = string.Empty;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
item.AreaScale = this.cobFields.Text;
|
|
|
|
|
item.AttributeField = string.Empty;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
MessageHelper.Show("外业信息图层修改成功!");
|
|
|
|
|
Refresh?.Invoke();
|
|
|
|
|
this.Close();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
if (this.isADD)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("外业信息图层添加失败:" + ex);
|
|
|
|
|
MessageHelper.Show("外业信息图层添加失败:" + ex);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("外业信息图层修改失败:" + ex);
|
|
|
|
|
MessageHelper.Show("外业信息图层修改失败:" + ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CobLayerName_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (e.AddedItems != null && e.AddedItems.Count != 0)
|
|
|
|
|
{
|
|
|
|
|
LayerName layerName = e.AddedItems[0] as LayerName;
|
|
|
|
|
|
|
|
|
|
if (this.cobModel.SelectedItem != null)
|
|
|
|
|
{
|
|
|
|
|
RelevantModel model = this.cobModel.SelectedItem as RelevantModel;
|
|
|
|
|
if (model.Name == "属性")
|
|
|
|
|
{
|
|
|
|
|
BindCobFields(layerName.Name);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CobModel_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (e.AddedItems != null && e.AddedItems.Count != 0)
|
|
|
|
|
{
|
|
|
|
|
RelevantModel model = e.AddedItems[0] as RelevantModel;
|
|
|
|
|
if (model.Name == "属性")
|
|
|
|
|
{
|
|
|
|
|
if (this.cobLayerName.SelectedItem == null)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.Show(string.Format("请先选择图层名称,才能获取属性字段!"));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
LayerName layerName = this.cobLayerName.SelectedItem as LayerName;
|
|
|
|
|
BindCobFields(layerName.Name);
|
|
|
|
|
this.cobFields.IsEditable = false;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.cobFields.ItemsSource = null;
|
|
|
|
|
this.cobFields.IsEditable = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void BindCobFields(string layerName)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
List<LayerField> fieldList = new List<LayerField>();
|
|
|
|
|
IFeatureLayer layer = MapsManager.Instance.MapService.GetFeatureLayerByName(layerName);
|
|
|
|
|
IFields fields = layer.FeatureClass.Fields;
|
|
|
|
|
for (int i = 0; i < fields.FieldCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IField field = fields.Field[i];
|
|
|
|
|
string fieldName = field.Name;
|
|
|
|
|
if (field.Name.ToUpper().Contains("SHAPE"))
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
LayerField fieldInfo = new LayerField();
|
|
|
|
|
fieldInfo.Name = fieldName;
|
|
|
|
|
fieldInfo.AliasName = field.AliasName;
|
|
|
|
|
fieldInfo.Index = i;
|
|
|
|
|
fieldList.Add(fieldInfo);
|
|
|
|
|
}
|
|
|
|
|
this.cobFields.ItemsSource = fieldList;
|
|
|
|
|
|
|
|
|
|
if (this.isADD == false && this.layerInfo != null)
|
|
|
|
|
{
|
|
|
|
|
List<LayerField> list = fieldList.FindAll(x => x.Name == this.layerInfo.AttributeField);
|
|
|
|
|
if (list != null && list.Count != 0)
|
|
|
|
|
{
|
|
|
|
|
LayerField layerField = list[0];
|
|
|
|
|
this.cobFields.SelectedItem = layerField;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("获取属性字段失败:" + ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnCancel_Click(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
this.Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class LayerName
|
|
|
|
|
{
|
|
|
|
|
public int Index { get; set; }
|
|
|
|
|
public string Name { get; set; }
|
|
|
|
|
public string AliasName { get; set; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class RelevantModel
|
|
|
|
|
{
|
|
|
|
|
public int Index { get; set; }
|
|
|
|
|
public string Name { get; set; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class LayerField
|
|
|
|
|
{
|
|
|
|
|
public int Index { get; set; }
|
|
|
|
|
public string Name { get; set; }
|
|
|
|
|
public string AliasName { get; set; }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|