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.
		
		
		
		
		
			
		
			
				
					
					
						
							600 lines
						
					
					
						
							28 KiB
						
					
					
				
			
		
		
	
	
							600 lines
						
					
					
						
							28 KiB
						
					
					
				using ESRI.ArcGIS.Carto; | 
						|
using ESRI.ArcGIS.Geodatabase; | 
						|
using KGIS.Framework.AE; | 
						|
using KGIS.Framework.AE.GPHelper; | 
						|
using KGIS.Framework.Maps; | 
						|
using KGIS.Framework.Platform; | 
						|
using KGIS.Framework.Utils; | 
						|
using KGIS.Framework.Utils.ExtensionMethod; | 
						|
using KGIS.Framework.Utils.Helper; | 
						|
using Kingo.PluginServiceInterface; | 
						|
using System; | 
						|
using System.Collections.Generic; | 
						|
using System.IO; | 
						|
using System.Linq; | 
						|
using System.Runtime.InteropServices; | 
						|
using System.Text; | 
						|
using System.Windows; | 
						|
using System.Windows.Controls; | 
						|
using KUI.Windows; | 
						|
 | 
						|
namespace Kingo.Plugin.DataLoad.View | 
						|
{ | 
						|
    /// <summary> | 
						|
    /// 初始化图斑变更 的交互逻辑 | 
						|
    /// </summary> | 
						|
    public partial class FrmSJTQ : BaseWindow | 
						|
    { | 
						|
        /// <summary> | 
						|
        /// 是否乡镇提取 | 
						|
        /// </summary> | 
						|
        private bool _isXz = false; | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 坐落单位字典 | 
						|
        /// </summary> | 
						|
        private List<DataDicTionary> ZLDMdataDic = null; | 
						|
        private List<DataDicTionary> DLBMDics = null; | 
						|
 | 
						|
        public FrmSJTQ() | 
						|
        { | 
						|
            InitializeComponent(); | 
						|
            rbXZ.IsChecked = true; | 
						|
            InitData(); | 
						|
        } | 
						|
 | 
						|
        private void InitData() | 
						|
        { | 
						|
            ProjectInfo info = (MapsManager.Instance.CurrProjectInfo as ProjectInfo); | 
						|
 | 
						|
            //行政区下拉框绑定值 | 
						|
            ComboxSelXZQ.ItemsSource = GetZLDWDMList().Values; | 
						|
            //默认-地类图斑 | 
						|
            SeleComboxLayer.SelectedIndex = 0; | 
						|
 | 
						|
            DLBMDics = Platform.Instance.DicHelper.GetDic(DicTypeEnum.DLBM); | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 是否禁用乡镇下拉框 | 
						|
        /// </summary> | 
						|
        /// <param name="sender"></param> | 
						|
        /// <param name="e"></param> | 
						|
        private void RadioButton_Checked(object sender, RoutedEventArgs e) | 
						|
        { | 
						|
            RadioButton radioButton = sender as RadioButton; | 
						|
 | 
						|
            if (radioButton.Content.ToString() == "提取全部基础地类图斑数据") | 
						|
            { | 
						|
                _isXz = false; | 
						|
                ComboxSelXZQ.IsEnabled = false; | 
						|
            } | 
						|
            else | 
						|
            { | 
						|
                _isXz = true; | 
						|
                ComboxSelXZQ.IsEnabled = true; | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 图层改变事件 | 
						|
        /// </summary> | 
						|
        /// <param name="sender"></param> | 
						|
        /// <param name="e"></param> | 
						|
        private void SeleComboxLayer_SelectionChanged(object sender, SelectionChangedEventArgs e) | 
						|
        { | 
						|
            if (SeleComboxLayer.SelectedIndex.ToString() == "0") | 
						|
            { | 
						|
                rbXZ.IsEnabled = false; | 
						|
                rbALL.IsEnabled = false; | 
						|
                ComboxSelXZQ.IsEnabled = false; | 
						|
            } | 
						|
            else | 
						|
            { | 
						|
                rbXZ.IsEnabled = true; | 
						|
                rbALL.IsEnabled = true; | 
						|
                ComboxSelXZQ.IsEnabled = true; | 
						|
                if (rbALL.IsChecked == true) | 
						|
                    ComboxSelXZQ.IsEnabled = false; | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 提取图斑 | 
						|
        /// </summary> | 
						|
        /// <param name="sender"></param> | 
						|
        /// <param name="e"></param> | 
						|
        private void BtnTBTQ_Clic(object sender, RoutedEventArgs e) | 
						|
        { | 
						|
            btnOK.IsEnabled = false; | 
						|
            btnCanel.IsEnabled = false; | 
						|
            try | 
						|
            { | 
						|
                //IFeatureClass jctbFC = MapsManager.Instance.MapService.GetFeatureClassByName("JCTB"); | 
						|
                string SelIndex = SeleComboxLayer.SelectedIndex.ToString(); | 
						|
                if (ComboxSelXZQ.SelectedItems.Count <= 0 && _isXz) | 
						|
                { | 
						|
                    MessageHelper.ShowTips("请选择乡镇数据!"); | 
						|
                    return; | 
						|
                } | 
						|
                IFeatureClass TargetFC = MapsManager.Instance.MapService.GetFeatureClassByName("DLTBBG"); | 
						|
                IFeatureLayer tempBG_Layer = GeoDBAPI.CreateFeatureLayerInmemeory("TempBG", "TempBG", (TargetFC as IGeoDataset).SpatialReference, TargetFC.ShapeType, TargetFC.Fields); | 
						|
 | 
						|
                ITable pTable = TargetFC as ITable; | 
						|
                if (pTable.RowCount(null) != 0) | 
						|
                { | 
						|
                    System.Windows.Forms.DialogResult result = MessageHelper.ShowYesNoCancelAndTips("变更图斑层数据不为空,是否清空现有数据?"); | 
						|
                    if (result == System.Windows.Forms.DialogResult.Yes) | 
						|
                    { | 
						|
                        pTable.DeleteSearchedRows(null); | 
						|
                    } | 
						|
                    else if (result == System.Windows.Forms.DialogResult.Cancel) | 
						|
                    { | 
						|
                        return; | 
						|
                    } | 
						|
                } | 
						|
                this.ShowLoading("正在进行数据提取~", 0, 0); | 
						|
                int SJLYIndex = TargetFC.FindField("SJLY"); | 
						|
                int BGTBYBHIndex = TargetFC.FindField("TBYBH"); | 
						|
                int BGDLBMIndex = TargetFC.FindField("DLBM"); | 
						|
                int BGDLMCIndex = TargetFC.FindField("DLMC"); | 
						|
 | 
						|
                if (SelIndex == "0") | 
						|
                { | 
						|
                    #region 地类图斑提取数据 | 
						|
                    IFeatureClassAPI fCAPI_JCDLTB = new FeatureClassAPI(MapsManager.Instance.MapService.GetFeatureLayerByLayerName("地类图斑").FeatureClass); | 
						|
                    string currentAppPath = SysAppPath.GetCurrentAppPath(); | 
						|
                    string templeteGDBPath = Path.Combine(currentAppPath, "Template", "TempGDB.gdb"); | 
						|
                    string resultPath = Path.Combine(currentAppPath, "Temp\\Temp_TQBGTB"); | 
						|
                    string savePath = Path.Combine(resultPath, Guid.NewGuid().ToString() + ".gdb"); | 
						|
 | 
						|
                    DelectDir(resultPath); | 
						|
                    CopyDirectory(templeteGDBPath, savePath, true); | 
						|
                    WorkspaceAPI workspaceAPI_Temp = new WorkspaceAPI(savePath, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.GDBFile, true); | 
						|
                    IQueryFilter queryFilter = new QueryFilterClass(); | 
						|
                    if (_isXz) | 
						|
                    { | 
						|
                        string where = string.Empty; | 
						|
                        if (GetZLDWDMList().Count != ComboxSelXZQ.SelectedItems.Count) | 
						|
                        { | 
						|
                            foreach (var item in ComboxSelXZQ.SelectedItems) | 
						|
                            { | 
						|
                                where += string.Format(" ZLDWDM like '{0}%' or", item.ToString().Split('_')[0].Substring(0, 9)); | 
						|
                            } | 
						|
                            where = where.Substring(0, where.Length - 2); | 
						|
                            queryFilter.WhereClause = where; | 
						|
                        } | 
						|
                        fCAPI_JCDLTB.FcToFc(tempBG_Layer.FeatureClass, queryFilter, false); | 
						|
                    } | 
						|
                    else | 
						|
                    { | 
						|
                        fCAPI_JCDLTB.FcToFc(tempBG_Layer.FeatureClass, null, false); | 
						|
                    } | 
						|
                    IFeatureLayer JCTBFL = MapsManager.Instance.MapService.GetFeatureLayerByName("JCTB"); | 
						|
                    if (JCTBFL.FeatureClass.FeatureCount(null) == 0)//无监测图斑直接提取 | 
						|
                    { | 
						|
                        fCAPI_JCDLTB.FcToFc(TargetFC, queryFilter, false); | 
						|
                        this.CloseLoading(); | 
						|
                        MessageHelper.ShowTips("提取完成!"); | 
						|
                        return; | 
						|
                    } | 
						|
 | 
						|
                    IFeatureLayer SelectFeatureLayer = null; | 
						|
                    GPParamClass gPParamClass = new GPParamClass | 
						|
                    { | 
						|
                        Tolerance = "0.0001", | 
						|
                        FirstFeatureLayer = JCTBFL, | 
						|
                        SecondFeatureLayer = tempBG_Layer, | 
						|
                        IsGetOutPutFeature = true, | 
						|
                        Overlap_type = "INTERSECT" | 
						|
                    }; | 
						|
                    GeoprocessorHelper.SelectLayerByLocationAnalysis(gPParamClass, ref SelectFeatureLayer); | 
						|
                    //基础图斑与监测图斑相交, | 
						|
                    IFeatureLayer featureLayer = null; | 
						|
                    gPParamClass = new GPParamClass | 
						|
                    { | 
						|
                        FirstFeatureLayer = tempBG_Layer, | 
						|
                        SecondFeatureLayer = new FeatureLayerClass() { FeatureClass = JCTBFL.FeatureClass }, | 
						|
                        OutFeatureClassPath = savePath + "\\DLTBGX_UNION", | 
						|
                        IsGetOutPutFeature = true | 
						|
                    }; | 
						|
                    GeoprocessorHelper.UnionAnalysis(gPParamClass, ref featureLayer); | 
						|
 | 
						|
                    int indexBsm = featureLayer.FeatureClass.FindField("BSM"); | 
						|
                    int indexBSM = tempBG_Layer.FeatureClass.FindField("BSM"); | 
						|
 | 
						|
                    StringBuilder stringBuilder = new StringBuilder(); | 
						|
                    StringBuilder JCOIDSBuilder = new StringBuilder(); | 
						|
                    StringBuilder JCSJLYBuilder = new StringBuilder(); | 
						|
                    Dictionary<string, string> keyValuePairs = new Dictionary<string, string>(); | 
						|
                    Dictionary<string, string> JCValuePairs = new Dictionary<string, string>(); | 
						|
                    ICursor pCur = null; | 
						|
                    IRow pRow = null; | 
						|
                    IQueryDef pQDef = ((featureLayer.FeatureClass as FeatureClass).Workspace as IFeatureWorkspace).CreateQueryDef(); | 
						|
                    pQDef.Tables = "DLTBGX_UNION"; | 
						|
                    pQDef.WhereClause = " 1=1 AND FID_JCTB<>-1 AND BSM<>'' AND SHAPE_Area>=10.0 "; | 
						|
                    pQDef.SubFields = "FID_JCTB,BSM,TBBH,FID_TempBG"; | 
						|
                    pCur = pQDef.Evaluate(); | 
						|
                    while ((pRow = pCur.NextRow()) != null) | 
						|
                    { | 
						|
                        //存储监测图斑OIDS | 
						|
                        JCOIDSBuilder.Append(string.Format("{0},", pRow.get_Value(0).ToString())); | 
						|
                        //存储基础库图斑OIDS | 
						|
                        stringBuilder.Append(string.Format("{0},", pRow.get_Value(3).ToString())); | 
						|
                        if (!string.IsNullOrWhiteSpace(pRow.get_Value(2).ToString())) | 
						|
                        { | 
						|
                            if (!keyValuePairs.ContainsKey(pRow.get_Value(1).ToString())) | 
						|
                            { | 
						|
                                //存储BSM和监测编号 | 
						|
                                keyValuePairs[pRow.get_Value(1).ToString()] = pRow.get_Value(2).ToString(); | 
						|
                                //存储BSM和监测OIDS | 
						|
                                JCValuePairs[pRow.get_Value(1).ToString()] = pRow.get_Value(0).ToString(); | 
						|
                            } | 
						|
                            else | 
						|
                            { | 
						|
                                //单个BSM对应多个JCBH | 
						|
                                if (!keyValuePairs[pRow.get_Value(1).ToString()].Contains(pRow.get_Value(2).ToString())) | 
						|
                                    keyValuePairs[pRow.get_Value(1).ToString()] += "," + pRow.get_Value(2).ToString(); | 
						|
                            } | 
						|
                        } | 
						|
                        Marshal.ReleaseComObject(pRow); | 
						|
                    } | 
						|
                    Marshal.ReleaseComObject(pCur); | 
						|
                    //擦除变更层中监测图斑 | 
						|
                    IFeatureClassAPI JC_FcAPI = new FeatureClassAPI(JCTBFL.FeatureClass); | 
						|
                    IFeatureLayer jctb_Layer = GeoDBAPI.CreateFeatureLayerInmemeory("JCTBTemp", "JCTBTempData", (JCTBFL.FeatureClass as IGeoDataset).SpatialReference, JCTBFL.FeatureClass.ShapeType, JCTBFL.FeatureClass.Fields); | 
						|
                    //与基础库图斑相交上的监测图斑 | 
						|
                    if (JCOIDSBuilder.Length > 0) | 
						|
                        JC_FcAPI.FcToFc(jctb_Layer.FeatureClass, new QueryFilterClass() { WhereClause = string.Format("OBJECTID in({0}) ", JCOIDSBuilder.ToString().Trim(',')) }, false); | 
						|
                    else | 
						|
                        JC_FcAPI.FcToFc(jctb_Layer.FeatureClass, null, false); | 
						|
                    //上一步生成的变更图斑擦除监测图斑 | 
						|
                    IFeatureLayer pdltbbgFeatureLayer = null; | 
						|
                    gPParamClass = new GPParamClass | 
						|
                    { | 
						|
                        FirstFeatureLayer = tempBG_Layer, | 
						|
                        SecondFeatureLayer = jctb_Layer, | 
						|
                        OutFeatureClassPath = savePath + "\\" + "TempDLTBBG", | 
						|
                        IsGetOutPutFeature = true | 
						|
                    }; | 
						|
                    GeoprocessorHelper.EraseAnalysis(gPParamClass, ref pdltbbgFeatureLayer); | 
						|
 | 
						|
                    IFeatureLayer TempTBBG_Erase = null; | 
						|
                    gPParamClass = new GPParamClass | 
						|
                    { | 
						|
                        FirstFeatureLayer = pdltbbgFeatureLayer, | 
						|
                        OutFeatureClassPath = savePath + "\\" + "TempTBBG_Erase", | 
						|
                        IsGetOutPutFeature = true | 
						|
                    }; | 
						|
                    GeoprocessorHelper.MultipartToSinglePath(gPParamClass, ref TempTBBG_Erase); | 
						|
 | 
						|
                    IFeatureClassAPI Tebgfc_API = new FeatureClassAPI(TempTBBG_Erase.FeatureClass); | 
						|
                    queryFilter.WhereClause = " SHAPE_Area >= 0.1"; | 
						|
                    Tebgfc_API.FcToFc(TargetFC, queryFilter, false); | 
						|
 | 
						|
                    IFeatureLayer featureLayer_Intercet = null; | 
						|
                    gPParamClass = new GPParamClass | 
						|
                    { | 
						|
                        FirstFeatureLayer = tempBG_Layer, | 
						|
                        SecondFeatureLayer = jctb_Layer, | 
						|
                        Tolerance = "0.0001", | 
						|
                        IsGetOutPutFeature = true, | 
						|
                        OutFeatureClassPath = savePath + "\\" + "TempTBBG_Intersect", | 
						|
                    }; | 
						|
                    GeoprocessorHelper.IntersectAnalysis(gPParamClass, ref featureLayer_Intercet); | 
						|
 | 
						|
                    int Index_JCTBYBH = featureLayer_Intercet.FeatureClass.FindField("TBYBH"); | 
						|
                    int Index_JCBH = featureLayer_Intercet.FeatureClass.FindField("TBBH"); | 
						|
                    int Index_JCSJLY = featureLayer_Intercet.FeatureClass.FindField("SJLY"); | 
						|
                    ITable table_JC = featureLayer_Intercet.FeatureClass as ITable; | 
						|
                    ICursor cursor_JC = table_JC.Update(null, true); | 
						|
                    IRow row_JC = null; | 
						|
                    while ((row_JC = cursor_JC.NextRow()) != null) | 
						|
                    { | 
						|
                        row_JC.Value[Index_JCTBYBH] = row_JC.Value[Index_JCBH]; | 
						|
                        row_JC.Value[Index_JCSJLY] = "1"; | 
						|
                        cursor_JC.UpdateRow(row_JC); | 
						|
                    } | 
						|
                    cursor_JC.Flush(); | 
						|
                    IFeatureClassAPI Tejcfc_API = new FeatureClassAPI(featureLayer_Intercet.FeatureClass); | 
						|
                    Tejcfc_API.FcToFc(TargetFC, null, false); | 
						|
 | 
						|
                    //根据变更BSM修改数据来源 | 
						|
                    //if (JCSJLYBuilder.Length != 0) | 
						|
                    //    (TargetFC as FeatureClass).Workspace.ExecuteSQL(string.Format("Update DLTBBG set SJLY = '1' WHERE BSM IN({0})", JCSJLYBuilder.ToString().TrimEnd(','))); | 
						|
                    if (null != featureLayer) | 
						|
                        Marshal.FinalReleaseComObject(featureLayer); | 
						|
                    if (TargetFC != null) | 
						|
                        Marshal.FinalReleaseComObject(TargetFC); | 
						|
                    if (tempBG_Layer != null) | 
						|
                        Marshal.FinalReleaseComObject(tempBG_Layer); | 
						|
                    if (jctb_Layer != null) | 
						|
                        Marshal.FinalReleaseComObject(jctb_Layer); | 
						|
                    if (featureLayer_Intercet != null) | 
						|
                        Marshal.FinalReleaseComObject(featureLayer_Intercet); | 
						|
                    #endregion | 
						|
                } | 
						|
                this.CloseLoading(); | 
						|
                MessageHelper.ShowTips("提取完成!"); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                MessageHelper.ShowTips(ex.Message); | 
						|
                LogAPI.Debug(ex.Message); | 
						|
                this.CloseLoading(); | 
						|
            } | 
						|
            finally | 
						|
            { | 
						|
                btnOK.IsEnabled = true; | 
						|
                btnCanel.IsEnabled = true; | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        private void BtnTBTQ_Click(object sender, RoutedEventArgs e) | 
						|
        { | 
						|
            btnOK.IsEnabled = false; | 
						|
            btnCanel.IsEnabled = false; | 
						|
            IFeatureLayer featureLayer = null; | 
						|
            IFeatureLayer tempBG_Layer = null; | 
						|
            ICursor pCur = null; | 
						|
            try | 
						|
            { | 
						|
                string SelIndex = SeleComboxLayer.SelectedIndex.ToString(); | 
						|
                if (ComboxSelXZQ.SelectedItems.Count <= 0 && _isXz) | 
						|
                { | 
						|
                    MessageHelper.ShowTips("请选择乡镇数据!"); | 
						|
                    return; | 
						|
                } | 
						|
                IFeatureClass TargetFC = MapsManager.Instance.MapService.GetFeatureClassByName("DLTBBG"); | 
						|
                tempBG_Layer = GeoDBAPI.CreateFeatureLayerInmemeory("TempBG", "TempBG", (TargetFC as IGeoDataset).SpatialReference, TargetFC.ShapeType, TargetFC.Fields); | 
						|
                ITable pTable = TargetFC as ITable; | 
						|
                if (pTable.RowCount(null) != 0) | 
						|
                { | 
						|
                    System.Windows.Forms.DialogResult result = MessageHelper.ShowYesNoCancelAndTips("变更图斑层数据不为空,是否清空现有数据?"); | 
						|
                    if (result == System.Windows.Forms.DialogResult.Yes) | 
						|
                    { | 
						|
                        pTable.DeleteSearchedRows(null); | 
						|
                    } | 
						|
                    else if (result == System.Windows.Forms.DialogResult.Cancel) | 
						|
                    { | 
						|
                        return; | 
						|
                    } | 
						|
                } | 
						|
                this.ShowLoading("正在进行数据提取~", 0, 0); | 
						|
                int SJLYIndex = TargetFC.FindField("SJLY"); | 
						|
                int BGTBYBHIndex = TargetFC.FindField("TBYBH"); | 
						|
                int BGDLBMIndex = TargetFC.FindField("DLBM"); | 
						|
                int BGDLMCIndex = TargetFC.FindField("DLMC"); | 
						|
 | 
						|
                if (SelIndex == "0") | 
						|
                { | 
						|
                    #region 地类图斑提取数据 | 
						|
                    IFeatureClassAPI fCAPI_JCDLTB = new FeatureClassAPI(MapsManager.Instance.MapService.GetFeatureLayerByLayerName("地类图斑").FeatureClass); | 
						|
                    string currentAppPath = SysAppPath.GetCurrentAppPath(); | 
						|
                    string templeteGDBPath = Path.Combine(currentAppPath, "Template", "TempGDB.gdb"); | 
						|
                    string resultPath = Path.Combine(currentAppPath, "Temp\\Temp_TQBGTB"); | 
						|
                    string savePath = Path.Combine(resultPath, Guid.NewGuid().ToString() + ".gdb"); | 
						|
 | 
						|
                    DelectDir(resultPath); | 
						|
                    CopyDirectory(templeteGDBPath, savePath, true); | 
						|
                    WorkspaceAPI workspaceAPI_Temp = new WorkspaceAPI(savePath, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.GDBFile, true); | 
						|
                    IQueryFilter queryFilter = new QueryFilterClass(); | 
						|
                    if (_isXz) | 
						|
                    { | 
						|
                        string where = string.Empty; | 
						|
                        if (GetZLDWDMList().Count != ComboxSelXZQ.SelectedItems.Count) | 
						|
                        { | 
						|
                            foreach (var item in ComboxSelXZQ.SelectedItems) | 
						|
                            { | 
						|
                                where += string.Format(" ZLDWDM like '{0}%' or", item.ToString().Split('_')[0].Substring(0, 9)); | 
						|
                            } | 
						|
                            where = where.Substring(0, where.Length - 2); | 
						|
                            queryFilter.WhereClause = where; | 
						|
                        } | 
						|
                        fCAPI_JCDLTB.FcToFc(tempBG_Layer.FeatureClass, queryFilter, false); | 
						|
                    } | 
						|
                    else | 
						|
                    { | 
						|
                        fCAPI_JCDLTB.FcToFc(tempBG_Layer.FeatureClass, null, false); | 
						|
                    } | 
						|
                    IFeatureLayer JCTBFL = MapsManager.Instance.MapService.GetFeatureLayerByName("JCTB"); | 
						|
                    if (JCTBFL.FeatureClass.FeatureCount(null) == 0)//无监测图斑直接提取 | 
						|
                    { | 
						|
                        this.CloseLoading(); | 
						|
                        MessageHelper.ShowTips("监测图斑没有数据!"); | 
						|
                        return; | 
						|
                    } | 
						|
 | 
						|
                    IFeatureLayer SelectFeatureLayer = null; | 
						|
                    GPParamClass gPParamClass = new GPParamClass | 
						|
                    { | 
						|
                        Tolerance = "0.0001", | 
						|
                        FirstFeatureLayer = JCTBFL, | 
						|
                        SecondFeatureLayer = tempBG_Layer, | 
						|
                        IsGetOutPutFeature = true, | 
						|
                        Overlap_type = "INTERSECT" | 
						|
                    }; | 
						|
                    GeoprocessorHelper.SelectLayerByLocationAnalysis(gPParamClass, ref SelectFeatureLayer); | 
						|
                    //基础图斑与监测图斑相交, | 
						|
 | 
						|
                    gPParamClass = new GPParamClass | 
						|
                    { | 
						|
                        FirstFeatureLayer = tempBG_Layer, | 
						|
                        //SecondFeatureLayer = new FeatureLayerClass() { FeatureClass = JCTBFL.FeatureClass },                         | 
						|
                        SecondFeatureLayer = JCTBFL, | 
						|
                        OutFeatureClassPath = savePath + "\\DLTBGX_UNION", | 
						|
                        IsGetOutPutFeature = true | 
						|
                    }; | 
						|
                    GeoprocessorHelper.UnionAnalysis(gPParamClass, ref featureLayer); | 
						|
 | 
						|
                    int indexBsm = featureLayer.FeatureClass.FindField("BSM"); | 
						|
                    int indexBSM = tempBG_Layer.FeatureClass.FindField("BSM"); | 
						|
                    int DLBMIndex = TargetFC.FindField("DLBM"); | 
						|
                    StringBuilder JCSJLYBuilder = new StringBuilder(); | 
						|
                    IRow pRow = null; | 
						|
                    IQueryDef pQDef = ((featureLayer.FeatureClass as FeatureClass).Workspace as IFeatureWorkspace).CreateQueryDef(); | 
						|
                    pQDef.Tables = "DLTBGX_UNION"; | 
						|
                    pQDef.WhereClause = " 1=1 AND FID_JCTB<>-1 AND BSM<>'' AND SHAPE_Area>=10.0 "; | 
						|
                    pQDef.SubFields = "FID_JCTB,BSM,TBBH,FID_TempBG,NYRDDL";//NYRDDL替换当前基础图斑地类 | 
						|
                    pCur = pQDef.Evaluate(); | 
						|
                    while ((pRow = pCur.NextRow()) != null) | 
						|
                    { | 
						|
                        if (!string.IsNullOrWhiteSpace(pRow.get_Value(1).ToString()) && !string.IsNullOrWhiteSpace(pRow.get_Value(4).ToTrim())) | 
						|
                        { | 
						|
                            if (TargetFC.Fields.Field[DLBMIndex].Length >= pRow.get_Value(4).ToTrim().Length) | 
						|
                            { | 
						|
                                pRow.Value[DLBMIndex] = pRow.get_Value(4).ToTrim(); | 
						|
                                pCur.UpdateRow(pRow); | 
						|
                            } | 
						|
                        } | 
						|
                        Marshal.ReleaseComObject(pRow); | 
						|
                    } | 
						|
                    pCur.Flush(); | 
						|
                    //if (!string.IsNullOrWhiteSpace(JCSJLYBuilder.ToString().Trim(','))) | 
						|
                    queryFilter.WhereClause = " 1=1 AND FID_JCTB<>-1 AND BSM<>'' AND SHAPE_Area>=10.0 "; | 
						|
                    ////queryFilter.WhereClause = string.Format(" BSM IN({0})", JCSJLYBuilder.ToString().Trim(',')); | 
						|
                    //else | 
						|
                    //{ | 
						|
                    //    MessageHelper.ShowTips("当前未提取到数据!"); | 
						|
                    //    if (null != featureLayer) | 
						|
                    //        Marshal.FinalReleaseComObject(featureLayer); | 
						|
                    //    if (tempBG_Layer != null) | 
						|
                    //        Marshal.FinalReleaseComObject(tempBG_Layer); | 
						|
                    //    if (pCur != null) | 
						|
                    //        Marshal.ReleaseComObject(pCur); | 
						|
                    //    return; | 
						|
                    //} | 
						|
                    IFeatureClassAPI classAPI = new FeatureClassAPI(featureLayer.FeatureClass); | 
						|
                    classAPI.FcToFc(TargetFC, queryFilter, false); | 
						|
                    #endregion | 
						|
                } | 
						|
                this.CloseLoading(); | 
						|
                MessageHelper.ShowTips("提取完成!"); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                MessageHelper.ShowTips(ex.Message); | 
						|
                LogAPI.Debug(ex.Message); | 
						|
                this.CloseLoading(); | 
						|
            } | 
						|
            finally | 
						|
            { | 
						|
                this.CloseLoading(); | 
						|
                btnOK.IsEnabled = true; | 
						|
                btnCanel.IsEnabled = true; | 
						|
                if (null != featureLayer) | 
						|
                    Marshal.FinalReleaseComObject(featureLayer); | 
						|
                if (tempBG_Layer != null) | 
						|
                    Marshal.FinalReleaseComObject(tempBG_Layer); | 
						|
                if (pCur != null) | 
						|
                    Marshal.ReleaseComObject(pCur); | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 删除该路径下的所有文件和目录 | 
						|
        /// </summary> | 
						|
        /// <param name="srcPath"></param> | 
						|
        public static void DelectDir(string srcPath) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                DirectoryInfo dir = new DirectoryInfo(srcPath); | 
						|
                FileSystemInfo[] fileinfo = dir.GetFileSystemInfos();  //返回目录中所有文件和子目录 | 
						|
                foreach (FileSystemInfo i in fileinfo) | 
						|
                { | 
						|
                    try | 
						|
                    { | 
						|
                        if (i is DirectoryInfo)            //判断是否文件夹 | 
						|
                        { | 
						|
                            DirectoryInfo subdir = new DirectoryInfo(i.FullName); | 
						|
                            subdir.Delete(true);          //删除子目录和文件 | 
						|
                        } | 
						|
                        else | 
						|
                        { | 
						|
                            File.Delete(i.FullName);      //删除指定文件 | 
						|
                        } | 
						|
                    } | 
						|
                    catch (Exception) | 
						|
                    { | 
						|
                        continue; | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug(ex + ":此项错误不处理!");//文件占用报错 | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 拷贝模板gdb文件夹 | 
						|
        /// </summary> | 
						|
        /// <param name="SourcePath"></param> | 
						|
        /// <param name="DestinationPath"></param> | 
						|
        /// <param name="overwriteexisting"></param> | 
						|
        public static void CopyDirectory(string SourcePath, string DestinationPath, bool overwriteexisting) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                SourcePath = SourcePath.EndsWith(@"\") ? SourcePath : SourcePath + @"\"; | 
						|
                DestinationPath = DestinationPath.EndsWith(@"\") ? DestinationPath : DestinationPath + @"\"; | 
						|
 | 
						|
                if (Directory.Exists(SourcePath)) | 
						|
                { | 
						|
                    if (Directory.Exists(DestinationPath) == false) | 
						|
                        Directory.CreateDirectory(DestinationPath); | 
						|
 | 
						|
                    foreach (string fls in Directory.GetFiles(SourcePath)) | 
						|
                    { | 
						|
                        FileInfo flinfo = new FileInfo(fls); | 
						|
                        flinfo.CopyTo(DestinationPath + flinfo.Name, overwriteexisting); | 
						|
                    } | 
						|
                    foreach (string drs in Directory.GetDirectories(SourcePath)) | 
						|
                    { | 
						|
                        DirectoryInfo drinfo = new DirectoryInfo(drs); | 
						|
                        CopyDirectory(drs, DestinationPath + drinfo.Name, overwriteexisting); | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                throw ex; | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 获取行政区代码及名称 | 
						|
        /// </summary> | 
						|
        /// <param name="featureBG"></param> | 
						|
        /// <returns></returns> | 
						|
        private Dictionary<string, string> GetZLDWDMList() | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                ZLDMdataDic = Platform.Instance.DicHelper.GetNoGroupDic(DicTypeEnum.QSDM); | 
						|
                Dictionary<string, string> keyValuePairs = new Dictionary<string, string>(); | 
						|
                if (ZLDMdataDic != null) | 
						|
                { | 
						|
                    foreach (var item in ZLDMdataDic.FindAll(x => x.CODE.Length == 9)) | 
						|
                    { | 
						|
                        keyValuePairs[item.CODE] = item.CODE + "_" + item.NAME; | 
						|
                    } | 
						|
                } | 
						|
                //验证代码BUG | 
						|
                LogAPI.Debug("获取坐落代码数量:" + keyValuePairs.Count); | 
						|
                return keyValuePairs; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug("获取坐落代码失败:" + ex.Message); | 
						|
                return null; | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        private void BtnCanel_Click(object sender, RoutedEventArgs e) | 
						|
        { | 
						|
            this.Close(); | 
						|
        } | 
						|
    } | 
						|
}
 | 
						|
 |