|
|
|
|
using Kingo.PluginServiceInterface.Model;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Xml.Serialization;
|
|
|
|
|
|
|
|
|
|
namespace Kingo.PluginServiceInterface
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
[XmlRoot("LayerInfo")]
|
|
|
|
|
public class LayerCfg
|
|
|
|
|
{
|
|
|
|
|
[System.Xml.Serialization.XmlIgnore]
|
|
|
|
|
public int ID { get; private set; }
|
|
|
|
|
[System.Xml.Serialization.XmlIgnore]
|
|
|
|
|
public int PID { get; private set; }
|
|
|
|
|
[System.Xml.Serialization.XmlIgnore]
|
|
|
|
|
public Bitmap SymbolImg { get; set; }
|
|
|
|
|
[System.Xml.Serialization.XmlIgnore]
|
|
|
|
|
public object Data { get; set; }
|
|
|
|
|
[System.Xml.Serialization.XmlIgnore]
|
|
|
|
|
public bool IsEdit { get; set; }
|
|
|
|
|
[System.Xml.Serialization.XmlIgnore]
|
|
|
|
|
public int ImgIndex { get; set; }
|
|
|
|
|
[System.Xml.Serialization.XmlIgnore]
|
|
|
|
|
private bool _IsLoad;
|
|
|
|
|
public bool IsLoad
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
//_IsLoad = !string.IsNullOrWhiteSpace(FcPath);
|
|
|
|
|
return _IsLoad;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
if (value && !string.IsNullOrWhiteSpace(FcPath))
|
|
|
|
|
{
|
|
|
|
|
_IsLoad = value;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_IsLoad = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 图层名
|
|
|
|
|
/// </summary>
|
|
|
|
|
[XmlAttribute("LayerName")]
|
|
|
|
|
public string LayerName { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 表名
|
|
|
|
|
/// </summary>
|
|
|
|
|
[XmlAttribute("FcName")]
|
|
|
|
|
public string FcName { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 节点展开状态
|
|
|
|
|
/// </summary>
|
|
|
|
|
[XmlAttribute("Expanded")]
|
|
|
|
|
public bool Expanded { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 是否显示
|
|
|
|
|
/// </summary>
|
|
|
|
|
[XmlAttribute("Visible")]
|
|
|
|
|
public bool Visible { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 是否可选
|
|
|
|
|
/// </summary>
|
|
|
|
|
[XmlAttribute("Selectable")]
|
|
|
|
|
public bool Selectable { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 是否允许编辑
|
|
|
|
|
/// </summary>
|
|
|
|
|
[XmlAttribute("AllowEdit")]
|
|
|
|
|
public bool AllowEdit { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 图层透明度
|
|
|
|
|
/// </summary>
|
|
|
|
|
[XmlAttribute("Transparency")]
|
|
|
|
|
public int Transparency { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 是否必选图层
|
|
|
|
|
/// </summary>
|
|
|
|
|
[XmlAttribute("Required")]
|
|
|
|
|
public bool Required { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 图层路径
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string FcPath { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 图层符号
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string Symbol { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 图层标注
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string Annotation { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 属性编辑时字段配置方案
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string FieldEditCfg { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 绝对路径Data
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string AbsolutePath { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 区分内外部数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string AbsolutePathType { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 基础数据加载状态
|
|
|
|
|
/// </summary>
|
|
|
|
|
public TBState LoadLayerState { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 图层字段配置
|
|
|
|
|
/// </summary>
|
|
|
|
|
public List<FieldCfg> FieldsCfg
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
List<FieldCfg> result = new List<FieldCfg>();
|
|
|
|
|
if (_FieldsCfg != null)
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < _FieldsCfg.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
_FieldsCfg[i].PID = this.ID;//layerCfg.ID
|
|
|
|
|
_FieldsCfg[i].ID = ID * 100 + i + 1;
|
|
|
|
|
//var subList = GetAllFields(_FieldsCfg[i]);
|
|
|
|
|
//if (subList != null && subList.Count > 0)
|
|
|
|
|
// result.AddRange(subList);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (result.Count == 0)
|
|
|
|
|
return _FieldsCfg;
|
|
|
|
|
else
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
_FieldsCfg = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private List<FieldCfg> _FieldsCfg { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 图层类型
|
|
|
|
|
/// </summary>
|
|
|
|
|
[XmlAttribute("LayerType")]
|
|
|
|
|
public EnumLayerType LayerType { get; set; }
|
|
|
|
|
public List<LayerCfg> Layers { get; set; }
|
|
|
|
|
public int MinScale { get; set; }
|
|
|
|
|
public int MaxScale { get; set; }
|
|
|
|
|
public string DefinitionExpression { get; set; }
|
|
|
|
|
public LayerCfg()
|
|
|
|
|
{
|
|
|
|
|
PID = 0;
|
|
|
|
|
ID = 1;
|
|
|
|
|
Layers = new List<LayerCfg>();
|
|
|
|
|
}
|
|
|
|
|
public LayerCfg(LayerCfg pParentLayer)
|
|
|
|
|
{
|
|
|
|
|
Layers = new List<LayerCfg>();
|
|
|
|
|
if (pParentLayer == null) return;
|
|
|
|
|
PID = pParentLayer.ID;
|
|
|
|
|
ID = pParentLayer.ID * 1000 + pParentLayer.Layers.Count + 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string FileSize { get; set; }
|
|
|
|
|
public bool IsChecked { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 将父子级数据结构转换为普通list
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="list"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public List<LayerCfg> GetAllItem()
|
|
|
|
|
{
|
|
|
|
|
List<LayerCfg> Resultlist = new List<LayerCfg>();
|
|
|
|
|
//foreach (var item in list)
|
|
|
|
|
//{
|
|
|
|
|
OperationChildData(Resultlist, this);
|
|
|
|
|
Resultlist.Add(this);
|
|
|
|
|
//}
|
|
|
|
|
return Resultlist;
|
|
|
|
|
}
|
|
|
|
|
//public List<FieldCfg> GetAllFields(FieldCfg pField)
|
|
|
|
|
public List<FieldCfg> GetAllFields()
|
|
|
|
|
{
|
|
|
|
|
List<FieldCfg> Resultlist = new List<FieldCfg>();
|
|
|
|
|
foreach (FieldCfg pField in this.FieldsCfg)
|
|
|
|
|
{
|
|
|
|
|
OperationChildDataForField(Resultlist, pField);
|
|
|
|
|
Resultlist.Add(pField);
|
|
|
|
|
}
|
|
|
|
|
return Resultlist;
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 递归子级数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="treeDataList">树形列表数据</param>
|
|
|
|
|
/// <param name="parentItem">父级model</param>
|
|
|
|
|
private void OperationChildDataForField(List<FieldCfg> AllList, FieldCfg item)
|
|
|
|
|
{
|
|
|
|
|
if (item.Fields != null)
|
|
|
|
|
{
|
|
|
|
|
if (item.Fields.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (var subItem in item.Fields)
|
|
|
|
|
{
|
|
|
|
|
//subItem.SetParentLayer(item);
|
|
|
|
|
AllList.Add(subItem);
|
|
|
|
|
OperationChildDataForField(AllList, subItem);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#region Private
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 递归子级数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="treeDataList">树形列表数据</param>
|
|
|
|
|
/// <param name="parentItem">父级model</param>
|
|
|
|
|
private void OperationChildData(List<LayerCfg> AllList, LayerCfg item)
|
|
|
|
|
{
|
|
|
|
|
if (item.Layers != null)
|
|
|
|
|
{
|
|
|
|
|
if (item.Layers.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (var subItem in item.Layers)
|
|
|
|
|
{
|
|
|
|
|
subItem.SetParentLayer(item);
|
|
|
|
|
AllList.Add(subItem);
|
|
|
|
|
OperationChildData(AllList, subItem);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void SetParentLayer(LayerCfg pParent)
|
|
|
|
|
{
|
|
|
|
|
PID = pParent.ID;
|
|
|
|
|
ID = pParent.ID * 100 + pParent.Layers.IndexOf(this) + 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
public enum TBState
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 等待中
|
|
|
|
|
/// </summary>
|
|
|
|
|
Waiting = 0,
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 删除
|
|
|
|
|
/// </summary>
|
|
|
|
|
Delete = 1,
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 开始导入
|
|
|
|
|
/// </summary>
|
|
|
|
|
BeingImport = 2,
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 结束导入
|
|
|
|
|
/// </summary>
|
|
|
|
|
EndImport = 3
|
|
|
|
|
}
|
|
|
|
|
//public enum EnumLayerType
|
|
|
|
|
//{
|
|
|
|
|
// GroupLayer,
|
|
|
|
|
// FeatureLayer,
|
|
|
|
|
// RasterLayer,
|
|
|
|
|
// KOTilesLayer,
|
|
|
|
|
// Map
|
|
|
|
|
//}
|
|
|
|
|
}
|