using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IDEParameter
{
    public class GPParamClass
    {
        private string strFirstFeatureLayer;
        private string strSecondFeatureLayer;
        private string strThirdFeatureLayer;
        private IFeatureLayer secondFeatureLayer;
        private IFeatureLayer thirdFeatureLayer;
        private IFeatureLayer firstFeatureLayer;
        /// 
        /// 输入图层路径
        /// 
        public List ListInFeatureClassPath
        {
            get;
            set;
        }
        /// 
        /// 图层一
        /// 
        public string FirstFeatureClassPath
        {
            get;
            set;
        }
        /// 
        /// 图层二
        /// 
        public string SecondFeatureClassPath
        {
            get;
            set;
        }
        /// 
        /// 图层一
        /// 
        [System.Xml.Serialization.XmlIgnore]
        public IFeatureClass FirstFeatureClass
        {
            get { return FirstFeatureLayer.FeatureClass; }
        }
        /// 
        /// 图层二
        /// 
        [System.Xml.Serialization.XmlIgnore]
        public IFeatureClass SecondFeatureClass
        {
            get { return SecondFeatureLayer.FeatureClass; }
        }
        /// 
        /// 图层一
        /// 
        public string StrFirstFeatureLayer
        {
            get
            {
                return strFirstFeatureLayer;
            }
            set => strFirstFeatureLayer = value;
        }
        [System.Xml.Serialization.XmlIgnore]
        public IFeatureLayer FirstFeatureLayer
        {
            get
            {
                firstFeatureLayer = KGIS.Framework.AE.GeoDBAPI.DeSerialzedPersist(strFirstFeatureLayer) as IFeatureLayer;
                return firstFeatureLayer;
            }
            set
            {
                try
                {
                    firstFeatureLayer = value;
                    strFirstFeatureLayer = KGIS.Framework.AE.GeoDBAPI.SerialzedPersist(value);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("qqq");
                    Console.WriteLine(ex.Message);
                }
            }
        }
        [System.Xml.Serialization.XmlIgnore]
        public IFeatureLayer FirstFeatureLayer2
        {
            get;
            set;
        }
        public string StrSecondFeatureLayer
        {
            get
            {
                return strSecondFeatureLayer;
            }
            set => strSecondFeatureLayer = value;
        }
        /// 
        /// 图层二
        /// 
        [System.Xml.Serialization.XmlIgnore]
        public IFeatureLayer SecondFeatureLayer
        {
            get
            {
                secondFeatureLayer = KGIS.Framework.AE.GeoDBAPI.DeSerialzedPersist(strSecondFeatureLayer) as IFeatureLayer;
                return secondFeatureLayer;
            }
            set
            {
                secondFeatureLayer = value;
                StrSecondFeatureLayer = KGIS.Framework.AE.GeoDBAPI.SerialzedPersist(value);
            }
        }
        public string StrThirdFeatureLayer
        {
            get
            {
                return strThirdFeatureLayer;
            }
            set => strThirdFeatureLayer = value;
        }
        /// 
        /// 图层三
        /// 
        [System.Xml.Serialization.XmlIgnore]
        public IFeatureLayer ThirdFeatureLayer
        {
            get
            {
                thirdFeatureLayer = KGIS.Framework.AE.GeoDBAPI.DeSerialzedPersist(strThirdFeatureLayer) as IFeatureLayer;
                return thirdFeatureLayer;
            }
            set
            {
                thirdFeatureLayer = value;
                StrThirdFeatureLayer = KGIS.Framework.AE.GeoDBAPI.SerialzedPersist(value);
            }
        }
        /// 
        /// 输出图层路径
        /// 
        public string OutFeatureClassPath
        {
            get;
            set;
        }
        /// 
        /// 容差:单位  米
        /// 
        public string Tolerance
        {
            get;
            set;
        }
        /// 
        /// 保存属性
        /// 
        public string PreserveAttributes
        {
            get;
            set;
        }
        /// 
        /// 标签图层路径
        /// 
        public string LableFeature
        {
            get;
            set;
        }
        /// 
        /// 融合字段
        /// 
        public List ListDissolveFiledName
        {
            get;
            set;
        }
        /// 
        /// 输入坐标参考Code
        /// 
        public int InputCoordinateSystemCode
        {
            get;
            set;
        }
        /// 
        /// 输入坐标参考路径
        /// 
        public string InputCoordinateSystem
        {
            get;
            set;
        }
        /// 
        /// 输入坐标参考
        /// 
        [System.Xml.Serialization.XmlIgnore]
        public ESRI.ArcGIS.Geometry.ISpatialReference InputSpatialReference
        {
            get;
            set;
        }
        /// 
        /// 输出坐标参考路径
        /// 
        public string OutputCoordinateSystem
        {
            get;
            set;
        }
        /// 
        /// 空间赋值Spatial join关系选择
        /// 
        public string Match_option
        {
            get;
            set;
        }
        /// 
        /// 是否获取GP工具生成后的图层
        /// 
        public bool IsGetOutPutFeature
        {
            get;
            set;
        }
        /// 
        /// 坐标参考转换参数
        /// 
        public ProjectParamtersClass ParamtersClass
        {
            get;
            set;
        }
        public bool quxiaoxianfenge { get; set; }
        /// 
        /// 要素转点时:Inside(内部)选项
        /// 
        public string Inside
        {
            get;
            set;
        }
        /// 
        /// Statistics_Fields
        /// 
        public object Statistics_Fields { get; set; }
        public string Where_clause { get; set; }
        public EnumGPType GPType { get; set; }
        public string FcName { get; set; }
        public string Overlap_type { get; set; }
        public string Search_radius { get; set; }
        public string Join_type { get; set; }
        public bool JOIN_ONE_TO_ONE { get; set; }
        public bool Multi_part { get; set; }
        public string TempGDBPath { get; set; }
        public string XZQDM { get; set; }
    }
    public enum EnumGPType
    {
        Default,
        Dissolve,
        Union,
        FcToFc,
        Intersect,
        Erase,
        PolygonToLine,
        UnsplitLine,
        SelectLayerByLocation,
        SelectLayerByAttribute,
        MultipartToSinglePath,
        SpatialJoin,
        Get20XDLTB,
        Identify,
        BGTBYCL,
        YBG,
        CZCYCL,
        CZCBG,
        XZQYCL,
        XZQBG,
        CJDCQYCL,
        CJDCQBG
    }
}