|
|
|
|
using Aspose.Cells;
|
|
|
|
|
using DevExpress.XtraPrinting.Native;
|
|
|
|
|
using ESRI.ArcGIS.Carto;
|
|
|
|
|
using ESRI.ArcGIS.DataManagementTools;
|
|
|
|
|
using ESRI.ArcGIS.DataSourcesFile;
|
|
|
|
|
using ESRI.ArcGIS.esriSystem;
|
|
|
|
|
using ESRI.ArcGIS.Geodatabase;
|
|
|
|
|
using ESRI.ArcGIS.Geometry;
|
|
|
|
|
using ESRI.ArcGIS.Geoprocessing;
|
|
|
|
|
using ESRI.ArcGIS.Geoprocessor;
|
|
|
|
|
using ExcelDataReader;
|
|
|
|
|
using KGIS.Framework.AE;
|
|
|
|
|
using KGIS.Framework.AE.Enum;
|
|
|
|
|
using KGIS.Framework.AE.GPHelper;
|
|
|
|
|
using KGIS.Framework.DBOperator;
|
|
|
|
|
using KGIS.Framework.Platform.Helper;
|
|
|
|
|
using KGIS.Framework.ThreadManager;
|
|
|
|
|
using KGIS.Framework.Utils;
|
|
|
|
|
using KGIS.Framework.Utils.ExtensionMethod;
|
|
|
|
|
using KGIS.Framework.Utils.Helper;
|
|
|
|
|
using Kingo.PluginServiceInterface;
|
|
|
|
|
using Kingo.PluginServiceInterface.Model;
|
|
|
|
|
using KUI.Windows;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Diagnostics;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Runtime.InteropServices;
|
|
|
|
|
using System.Security.AccessControl;
|
|
|
|
|
using System.Windows;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
using System.Windows.Media;
|
|
|
|
|
using System.Xml.Linq;
|
|
|
|
|
using WpfApp1.Helper;
|
|
|
|
|
using WpfApp1.Model;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace WpfApp1
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// UserControl1.xaml 的交互逻辑
|
|
|
|
|
/// </summary>
|
|
|
|
|
public partial class UserControl1 : System.Windows.Controls.UserControl
|
|
|
|
|
{
|
|
|
|
|
List<TestData> list = new List<TestData>();
|
|
|
|
|
public UserControl1()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
list.Add(new TestData() { IsChecked = true, Descriction = "县级填报", ItemType = "1" });
|
|
|
|
|
list.Add(new TestData() { IsChecked = true, Descriction = "市级审核", ItemType = "2" });
|
|
|
|
|
list.Add(new TestData() { IsChecked = true, Descriction = "省级审核", ItemType = "3" });
|
|
|
|
|
list.Add(new TestData() { IsChecked = true, Descriction = "国家核查", ItemType = "4" });
|
|
|
|
|
list.Add(new TestData() { IsChecked = true, Descriction = "地类核查通过", ItemType = "5" });
|
|
|
|
|
//AttributeItemsSourse.ItemsSource = list;
|
|
|
|
|
RelatedCombox.DisplayMember = "Descriction";
|
|
|
|
|
RelatedCombox.ItemsSource = list;
|
|
|
|
|
}
|
|
|
|
|
private List<AnalysisExport> ListData { get; set; }
|
|
|
|
|
|
|
|
|
|
#region 选择变更图斑所在文件夹
|
|
|
|
|
private void SelectBGTB_Click(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
FolderBrowserDialog dialog = new FolderBrowserDialog();
|
|
|
|
|
dialog.Description = "请选择变更数据文件夹";
|
|
|
|
|
System.Windows.Forms.DialogResult dialogResult = dialog.ShowDialog();
|
|
|
|
|
if (dialogResult != System.Windows.Forms.DialogResult.OK && dialogResult != System.Windows.Forms.DialogResult.Yes)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
DirectorySecurity dirSec = new DirectorySecurity(dialog.SelectedPath, AccessControlSections.Access);
|
|
|
|
|
if (dirSec.AreAuditRulesProtected)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.ShowTips(string.Format("系统对路径[{0}]的读取权限不足无法读取!", dialog.SelectedPath));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.gvCtrl.ItemsSource = null;
|
|
|
|
|
this.bgfwpath.Text = dialog.SelectedPath;
|
|
|
|
|
if (cbSingle.IsChecked == true)
|
|
|
|
|
{
|
|
|
|
|
FindFile_Single(this.bgfwpath.Text);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
FindmultipleFile(this.bgfwpath.Text);
|
|
|
|
|
}
|
|
|
|
|
this.gvCtrl.ItemsSource = ListData;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug(ex.Message);
|
|
|
|
|
LogAPI.Debug(ex.StackTrace);
|
|
|
|
|
MessageHelper.ShowTips("选择变更图斑文件异常:" + ex.Message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public void FindFile_Single(string dirPath)
|
|
|
|
|
{
|
|
|
|
|
ListData = new List<AnalysisExport>();
|
|
|
|
|
IFeatureClass featureClass = null;
|
|
|
|
|
List<string> files = new List<string>();
|
|
|
|
|
FileInfo file = null;
|
|
|
|
|
List<string> xzqdms = new List<string>();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (!Overlap_AfterTreatment.IsNullOrEmpty())
|
|
|
|
|
{
|
|
|
|
|
string gdbpath = Overlap_AfterTreatment.Replace(@"\AfterTreatment", "");
|
|
|
|
|
IWorkspaceAPI wsAPI = new WorkspaceAPI(gdbpath, WorkspaceTypeEnum.GDBFile);
|
|
|
|
|
IFeatureClassAPI classAPI = wsAPI.OpenFeatureClass("AfterTreatment");
|
|
|
|
|
featureClass = classAPI.FeatureClass;
|
|
|
|
|
xzqdms = GetLayerUniqueFieldValueByDataStatistics(featureClass, "xzqdm");
|
|
|
|
|
xzqdms = FilterateXZQ(xzqdms);
|
|
|
|
|
//变更数据
|
|
|
|
|
foreach (var item in xzqdms)
|
|
|
|
|
{
|
|
|
|
|
AnalysisExport AnalysisExport = new AnalysisExport();
|
|
|
|
|
AnalysisExport.ParengFolder = gdbpath;
|
|
|
|
|
AnalysisExport.FileName = "AfterTreatment";
|
|
|
|
|
AnalysisExport.IsChecked = false;
|
|
|
|
|
AnalysisExport.XZQDM = item;
|
|
|
|
|
AnalysisExport.ResultType = "gdb";
|
|
|
|
|
AnalysisExport.FullName = gdbpath;
|
|
|
|
|
AnalysisExport.BGFWName = "去重后数据";
|
|
|
|
|
AnalysisExport.BGFWPath = gdbpath;
|
|
|
|
|
AnalysisExport.OutputExcelPath = bgfwpath.Text;
|
|
|
|
|
AnalysisExport.JCSJPath = "";
|
|
|
|
|
AnalysisExport.JCSJName = "";
|
|
|
|
|
AnalysisExport.JCSJExcelName = "";
|
|
|
|
|
AnalysisExport.JCSJExcelPath = "";
|
|
|
|
|
ListData.Add(AnalysisExport);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var filesshp = System.IO.Directory.GetFiles(dirPath, "*.shp", SearchOption.AllDirectories);
|
|
|
|
|
files.AddRange(filesshp);
|
|
|
|
|
if (filesshp.Length == 0) return;
|
|
|
|
|
file = new FileInfo(files[0]);
|
|
|
|
|
IWorkspaceFactory wsf = new ShapefileWorkspaceFactory();
|
|
|
|
|
ESRI.ArcGIS.Geodatabase.IWorkspace pWorkspace = wsf.OpenFromFile(file.DirectoryName, 0);
|
|
|
|
|
IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
|
|
|
|
|
featureClass = pFeatureWorkspace.OpenFeatureClass(file.Name.Replace(".shp", ""));
|
|
|
|
|
if (featureClass == null) return;
|
|
|
|
|
xzqdms = GetLayerUniqueFieldValueByDataStatistics(featureClass, "xzqdm");
|
|
|
|
|
xzqdms = FilterateXZQ(xzqdms);
|
|
|
|
|
//变更数据
|
|
|
|
|
foreach (var item in xzqdms)
|
|
|
|
|
{
|
|
|
|
|
AnalysisExport AnalysisExport = new AnalysisExport();
|
|
|
|
|
AnalysisExport.ParengFolder = file.DirectoryName;
|
|
|
|
|
AnalysisExport.FileName = file.Name;
|
|
|
|
|
AnalysisExport.IsChecked = false;
|
|
|
|
|
AnalysisExport.XZQDM = item;
|
|
|
|
|
AnalysisExport.ResultType = file.Extension;
|
|
|
|
|
AnalysisExport.FullName = file.FullName;
|
|
|
|
|
AnalysisExport.BGFWName = file.Name;
|
|
|
|
|
AnalysisExport.BGFWPath = file.FullName;
|
|
|
|
|
AnalysisExport.OutputExcelPath = bgfwpath.Text;
|
|
|
|
|
AnalysisExport.JCSJPath = "";
|
|
|
|
|
AnalysisExport.JCSJName = "";
|
|
|
|
|
AnalysisExport.JCSJExcelName = "";
|
|
|
|
|
AnalysisExport.JCSJExcelPath = "";
|
|
|
|
|
ListData.Add(AnalysisExport);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
files.Clear();
|
|
|
|
|
//基础报表
|
|
|
|
|
var filesxml = System.IO.Directory.GetFiles(dirPath, "*土地利用现状分类面积汇总表.xlsx", SearchOption.AllDirectories);
|
|
|
|
|
files.AddRange(filesxml);
|
|
|
|
|
foreach (var item in files)
|
|
|
|
|
{
|
|
|
|
|
file = new FileInfo(item);
|
|
|
|
|
var analysisExport = ListData.Find(x => x.XZQDM == file.Name.Replace("(", "").Substring(0, 6));
|
|
|
|
|
if (analysisExport != null)
|
|
|
|
|
{
|
|
|
|
|
analysisExport.JCSJExcelName = file.Name;
|
|
|
|
|
analysisExport.JCSJExcelPath = file.FullName;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
files.Clear();
|
|
|
|
|
//基础报表
|
|
|
|
|
filesxml = System.IO.Directory.GetFiles(dirPath, "土地利用现状分类面积汇总表*.xlsx", SearchOption.AllDirectories);
|
|
|
|
|
files.AddRange(filesxml);
|
|
|
|
|
if (files.Count == 1)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
FileInfo excelfile = new FileInfo(files[0]);
|
|
|
|
|
using (var streamData = File.Open(excelfile.FullName, FileMode.Open, FileAccess.Read))
|
|
|
|
|
{
|
|
|
|
|
using (var readerData = ExcelReaderFactory.CreateReader(streamData))
|
|
|
|
|
{
|
|
|
|
|
var tjresult = readerData.AsDataSet();
|
|
|
|
|
DataTable tjdataTable = tjresult.Tables[0];
|
|
|
|
|
if (tjdataTable != null && tjdataTable.Rows.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (var item in ListData)
|
|
|
|
|
{
|
|
|
|
|
var row = tjdataTable.Select($"column2='{item.XZQDM}' ");
|
|
|
|
|
if (row != null && row.Length > 0)
|
|
|
|
|
{
|
|
|
|
|
item.JCSJExcelName = excelfile.Name;
|
|
|
|
|
item.JCSJExcelPath = excelfile.FullName;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("读取Excel数据异常:" + ex.Message);
|
|
|
|
|
LogAPI.Debug("读取Excel数据异常:" + ex.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
files.Clear();
|
|
|
|
|
//基础数据
|
|
|
|
|
var filesgdb = System.IO.Directory.GetDirectories(dirPath, "*.gdb", SearchOption.AllDirectories);
|
|
|
|
|
files.AddRange(filesgdb);
|
|
|
|
|
foreach (var item in files)
|
|
|
|
|
{
|
|
|
|
|
file = new FileInfo(item);
|
|
|
|
|
var analysisExport = ListData.Find(x => x.XZQDM == file.Name.Substring(0, 6));
|
|
|
|
|
if (analysisExport != null)
|
|
|
|
|
{
|
|
|
|
|
analysisExport.JCSJName = file.Name;
|
|
|
|
|
analysisExport.JCSJPath = file.FullName;
|
|
|
|
|
if (!string.IsNullOrEmpty(analysisExport.JCSJName) && !string.IsNullOrEmpty(analysisExport.BGFWName) && !string.IsNullOrEmpty(analysisExport.JCSJExcelName))
|
|
|
|
|
{
|
|
|
|
|
analysisExport.IsChecked = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("读取文件异常:" + ex.Message);
|
|
|
|
|
LogAPI.Debug("读取文件异常:" + ex.StackTrace);
|
|
|
|
|
MessageHelper.ShowError("读取文件异常:" + ex.Message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void FindmultipleFile(string dirPath)
|
|
|
|
|
{
|
|
|
|
|
ListData = new List<AnalysisExport>();
|
|
|
|
|
DirectoryInfo FileDir = new DirectoryInfo(dirPath);
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
List<string> files = new List<string>();
|
|
|
|
|
//变更数据
|
|
|
|
|
var filesshp = System.IO.Directory.GetFiles(dirPath, "*.shp", SearchOption.AllDirectories);
|
|
|
|
|
files.AddRange(filesshp);
|
|
|
|
|
if (files.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
filesshp = System.IO.Directory.GetDirectories(dirPath, "*.gdb", SearchOption.TopDirectoryOnly);
|
|
|
|
|
files.AddRange(filesshp);
|
|
|
|
|
}
|
|
|
|
|
foreach (var item in files)
|
|
|
|
|
{
|
|
|
|
|
FileInfo file = new FileInfo(item);
|
|
|
|
|
AnalysisExport AnalysisExport = new AnalysisExport();
|
|
|
|
|
AnalysisExport.ParengFolder = file.DirectoryName;
|
|
|
|
|
AnalysisExport.FileName = file.Name;
|
|
|
|
|
if (file.FullName.EndsWith(".gdb"))
|
|
|
|
|
AnalysisExport.FileSize = $"{Math.Round(Convert.ToDouble(GetDirectoryLength(file.FullName)) / 1024 / 1024, 2)}MB";
|
|
|
|
|
else
|
|
|
|
|
AnalysisExport.FileSize = $"{Math.Round(Convert.ToDouble(file.Length) / 1024 / 1024, 2)}MB";
|
|
|
|
|
AnalysisExport.IsChecked = false;
|
|
|
|
|
AnalysisExport.XZQDM = file.Name.Substring(0, 6);
|
|
|
|
|
AnalysisExport.ResultType = file.Extension;
|
|
|
|
|
AnalysisExport.FullName = file.FullName;
|
|
|
|
|
AnalysisExport.BGFWName = file.Name;
|
|
|
|
|
AnalysisExport.BGFWPath = file.FullName;
|
|
|
|
|
AnalysisExport.OutputExcelPath = bgfwpath.Text;
|
|
|
|
|
AnalysisExport.JCSJPath = "";
|
|
|
|
|
AnalysisExport.JCSJName = "";
|
|
|
|
|
AnalysisExport.JCSJExcelName = "";
|
|
|
|
|
AnalysisExport.JCSJExcelPath = "";
|
|
|
|
|
List<string> codes = KGIS.Framework.Core.Services.RunIDService2.Instance.Codes;
|
|
|
|
|
bool iscontinue = false;
|
|
|
|
|
foreach (var code in codes)
|
|
|
|
|
{
|
|
|
|
|
string c = code.Replace("00", "").Replace("00", "");
|
|
|
|
|
if (!AnalysisExport.XZQDM.StartsWith(c))
|
|
|
|
|
{
|
|
|
|
|
iscontinue = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (iscontinue) continue;
|
|
|
|
|
ListData.Add(AnalysisExport);
|
|
|
|
|
}
|
|
|
|
|
files.Clear();
|
|
|
|
|
//基础报表
|
|
|
|
|
var filesxml = System.IO.Directory.GetFiles(dirPath, "*土地利用现状分类面积汇总表.xlsx", SearchOption.AllDirectories);
|
|
|
|
|
files.AddRange(filesxml);
|
|
|
|
|
foreach (var item in files)
|
|
|
|
|
{
|
|
|
|
|
FileInfo file = new FileInfo(item);
|
|
|
|
|
var analysisExport = ListData.Find(x => x.XZQDM == file.Name.Replace("(", "").Substring(0, 6));
|
|
|
|
|
if (analysisExport != null)
|
|
|
|
|
{
|
|
|
|
|
analysisExport.JCSJExcelName = file.Name;
|
|
|
|
|
analysisExport.JCSJExcelPath = file.FullName;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
files.Clear();
|
|
|
|
|
//基础报表
|
|
|
|
|
filesxml = System.IO.Directory.GetFiles(dirPath, "土地利用现状分类面积汇总表*.xlsx", SearchOption.AllDirectories);
|
|
|
|
|
files.AddRange(filesxml);
|
|
|
|
|
if (files.Count == 1)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
FileInfo file = new FileInfo(files[0]);
|
|
|
|
|
using (var streamData = File.Open(file.FullName, FileMode.Open, FileAccess.Read))
|
|
|
|
|
{
|
|
|
|
|
using (var readerData = ExcelReaderFactory.CreateReader(streamData))
|
|
|
|
|
{
|
|
|
|
|
var tjresult = readerData.AsDataSet();
|
|
|
|
|
DataTable tjdataTable = tjresult.Tables[0];
|
|
|
|
|
if (tjdataTable != null && tjdataTable.Rows.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (var item in ListData)
|
|
|
|
|
{
|
|
|
|
|
var row = tjdataTable.Select($"column2='{item.XZQDM}' ");
|
|
|
|
|
if (row != null && row.Length > 0)
|
|
|
|
|
{
|
|
|
|
|
item.JCSJExcelName = file.Name;
|
|
|
|
|
item.JCSJExcelPath = file.FullName;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("读取Excel数据异常:" + ex.Message);
|
|
|
|
|
LogAPI.Debug("读取Excel数据异常:" + ex.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
files.Clear();
|
|
|
|
|
|
|
|
|
|
//基础数据
|
|
|
|
|
var filesgdb = System.IO.Directory.GetDirectories(dirPath, "*.gdb", SearchOption.AllDirectories);
|
|
|
|
|
files.AddRange(filesgdb);
|
|
|
|
|
foreach (var item in files)
|
|
|
|
|
{
|
|
|
|
|
FileInfo file = new FileInfo(item);
|
|
|
|
|
var analysisExport = ListData.Find(x => x.XZQDM == file.Name.Substring(0, 6));
|
|
|
|
|
if (analysisExport != null)
|
|
|
|
|
{
|
|
|
|
|
analysisExport.JCSJName = file.Name;
|
|
|
|
|
analysisExport.JCSJPath = file.FullName;
|
|
|
|
|
if (!string.IsNullOrEmpty(analysisExport.JCSJName) && !string.IsNullOrEmpty(analysisExport.BGFWName) && !string.IsNullOrEmpty(analysisExport.JCSJExcelName))
|
|
|
|
|
{
|
|
|
|
|
analysisExport.IsChecked = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("读取登记文件异常:" + ex.Message);
|
|
|
|
|
LogAPI.Debug("读取登记文件异常:" + ex.StackTrace);
|
|
|
|
|
MessageHelper.ShowError("读取登记文件异常:" + ex.Message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 过滤授权外的行政区代码
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="xzqdms"></param>
|
|
|
|
|
private List<string> FilterateXZQ(List<string> xzqdms)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
List<string> codes = KGIS.Framework.Core.Services.RunIDService2.Instance.Codes;
|
|
|
|
|
List<string> delxzq = new List<string>();
|
|
|
|
|
foreach (var item in xzqdms)
|
|
|
|
|
{
|
|
|
|
|
foreach (var code in codes)
|
|
|
|
|
{
|
|
|
|
|
string c = code.Replace("00", "").Replace("00", "");
|
|
|
|
|
if (!item.StartsWith(c))
|
|
|
|
|
{
|
|
|
|
|
delxzq.Add(item);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (delxzq.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (var code in delxzq)
|
|
|
|
|
{
|
|
|
|
|
xzqdms.Remove(code);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return xzqdms;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("FilterateXZQ异常:" + ex.Message);
|
|
|
|
|
LogAPI.Debug("FilterateXZQ异常:" + ex.StackTrace);
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static long GetDirectoryLength(string dirPath)
|
|
|
|
|
{
|
|
|
|
|
//判断给定的路径是否存在,如果不存在则退出
|
|
|
|
|
if (!Directory.Exists(dirPath))
|
|
|
|
|
return -1;
|
|
|
|
|
long len = 0;
|
|
|
|
|
|
|
|
|
|
//定义一个DirectoryInfo对象
|
|
|
|
|
DirectoryInfo di = new DirectoryInfo(dirPath);
|
|
|
|
|
|
|
|
|
|
//通过GetFiles方法,获取di目录中的所有文件的大小
|
|
|
|
|
foreach (FileInfo fi in di.GetFiles())
|
|
|
|
|
{
|
|
|
|
|
len += fi.Length;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取di中所有的文件夹,并存到一个新的对象数组中,以进行递归
|
|
|
|
|
DirectoryInfo[] dis = di.GetDirectories();
|
|
|
|
|
if (dis.Length > 0)
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < dis.Length; i++)
|
|
|
|
|
{
|
|
|
|
|
len += GetDirectoryLength(dis[i].FullName);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return len;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
private void cbSingle_Checked(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(bgfwpath.Text) && bgfwpath.Text != "矢量数据中包含多个区县的变更范围,请先勾选下方复选框")
|
|
|
|
|
{
|
|
|
|
|
FindFile_Single(bgfwpath.Text);
|
|
|
|
|
this.gvCtrl.ItemsSource = ListData;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 确定
|
|
|
|
|
private void btn_oK_Click(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (ListData == null || ListData.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.ShowTips("请先选择需要分析的数据.");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (RelatedCombox.SelectedItems.Count == 0 && this.DLTBGXGC.IsChecked != true)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.ShowTips("请先选择数据阶段.");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (this.DLTBGXGC.IsChecked != true && this.JCTB.IsChecked != true && this.GTDCY.IsChecked != true)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.ShowTips("请先选择待分析数据类型.");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
btn_oK.IsEnabled = false;
|
|
|
|
|
btn_nO.IsEnabled = false;
|
|
|
|
|
int num = 0;
|
|
|
|
|
this.ShowLoading("正在进行分析", 0, 0);
|
|
|
|
|
foreach (var item in ListData)
|
|
|
|
|
{
|
|
|
|
|
if (!item.IsChecked) continue;
|
|
|
|
|
item.Prompt = "等待分析……";
|
|
|
|
|
}
|
|
|
|
|
foreach (var item in ListData)
|
|
|
|
|
{
|
|
|
|
|
if (!item.IsChecked) continue;
|
|
|
|
|
if (string.IsNullOrEmpty(item.BGFWName) || string.IsNullOrEmpty(item.JCSJExcelName) || string.IsNullOrEmpty(item.JCSJPath))
|
|
|
|
|
{
|
|
|
|
|
item.Prompt = "缺少数据,无法进行分析……";
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
this.UpdateMsg($"【{item.XZQDM}】正在生成变更成果,请稍后...");
|
|
|
|
|
ThreadParam pParm = new ThreadParam()
|
|
|
|
|
{
|
|
|
|
|
ThreadName = item.XZQDM,
|
|
|
|
|
analysisExport = item,
|
|
|
|
|
};
|
|
|
|
|
CustomIDGParm mIDGParm = null;
|
|
|
|
|
if (this.DLTBGXGC.IsChecked == true)
|
|
|
|
|
{
|
|
|
|
|
mIDGParm = InitData_DLTBGXGC(pParm);
|
|
|
|
|
}
|
|
|
|
|
//else if (this.DLTBGX.IsChecked == true)
|
|
|
|
|
//{
|
|
|
|
|
// mIDGParm = InitData_DLTBGX(pParm);
|
|
|
|
|
//}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
mIDGParm = InitData(pParm);
|
|
|
|
|
}
|
|
|
|
|
item.Prompt = "正在分析……";
|
|
|
|
|
ThreadManager.Instance.QueueUserWorkItem(new System.Threading.WaitCallback(ExecuteBG), mIDGParm, new System.Threading.WaitCallback(ComplateCallBack));
|
|
|
|
|
num++;
|
|
|
|
|
if (num >= Environment.ProcessorCount - 2)
|
|
|
|
|
{
|
|
|
|
|
while (ThreadManager.Instance.ActiveCount >= 2) { }
|
|
|
|
|
num = ThreadManager.Instance.ActiveCount;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
item.Prompt = ex.Message;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
while (ThreadManager.Instance.ActiveCount > 0) { }
|
|
|
|
|
this.CloseLoading();
|
|
|
|
|
MessageHelper.ShowTips($"分析完成。");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
this.CloseLoading();
|
|
|
|
|
LogAPI.Debug("地类图斑数据提取失败" + ex.Message);
|
|
|
|
|
LogAPI.Debug("地类图斑数据提取失败" + ex.StackTrace);
|
|
|
|
|
MessageHelper.ShowError($"地类图斑数据提取失败:{ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
btn_oK.IsEnabled = true;
|
|
|
|
|
btn_nO.IsEnabled = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public void ComplateCallBack(object obj)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (obj == null) return;
|
|
|
|
|
CustomIDGParm param = obj as CustomIDGParm;
|
|
|
|
|
param.analysisExport.Prompt = param.ErrorMessage;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public object locObj = new object();
|
|
|
|
|
private CustomIDGParm InitData(object pThreadParm)
|
|
|
|
|
{
|
|
|
|
|
IFeatureClass BGFeatureClass = null;
|
|
|
|
|
IFeatureClass tempBGFeatureClass = null;
|
|
|
|
|
IFeatureLayer JCFeatureLayer = null;
|
|
|
|
|
IFeatureClass outsideFeatureClass = null;
|
|
|
|
|
ESRI.ArcGIS.Geodatabase.IWorkspace pWorkspace = null;
|
|
|
|
|
IWorkspaceAPI JCAPI = null;
|
|
|
|
|
IWorkspaceAPI BGAPI = null;
|
|
|
|
|
IWorkspaceAPI tempBGAPI = null;
|
|
|
|
|
IWorkspaceAPI ZLAPI = null;
|
|
|
|
|
IFeatureLayer MultipartLayer = null;
|
|
|
|
|
IFeatureLayer UnionLayer = null;
|
|
|
|
|
IFeatureLayer BGLayer = null;
|
|
|
|
|
IFeatureLayer CZCDYDLayer = null;
|
|
|
|
|
GPParamClass gPParamClass = null;
|
|
|
|
|
IQueryFilter queryFilter = new QueryFilterClass() { };
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
ThreadParam param = pThreadParm as ThreadParam;
|
|
|
|
|
AnalysisExport analysisExport = param.analysisExport;
|
|
|
|
|
#region 初始化工程模版
|
|
|
|
|
//if (!Overlap_AfterTreatment.IsNullOrEmpty())
|
|
|
|
|
//{
|
|
|
|
|
// string gdbpath = Overlap_AfterTreatment.Replace(@"\AfterTreatment", "");
|
|
|
|
|
// IWorkspaceAPI wsAPI = new WorkspaceAPI(gdbpath, WorkspaceTypeEnum.GDBFile);
|
|
|
|
|
// IFeatureClassAPI classAPI = wsAPI.OpenFeatureClass("AfterTreatment");
|
|
|
|
|
// outsideFeatureClass = classAPI.FeatureClass;
|
|
|
|
|
//}
|
|
|
|
|
//else
|
|
|
|
|
//{
|
|
|
|
|
IWorkspaceFactory wsf = new ShapefileWorkspaceFactory();
|
|
|
|
|
pWorkspace = wsf.OpenFromFile(analysisExport.ParengFolder, 0);
|
|
|
|
|
IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
|
|
|
|
|
outsideFeatureClass = pFeatureWorkspace.OpenFeatureClass(analysisExport.FileName.Replace(".shp", ""));
|
|
|
|
|
//}
|
|
|
|
|
string temppath = analysisExport.OutputExcelPath + $"\\Temp\\{analysisExport.XZQDM}";
|
|
|
|
|
if (!Directory.Exists(temppath))
|
|
|
|
|
{
|
|
|
|
|
Directory.CreateDirectory(temppath);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
DelectDirect(temppath);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex) { }
|
|
|
|
|
}
|
|
|
|
|
JCAPI = new WorkspaceAPI(analysisExport.JCSJPath, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.GDBFile, true);
|
|
|
|
|
JCFeatureLayer = new FeatureLayer() { FeatureClass = JCAPI.OpenFeatureClass("DLTB").FeatureClass };
|
|
|
|
|
//复制变更gdb
|
|
|
|
|
DirectoryCopy(SysAppPath.GetCurrentAppPath() + "Template\\BGDB.gdb", temppath);
|
|
|
|
|
string BGDatabase = System.IO.Path.Combine(temppath, "BGDB.gdb");
|
|
|
|
|
BGAPI = new WorkspaceAPI(BGDatabase, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.GDBFile, true);
|
|
|
|
|
GeoDBAPI.SetGeoDatasetSpatialReference(BGAPI.CurrentWorkspace, (JCFeatureLayer.FeatureClass as IGeoDataset).SpatialReference, 0.0001);
|
|
|
|
|
//复制增量gdb
|
|
|
|
|
DirectoryCopy(SysAppPath.GetCurrentAppPath() + "Template\\ZLDB.gdb", temppath);
|
|
|
|
|
string ZLDatabase = System.IO.Path.Combine(temppath, "ZLDB.gdb");
|
|
|
|
|
//复制年末gdb
|
|
|
|
|
DirectoryCopy(SysAppPath.GetCurrentAppPath() + "Template\\NMDB.gdb", temppath);
|
|
|
|
|
string NMLDatabase = System.IO.Path.Combine(temppath, "NMDB.gdb");
|
|
|
|
|
ZLAPI = new WorkspaceAPI(ZLDatabase, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.GDBFile, true);
|
|
|
|
|
GeoDBAPI.SetGeoDatasetSpatialReference(ZLAPI.CurrentWorkspace, (JCFeatureLayer.FeatureClass as IGeoDataset).SpatialReference, 0.0001);
|
|
|
|
|
DirectoryCopy(SysAppPath.GetCurrentAppPath() + "Template\\BGTJ.sqlite", temppath);
|
|
|
|
|
File.Copy(SysAppPath.GetCurrentAppPath() + "Template\\BGTJ.sqlite", temppath + "\\BGTJ.sqlite", true);
|
|
|
|
|
//复制BG_GDLXConfig.xml
|
|
|
|
|
File.Copy(SysAppPath.GetCurrentAppPath() + "Template\\BG_GDLXConfig.xml", temppath + "\\BG_GDLXConfig.xml", true);
|
|
|
|
|
#endregion
|
|
|
|
|
BGFeatureClass = BGAPI.OpenFeatureClass("DLTBBG").FeatureClass;
|
|
|
|
|
string nodeid = string.Empty;
|
|
|
|
|
foreach (TestData item in RelatedCombox.SelectedItems.ToList())
|
|
|
|
|
nodeid += $"'{item.ItemType}',";
|
|
|
|
|
DirectoryCopy(SysAppPath.GetCurrentAppPath() + "Template\\BGDB.gdb", temppath + "\\temp");
|
|
|
|
|
string tempBGDatabase = System.IO.Path.Combine(temppath + "\\temp", "BGDB.gdb");
|
|
|
|
|
tempBGAPI = new WorkspaceAPI(tempBGDatabase, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.GDBFile, true);
|
|
|
|
|
GeoDBAPI.SetGeoDatasetSpatialReference(tempBGAPI.CurrentWorkspace, (JCFeatureLayer.FeatureClass as IGeoDataset).SpatialReference, 0.0001);
|
|
|
|
|
IFeatureClassAPI fcSourceAPI = tempBGAPI.OpenFeatureClass("DLTBBG");
|
|
|
|
|
if (this.overlap.IsChecked == true)
|
|
|
|
|
{
|
|
|
|
|
if (GTDCY.IsChecked == true)
|
|
|
|
|
{
|
|
|
|
|
#region 根据sjdrly 擦除重复数据 1 国家提取 2自主提取 用sjdrly=1的 擦除sjdrly=2的数据 然后拆分多部件
|
|
|
|
|
IFeatureClassAPI sjdrly_1 = tempBGAPI.CreateFeatureClass("sjdrly1", fcSourceAPI.FeatureClass.FeatureDataset, (JCFeatureLayer.FeatureClass as IGeoDataset).SpatialReference, esriGeometryType.esriGeometryPolygon, outsideFeatureClass.Fields);
|
|
|
|
|
IFeatureClassAPI sjdrly_2 = tempBGAPI.CreateFeatureClass("sjdrly2", fcSourceAPI.FeatureClass.FeatureDataset, (JCFeatureLayer.FeatureClass as IGeoDataset).SpatialReference, esriGeometryType.esriGeometryPolygon, outsideFeatureClass.Fields);
|
|
|
|
|
IFeatureClassAPI fcAPI = new FeatureClassAPI(outsideFeatureClass);
|
|
|
|
|
queryFilter.WhereClause = $"sdxz = '3' and nodeid in({nodeid.Substring(0, nodeid.Length - 1)}) and xzqdm='{analysisExport.XZQDM}' and sjdrly='1' ";
|
|
|
|
|
fcAPI.FcToFc(sjdrly_1.FeatureClass, queryFilter, true);
|
|
|
|
|
RepairGeo(sjdrly_1.FeatureClass);
|
|
|
|
|
queryFilter.WhereClause = $"sdxz = '3' and nodeid in({nodeid.Substring(0, nodeid.Length - 1)}) and xzqdm='{analysisExport.XZQDM}' and sjdrly='2' ";
|
|
|
|
|
fcAPI.FcToFc(sjdrly_2.FeatureClass, queryFilter, true);
|
|
|
|
|
RepairGeo(sjdrly_2.FeatureClass);
|
|
|
|
|
gPParamClass = new GPParamClass
|
|
|
|
|
{
|
|
|
|
|
FirstFeatureLayer = new FeatureLayer() { FeatureClass = sjdrly_1.FeatureClass, Name = "sjdrly1" },
|
|
|
|
|
SecondFeatureLayer = new FeatureLayer() { FeatureClass = sjdrly_2.FeatureClass, Name = "sjdrly2" },
|
|
|
|
|
OutFeatureClassPath = $"{tempBGDatabase}\\UnionLayer",
|
|
|
|
|
IsGetOutPutFeature = true,
|
|
|
|
|
GPType = EnumGPType.Union,
|
|
|
|
|
};
|
|
|
|
|
GeoprocessorHelper.UnionAnalysis(gPParamClass, ref UnionLayer);
|
|
|
|
|
#region 拆分多部件
|
|
|
|
|
gPParamClass = new GPParamClass();
|
|
|
|
|
gPParamClass.FirstFeatureLayer = UnionLayer;
|
|
|
|
|
gPParamClass.OutFeatureClassPath = $"{tempBGDatabase}\\AfterTreatment";
|
|
|
|
|
gPParamClass.IsGetOutPutFeature = true;
|
|
|
|
|
gPParamClass.GPType = EnumGPType.MultipartToSinglePath;
|
|
|
|
|
GPHelper.Instance.ExeGPForProces(gPParamClass, ref MultipartLayer);
|
|
|
|
|
outsideFeatureClass = MultipartLayer.FeatureClass;
|
|
|
|
|
#endregion
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (this.czc20x.IsChecked == true)
|
|
|
|
|
{
|
|
|
|
|
tempBGFeatureClass = tempBGAPI.OpenFeatureClass("DLTBBG").FeatureClass;
|
|
|
|
|
if (GTDCY.IsChecked == true)
|
|
|
|
|
{
|
|
|
|
|
queryFilter.WhereClause = $"sdxz = '3' and nodeid in({nodeid.Substring(0, nodeid.Length - 1)}) and xzqdm='{analysisExport.XZQDM}' ";
|
|
|
|
|
BGFWFcToFc(outsideFeatureClass, tempBGFeatureClass, queryFilter);
|
|
|
|
|
}
|
|
|
|
|
else if (this.JCTB.IsChecked == true)
|
|
|
|
|
{
|
|
|
|
|
queryFilter.WhereClause = $"xzqdm='{analysisExport.XZQDM}' ";//河北
|
|
|
|
|
BGFWFcToFc_0813(outsideFeatureClass, tempBGFeatureClass, queryFilter);
|
|
|
|
|
}
|
|
|
|
|
if (tempBGFeatureClass.FeatureCount(null) == 0) return null;
|
|
|
|
|
#region 与基础城镇村Union 赋值CZC20属性
|
|
|
|
|
string templeteGDBPath = System.IO.Path.Combine(SysAppPath.GetCurrentAppPath(), "Template", "TempGDB.gdb");
|
|
|
|
|
string resultPath = System.IO.Path.Combine(temppath, "BGTB_CZCDYD");
|
|
|
|
|
if (!Directory.Exists(resultPath))
|
|
|
|
|
{
|
|
|
|
|
Directory.CreateDirectory(resultPath);
|
|
|
|
|
}
|
|
|
|
|
string savePath = System.IO.Path.Combine(resultPath, "BGTB_CZCDYD" + ".gdb");
|
|
|
|
|
CopyDirectory(templeteGDBPath, savePath, true);
|
|
|
|
|
string outPath = System.IO.Path.Combine(savePath, "BGTB_CZCDYD");
|
|
|
|
|
BGLayer = new FeatureLayer() { FeatureClass = tempBGFeatureClass, Name = "变更图斑" };
|
|
|
|
|
CZCDYDLayer = new FeatureLayer() { FeatureClass = JCAPI.OpenFeatureClass("CZCDYD").FeatureClass, Name = "城镇村" };
|
|
|
|
|
gPParamClass = new GPParamClass
|
|
|
|
|
{
|
|
|
|
|
FirstFeatureLayer = BGLayer,
|
|
|
|
|
SecondFeatureLayer = CZCDYDLayer,
|
|
|
|
|
OutFeatureClassPath = outPath,
|
|
|
|
|
IsGetOutPutFeature = true,
|
|
|
|
|
GPType = EnumGPType.Union,
|
|
|
|
|
};
|
|
|
|
|
GPHelper.Instance.ExeGPForProces(gPParamClass, ref UnionLayer);
|
|
|
|
|
#endregion
|
|
|
|
|
#region 拆分多部件
|
|
|
|
|
MultipartLayer = null;
|
|
|
|
|
gPParamClass = new GPParamClass();
|
|
|
|
|
gPParamClass.FirstFeatureLayer = UnionLayer;
|
|
|
|
|
gPParamClass.OutFeatureClassPath = $"{savePath}\\BGTB_Multipart";
|
|
|
|
|
gPParamClass.IsGetOutPutFeature = true;
|
|
|
|
|
gPParamClass.GPType = EnumGPType.MultipartToSinglePath;
|
|
|
|
|
GPHelper.Instance.ExeGPForProces(gPParamClass, ref MultipartLayer);
|
|
|
|
|
#endregion
|
|
|
|
|
BGFcToFc(MultipartLayer.FeatureClass, BGFeatureClass, new QueryFilterClass() { WhereClause = $" FID_DLTBBG<>-1 and SHAPE_Area>1 " });
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (this.JCTB.IsChecked == true)
|
|
|
|
|
{
|
|
|
|
|
queryFilter.WhereClause = $"xzqdm='{analysisExport.XZQDM}' ";//河北
|
|
|
|
|
BGFWFcToFc_0813(outsideFeatureClass, BGFeatureClass, queryFilter);
|
|
|
|
|
}
|
|
|
|
|
else if (this.GTDCY.IsChecked == true)
|
|
|
|
|
{
|
|
|
|
|
queryFilter.WhereClause = $"sdxz = '3' and nodeid in({nodeid.Substring(0, nodeid.Length - 1)}) and xzqdm='{analysisExport.XZQDM}' ";
|
|
|
|
|
BGFWFcToFc(outsideFeatureClass, BGFeatureClass, queryFilter);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (BGFeatureClass.FeatureCount(null) == 0) return null;
|
|
|
|
|
CustomIDGParm Parm = new CustomIDGParm();
|
|
|
|
|
IDGParameter mIDGParm = new IDGParameter();
|
|
|
|
|
ProjectInfo prjInfo = new ProjectInfo();
|
|
|
|
|
prjInfo.CODE = analysisExport.XZQDM;
|
|
|
|
|
prjInfo.ProjDir = temppath;
|
|
|
|
|
prjInfo.ProjName = analysisExport.XZQDM;
|
|
|
|
|
prjInfo.ProjSuffix = ".KBG";
|
|
|
|
|
prjInfo.ZLDatabase = ZLDatabase;
|
|
|
|
|
prjInfo.BGDatabase = BGDatabase;
|
|
|
|
|
prjInfo.NMDatabase = NMLDatabase;
|
|
|
|
|
prjInfo.JCKPath = analysisExport.JCSJPath;
|
|
|
|
|
prjInfo.Save();
|
|
|
|
|
mIDGParm.StrProjInfo = System.IO.Path.Combine(prjInfo.ProjDir, prjInfo.ProjName + prjInfo.ProjSuffix);
|
|
|
|
|
mIDGParm.ExeDLTB = true;
|
|
|
|
|
mIDGParm.AllowPDFZ = true;
|
|
|
|
|
mIDGParm.AllowUnion = true;
|
|
|
|
|
mIDGParm.AutoCalcGDKCSX = true;
|
|
|
|
|
mIDGParm.AutoSetGDLX = true;
|
|
|
|
|
mIDGParm.ExeGDDB = false;
|
|
|
|
|
mIDGParm.ExeZLHZ = true;
|
|
|
|
|
Parm.analysisExport = analysisExport;
|
|
|
|
|
Parm.PressParameter = mIDGParm;
|
|
|
|
|
return Parm;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug(ex.Message);
|
|
|
|
|
LogAPI.Debug(ex.StackTrace);
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (outsideFeatureClass != null)
|
|
|
|
|
Marshal.ReleaseComObject(outsideFeatureClass);
|
|
|
|
|
if (BGFeatureClass != null)
|
|
|
|
|
Marshal.ReleaseComObject(BGFeatureClass);
|
|
|
|
|
if (BGLayer != null)
|
|
|
|
|
Marshal.ReleaseComObject(BGLayer);
|
|
|
|
|
if (JCFeatureLayer != null)
|
|
|
|
|
Marshal.ReleaseComObject(JCFeatureLayer);
|
|
|
|
|
if (pWorkspace != null)
|
|
|
|
|
Marshal.ReleaseComObject(pWorkspace);
|
|
|
|
|
if (UnionLayer != null)
|
|
|
|
|
Marshal.ReleaseComObject(UnionLayer);
|
|
|
|
|
if (MultipartLayer != null)
|
|
|
|
|
Marshal.ReleaseComObject(MultipartLayer);
|
|
|
|
|
JCAPI?.CloseWorkspace();
|
|
|
|
|
BGAPI?.CloseWorkspace();
|
|
|
|
|
ZLAPI?.CloseWorkspace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private CustomIDGParm InitData_DLTBGXGC(object pThreadParm)
|
|
|
|
|
{
|
|
|
|
|
IFeatureClass BGFeatureClass = null;
|
|
|
|
|
IFeatureClass tempBGFeatureClass = null;
|
|
|
|
|
IFeatureLayer JCFeatureLayer = null;
|
|
|
|
|
IFeatureClass outsideFeatureClass = null;
|
|
|
|
|
ESRI.ArcGIS.Geodatabase.IWorkspace pWorkspace = null;
|
|
|
|
|
IWorkspaceAPI JCAPI = null;
|
|
|
|
|
IWorkspaceAPI BGAPI = null;
|
|
|
|
|
IWorkspaceAPI tempBGAPI = null;
|
|
|
|
|
IWorkspaceAPI ZLAPI = null;
|
|
|
|
|
IWorkspaceAPI outsideWorkspaceAPI = null;
|
|
|
|
|
ITable dltbgxTb = null;
|
|
|
|
|
IFeatureLayer MultipartLayer = null;
|
|
|
|
|
IFeatureLayer UnionLayer = null;
|
|
|
|
|
IFeatureLayer BGLayer = null;
|
|
|
|
|
IFeatureLayer CZCDYDLayer = null;
|
|
|
|
|
GPParamClass gPParamClass = null;
|
|
|
|
|
IQueryFilter queryFilter = new QueryFilterClass() { };
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
ThreadParam param = pThreadParm as ThreadParam;
|
|
|
|
|
AnalysisExport analysisExport = param.analysisExport;
|
|
|
|
|
#region 初始化工程模版
|
|
|
|
|
|
|
|
|
|
if (analysisExport.FileName.EndsWith(".shp"))
|
|
|
|
|
{
|
|
|
|
|
IWorkspaceFactory wsf = new ShapefileWorkspaceFactory();
|
|
|
|
|
pWorkspace = wsf.OpenFromFile(analysisExport.ParengFolder, 0);
|
|
|
|
|
IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
|
|
|
|
|
outsideFeatureClass = pFeatureWorkspace.OpenFeatureClass(analysisExport.FileName.Replace(".shp", ""));
|
|
|
|
|
}
|
|
|
|
|
else if (analysisExport.BGFWPath.EndsWith(".gdb"))
|
|
|
|
|
{
|
|
|
|
|
outsideWorkspaceAPI = new WorkspaceAPI(analysisExport.BGFWPath, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.GDBFile, true);
|
|
|
|
|
outsideFeatureClass = outsideWorkspaceAPI.OpenFeatureClass("DLTBGXGC").FeatureClass;
|
|
|
|
|
}
|
|
|
|
|
string temppath = analysisExport.OutputExcelPath + $"\\Temp\\{analysisExport.XZQDM}";
|
|
|
|
|
if (!Directory.Exists(temppath))
|
|
|
|
|
{
|
|
|
|
|
Directory.CreateDirectory(temppath);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
DelectDirect(temppath);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex) { }
|
|
|
|
|
}
|
|
|
|
|
JCAPI = new WorkspaceAPI(analysisExport.JCSJPath, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.GDBFile, true);
|
|
|
|
|
JCFeatureLayer = new FeatureLayer() { FeatureClass = JCAPI.OpenFeatureClass("DLTB").FeatureClass };
|
|
|
|
|
//复制变更gdb
|
|
|
|
|
DirectoryCopy(SysAppPath.GetCurrentAppPath() + "Template\\BGDB.gdb", temppath);
|
|
|
|
|
string BGDatabase = System.IO.Path.Combine(temppath, "BGDB.gdb");
|
|
|
|
|
BGAPI = new WorkspaceAPI(BGDatabase, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.GDBFile, true);
|
|
|
|
|
GeoDBAPI.SetGeoDatasetSpatialReference(BGAPI.CurrentWorkspace, (JCFeatureLayer.FeatureClass as IGeoDataset).SpatialReference, 0.0001);
|
|
|
|
|
//复制增量gdb
|
|
|
|
|
DirectoryCopy(SysAppPath.GetCurrentAppPath() + "Template\\ZLDB.gdb", temppath);
|
|
|
|
|
string ZLDatabase = System.IO.Path.Combine(temppath, "ZLDB.gdb");
|
|
|
|
|
ZLAPI = new WorkspaceAPI(ZLDatabase, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.GDBFile, true);
|
|
|
|
|
GeoDBAPI.SetGeoDatasetSpatialReference(ZLAPI.CurrentWorkspace, (JCFeatureLayer.FeatureClass as IGeoDataset).SpatialReference, 0.0001);
|
|
|
|
|
DirectoryCopy(SysAppPath.GetCurrentAppPath() + "Template\\BGTJ.sqlite", temppath);
|
|
|
|
|
File.Copy(SysAppPath.GetCurrentAppPath() + "Template\\BGTJ.sqlite", temppath + "\\BGTJ.sqlite", true);
|
|
|
|
|
//复制BG_GDLXConfig.xml
|
|
|
|
|
File.Copy(SysAppPath.GetCurrentAppPath() + "Template\\BG_GDLXConfig.xml", temppath + "\\BG_GDLXConfig.xml", true);
|
|
|
|
|
#endregion
|
|
|
|
|
DirectoryCopy(SysAppPath.GetCurrentAppPath() + "Template\\BGDB.gdb", temppath + "\\temp");
|
|
|
|
|
string tempBGDatabase = System.IO.Path.Combine(temppath + "\\temp", "BGDB.gdb");
|
|
|
|
|
tempBGAPI = new WorkspaceAPI(tempBGDatabase, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.GDBFile, true);
|
|
|
|
|
GeoDBAPI.SetGeoDatasetSpatialReference(tempBGAPI.CurrentWorkspace, (JCFeatureLayer.FeatureClass as IGeoDataset).SpatialReference, 0.0001);
|
|
|
|
|
IFeatureClassAPI fcAPI = new FeatureClassAPI(outsideFeatureClass);
|
|
|
|
|
IFeatureClassAPI DLTBGXGCAPI = ZLAPI.OpenFeatureClass("DLTBGXGC");
|
|
|
|
|
//fcAPI.FcToFc(DLTBGXGCAPI.FeatureClass, new QueryFilterClass() { WhereClause = $"xzqdm='{analysisExport.XZQDM}'" }, true);
|
|
|
|
|
fcAPI.FcToFc(DLTBGXGCAPI.FeatureClass, null, true);
|
|
|
|
|
|
|
|
|
|
CustomIDGParm Parm = new CustomIDGParm();
|
|
|
|
|
IDGParameter mIDGParm = new IDGParameter();
|
|
|
|
|
ProjectInfo prjInfo = new ProjectInfo();
|
|
|
|
|
prjInfo.CODE = analysisExport.XZQDM;
|
|
|
|
|
prjInfo.ProjDir = temppath;
|
|
|
|
|
prjInfo.ProjName = analysisExport.XZQDM;
|
|
|
|
|
prjInfo.ProjSuffix = ".KBG";
|
|
|
|
|
prjInfo.ZLDatabase = ZLDatabase;
|
|
|
|
|
prjInfo.BGDatabase = BGDatabase;
|
|
|
|
|
prjInfo.JCKPath = analysisExport.JCSJPath;
|
|
|
|
|
prjInfo.Save();
|
|
|
|
|
mIDGParm.StrProjInfo = System.IO.Path.Combine(prjInfo.ProjDir, prjInfo.ProjName + prjInfo.ProjSuffix);
|
|
|
|
|
mIDGParm.ExeDLTB = false;
|
|
|
|
|
mIDGParm.AllowPDFZ = false;
|
|
|
|
|
mIDGParm.AllowUnion = false;
|
|
|
|
|
mIDGParm.AutoCalcGDKCSX = false;
|
|
|
|
|
mIDGParm.AutoSetGDLX = false;
|
|
|
|
|
mIDGParm.ExeGDDB = false;
|
|
|
|
|
mIDGParm.ExeZLHZ = true;
|
|
|
|
|
Parm.analysisExport = analysisExport;
|
|
|
|
|
Parm.PressParameter = mIDGParm;
|
|
|
|
|
return Parm;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug(ex.Message);
|
|
|
|
|
LogAPI.Debug(ex.StackTrace);
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (outsideFeatureClass != null)
|
|
|
|
|
Marshal.ReleaseComObject(outsideFeatureClass);
|
|
|
|
|
if (BGFeatureClass != null)
|
|
|
|
|
Marshal.ReleaseComObject(BGFeatureClass);
|
|
|
|
|
if (BGLayer != null)
|
|
|
|
|
Marshal.ReleaseComObject(BGLayer);
|
|
|
|
|
if (JCFeatureLayer != null)
|
|
|
|
|
Marshal.ReleaseComObject(JCFeatureLayer);
|
|
|
|
|
if (pWorkspace != null)
|
|
|
|
|
Marshal.ReleaseComObject(pWorkspace);
|
|
|
|
|
if (dltbgxTb != null)
|
|
|
|
|
Marshal.ReleaseComObject(dltbgxTb);
|
|
|
|
|
if (UnionLayer != null)
|
|
|
|
|
Marshal.ReleaseComObject(UnionLayer);
|
|
|
|
|
if (MultipartLayer != null)
|
|
|
|
|
Marshal.ReleaseComObject(MultipartLayer);
|
|
|
|
|
JCAPI?.CloseWorkspace();
|
|
|
|
|
BGAPI?.CloseWorkspace();
|
|
|
|
|
ZLAPI?.CloseWorkspace();
|
|
|
|
|
outsideWorkspaceAPI?.CloseWorkspace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private CustomIDGParm InitData_DLTBGX(object pThreadParm)
|
|
|
|
|
{
|
|
|
|
|
IFeatureClass BGFeatureClass = null;
|
|
|
|
|
IFeatureLayer JCFeatureLayer = null;
|
|
|
|
|
IFeatureClass outsideFeatureClass = null;
|
|
|
|
|
ESRI.ArcGIS.Geodatabase.IWorkspace pWorkspace = null;
|
|
|
|
|
IWorkspaceAPI JCAPI = null;
|
|
|
|
|
IWorkspaceAPI BGAPI = null;
|
|
|
|
|
IWorkspaceAPI tempBGAPI = null;
|
|
|
|
|
IWorkspaceAPI ZLAPI = null;
|
|
|
|
|
IFeatureLayer BGLayer = null;
|
|
|
|
|
IQueryFilter queryFilter = new QueryFilterClass() { };
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
ThreadParam param = pThreadParm as ThreadParam;
|
|
|
|
|
AnalysisExport analysisExport = param.analysisExport;
|
|
|
|
|
#region 初始化工程模版
|
|
|
|
|
IWorkspaceFactory wsf = new ShapefileWorkspaceFactory();
|
|
|
|
|
pWorkspace = wsf.OpenFromFile(analysisExport.ParengFolder, 0);
|
|
|
|
|
IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
|
|
|
|
|
outsideFeatureClass = pFeatureWorkspace.OpenFeatureClass(analysisExport.FileName.Replace(".shp", ""));
|
|
|
|
|
string temppath = analysisExport.OutputExcelPath + $"\\Temp\\{analysisExport.XZQDM}";
|
|
|
|
|
if (!Directory.Exists(temppath))
|
|
|
|
|
{
|
|
|
|
|
Directory.CreateDirectory(temppath);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
DelectDirect(temppath);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex) { }
|
|
|
|
|
}
|
|
|
|
|
JCAPI = new WorkspaceAPI(analysisExport.JCSJPath, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.GDBFile);
|
|
|
|
|
JCFeatureLayer = new FeatureLayer() { FeatureClass = JCAPI.OpenFeatureClass("DLTB").FeatureClass };
|
|
|
|
|
//复制变更gdb
|
|
|
|
|
DirectoryCopy(SysAppPath.GetCurrentAppPath() + "Template\\BGDB.gdb", temppath);
|
|
|
|
|
string BGDatabase = System.IO.Path.Combine(temppath, "BGDB.gdb");
|
|
|
|
|
BGAPI = new WorkspaceAPI(BGDatabase, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.GDBFile);
|
|
|
|
|
GeoDBAPI.SetGeoDatasetSpatialReference(BGAPI.CurrentWorkspace, (JCFeatureLayer.FeatureClass as IGeoDataset).SpatialReference, 0.0001);
|
|
|
|
|
//复制增量gdb
|
|
|
|
|
DirectoryCopy(SysAppPath.GetCurrentAppPath() + "Template\\ZLDB.gdb", temppath);
|
|
|
|
|
string ZLDatabase = System.IO.Path.Combine(temppath, "ZLDB.gdb");
|
|
|
|
|
ZLAPI = new WorkspaceAPI(ZLDatabase, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.GDBFile, true);
|
|
|
|
|
GeoDBAPI.SetGeoDatasetSpatialReference(ZLAPI.CurrentWorkspace, (JCFeatureLayer.FeatureClass as IGeoDataset).SpatialReference, 0.0001);
|
|
|
|
|
DirectoryCopy(SysAppPath.GetCurrentAppPath() + "Template\\BGTJ.sqlite", temppath);
|
|
|
|
|
File.Copy(SysAppPath.GetCurrentAppPath() + "Template\\BGTJ.sqlite", temppath + "\\BGTJ.sqlite", true);
|
|
|
|
|
//复制BG_GDLXConfig.xml
|
|
|
|
|
File.Copy(SysAppPath.GetCurrentAppPath() + "Template\\BG_GDLXConfig.xml", temppath + "\\BG_GDLXConfig.xml", true);
|
|
|
|
|
|
|
|
|
|
//复制年末gdb
|
|
|
|
|
DirectoryCopy(SysAppPath.GetCurrentAppPath() + "Template\\NMDB.gdb", temppath);
|
|
|
|
|
string NMLDatabase = System.IO.Path.Combine(temppath, "NMDB.gdb");
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
DirectoryCopy(SysAppPath.GetCurrentAppPath() + "Template\\BGDB.gdb", temppath + "\\temp");
|
|
|
|
|
string tempBGDatabase = System.IO.Path.Combine(temppath + "\\temp", "BGDB.gdb");
|
|
|
|
|
tempBGAPI = new WorkspaceAPI(tempBGDatabase, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.GDBFile, true);
|
|
|
|
|
GeoDBAPI.SetGeoDatasetSpatialReference(tempBGAPI.CurrentWorkspace, (JCFeatureLayer.FeatureClass as IGeoDataset).SpatialReference, 0.0001);
|
|
|
|
|
|
|
|
|
|
IFeatureClassAPI fcAPI = new FeatureClassAPI(outsideFeatureClass);
|
|
|
|
|
IFeatureClassAPI IFeatureClassAPI = BGAPI.OpenFeatureClass("DLTBBG");
|
|
|
|
|
|
|
|
|
|
#region MyRegion
|
|
|
|
|
IFeatureCursor insertCur = IFeatureClassAPI.FeatureClass.Insert(true);
|
|
|
|
|
IFeatureBuffer gcBuf = IFeatureClassAPI.FeatureClass.CreateFeatureBuffer();
|
|
|
|
|
IFeature feature = null;
|
|
|
|
|
IFeatureCursor S_Cursor = fcAPI.FeatureClass.Search(new QueryFilterClass() { WhereClause = $"xzqdm='{analysisExport.XZQDM}'" }, true);
|
|
|
|
|
while ((feature = S_Cursor.NextFeature()) != null)
|
|
|
|
|
{
|
|
|
|
|
gcBuf.Shape = feature.ShapeCopy;
|
|
|
|
|
for (int i = 0; i < IFeatureClassAPI.FeatureClass.Fields.FieldCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IField field = IFeatureClassAPI.FeatureClass.Fields.Field[i];
|
|
|
|
|
if (!field.Editable || field.Name.Contains("SHAPE")) continue;
|
|
|
|
|
string sFieldName = field.Name;
|
|
|
|
|
int idx = feature.Fields.FindField(sFieldName);
|
|
|
|
|
if (idx != -1)
|
|
|
|
|
gcBuf.Value[i] = feature.Value[idx];
|
|
|
|
|
}
|
|
|
|
|
insertCur.InsertFeature(gcBuf);
|
|
|
|
|
}
|
|
|
|
|
insertCur.Flush();
|
|
|
|
|
if (insertCur != null)
|
|
|
|
|
Marshal.ReleaseComObject(insertCur);
|
|
|
|
|
if (feature != null)
|
|
|
|
|
Marshal.ReleaseComObject(feature);
|
|
|
|
|
if (gcBuf != null)
|
|
|
|
|
Marshal.ReleaseComObject(gcBuf);
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//fcAPI.FcToFc(IFeatureClassAPI.FeatureClass, new QueryFilterClass() { WhereClause = $"xzqdm='{analysisExport.XZQDM}'" }, true);
|
|
|
|
|
IFeatureClassAPI.CloseFeatureClass();
|
|
|
|
|
CustomIDGParm Parm = new CustomIDGParm();
|
|
|
|
|
IDGParameter mIDGParm = new IDGParameter();
|
|
|
|
|
ProjectInfo prjInfo = new ProjectInfo();
|
|
|
|
|
prjInfo.CODE = analysisExport.XZQDM;
|
|
|
|
|
prjInfo.ProjDir = temppath;
|
|
|
|
|
prjInfo.ProjName = analysisExport.XZQDM;
|
|
|
|
|
prjInfo.ProjSuffix = ".KBG";
|
|
|
|
|
prjInfo.ZLDatabase = ZLDatabase;
|
|
|
|
|
prjInfo.BGDatabase = BGDatabase;
|
|
|
|
|
prjInfo.NMDatabase = NMLDatabase;
|
|
|
|
|
prjInfo.JCKPath = analysisExport.JCSJPath;
|
|
|
|
|
prjInfo.Save();
|
|
|
|
|
mIDGParm.StrProjInfo = System.IO.Path.Combine(prjInfo.ProjDir, prjInfo.ProjName + prjInfo.ProjSuffix);
|
|
|
|
|
mIDGParm.ExeDLTB = true;
|
|
|
|
|
mIDGParm.AllowPDFZ = true;
|
|
|
|
|
mIDGParm.AllowUnion = true;
|
|
|
|
|
mIDGParm.AutoCalcGDKCSX = true;
|
|
|
|
|
mIDGParm.AutoSetGDLX = true;
|
|
|
|
|
mIDGParm.ExeGDDB = false;
|
|
|
|
|
mIDGParm.ExeZLHZ = true;
|
|
|
|
|
Parm.analysisExport = analysisExport;
|
|
|
|
|
Parm.PressParameter = mIDGParm;
|
|
|
|
|
return Parm;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug(ex.Message);
|
|
|
|
|
LogAPI.Debug(ex.StackTrace);
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (outsideFeatureClass != null)
|
|
|
|
|
Marshal.ReleaseComObject(outsideFeatureClass);
|
|
|
|
|
if (BGLayer != null)
|
|
|
|
|
Marshal.ReleaseComObject(BGLayer);
|
|
|
|
|
if (JCFeatureLayer != null)
|
|
|
|
|
Marshal.ReleaseComObject(JCFeatureLayer);
|
|
|
|
|
if (pWorkspace != null)
|
|
|
|
|
Marshal.ReleaseComObject(pWorkspace);
|
|
|
|
|
if (BGFeatureClass != null)
|
|
|
|
|
Marshal.ReleaseComObject(BGFeatureClass);
|
|
|
|
|
JCAPI?.CloseWorkspace();
|
|
|
|
|
BGAPI?.CloseWorkspace();
|
|
|
|
|
ZLAPI?.CloseWorkspace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void RepairGeo(IFeatureClass pFc)
|
|
|
|
|
{
|
|
|
|
|
Geoprocessor gp = new Geoprocessor();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
RepairGeometry repairgeo = new RepairGeometry();
|
|
|
|
|
repairgeo.in_features = pFc;
|
|
|
|
|
//repairgeo.out_feature_class = outFC;
|
|
|
|
|
repairgeo.delete_null = "TRUE";
|
|
|
|
|
IGeoProcessorResult tGeoResult = (IGeoProcessorResult)gp.Execute(repairgeo, null);
|
|
|
|
|
if (tGeoResult == null || tGeoResult.Status != esriJobStatus.esriJobSucceeded)
|
|
|
|
|
{
|
|
|
|
|
//LogAPI.Debug("检查图形失败:");
|
|
|
|
|
throw new Exception(ReturnMessages(gp));
|
|
|
|
|
}
|
|
|
|
|
string msg = ReturnMessages(gp);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
throw new Exception(ReturnMessages(gp));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取GP任务执行信息
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="gp"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
private string ReturnMessages(Geoprocessor gp)
|
|
|
|
|
{
|
|
|
|
|
string ms = "";
|
|
|
|
|
if (gp.MessageCount > 0)
|
|
|
|
|
{
|
|
|
|
|
for (int Count = 0; Count <= gp.MessageCount - 1; Count++)
|
|
|
|
|
{
|
|
|
|
|
ms += "$" + gp.GetMessage(Count) + "\n\n";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return ms;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void ExecuteBG(object pThreadParm)
|
|
|
|
|
{
|
|
|
|
|
IRDBHelper rdbHelper = null;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (pThreadParm == null) return;
|
|
|
|
|
CustomIDGParm param = pThreadParm as CustomIDGParm;
|
|
|
|
|
ProcesHelper.Instance.ProgressHandle = (o) =>
|
|
|
|
|
{
|
|
|
|
|
//this.UpdateMsg(o.ToString());
|
|
|
|
|
};
|
|
|
|
|
string result = ProcesHelper.Instance.ExeGPForProces2(param.PressParameter);
|
|
|
|
|
if (result.Contains("Err"))
|
|
|
|
|
{
|
|
|
|
|
//throw new Exception(result);
|
|
|
|
|
param.ErrorMessage = result;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
lock (locObj)
|
|
|
|
|
{
|
|
|
|
|
#region 导出土地利用现状变更表
|
|
|
|
|
StatisticalReportClass statistical = new StatisticalReportClass();
|
|
|
|
|
FileInfo proFile = new FileInfo(param.PressParameter.StrProjInfo);
|
|
|
|
|
//读取-导入年初数据报表
|
|
|
|
|
statistical.ExcelToDataTable(proFile.DirectoryName, param.analysisExport.JCSJExcelPath, param.analysisExport.XZQDM);
|
|
|
|
|
//导出报表
|
|
|
|
|
string outExcelPath = param.analysisExport.OutputExcelPath + "\\县级统计表";
|
|
|
|
|
if (!Directory.Exists(outExcelPath))
|
|
|
|
|
{
|
|
|
|
|
Directory.CreateDirectory(outExcelPath);
|
|
|
|
|
}
|
|
|
|
|
var outExcel = outExcelPath + $"\\2022({param.analysisExport.XZQDM})土地利用现状变更表.xlsx";
|
|
|
|
|
statistical.ExportTDLYXZBGB(outExcel, param.analysisExport, proFile.DirectoryName);
|
|
|
|
|
//2023耕地流向汇总统计表.xlsx
|
|
|
|
|
FileInfo fileInfo = new FileInfo(param.analysisExport.OutputExcelPath + "\\2023耕地流向汇总统计表.xlsx");
|
|
|
|
|
if (!fileInfo.Exists)
|
|
|
|
|
{
|
|
|
|
|
File.Copy(SysAppPath.GetCurrentAppPath() + "Template\\2023耕地流向汇总统计表.xlsx", param.analysisExport.OutputExcelPath + "\\2023耕地流向汇总统计表.xlsx");
|
|
|
|
|
}
|
|
|
|
|
#region 统计表写入
|
|
|
|
|
//获取当前区县在统计表中的位置
|
|
|
|
|
var ExcelCell_X = 0;
|
|
|
|
|
using (var streamData = File.Open(fileInfo.FullName, FileMode.Open, FileAccess.Read))
|
|
|
|
|
{
|
|
|
|
|
using (var readerData = ExcelReaderFactory.CreateReader(streamData))
|
|
|
|
|
{
|
|
|
|
|
var tjresult = readerData.AsDataSet();
|
|
|
|
|
DataTable tjdataTable = tjresult.Tables[0];
|
|
|
|
|
if (tjdataTable != null && tjdataTable.Rows.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (DataRow item in tjdataTable.Rows)
|
|
|
|
|
{
|
|
|
|
|
if (param.analysisExport.XZQDM.ToTrim() == item["column0"].ToTrim())
|
|
|
|
|
{
|
|
|
|
|
ExcelCell_X = tjdataTable.Rows.IndexOf(item);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
string dbPath = proFile.DirectoryName + @"\BGTJ.sqlite";
|
|
|
|
|
rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite);
|
|
|
|
|
#region 默认
|
|
|
|
|
//DataTable table = rdbHelper.ExecuteDatatable("table", @" select substr(nyd,0,instr(nyd,'-'))|| '-' || sum(replace(nyd, rtrim(nyd, replace(nyd, '-', '')), '')) from (
|
|
|
|
|
// select
|
|
|
|
|
//case
|
|
|
|
|
//when bgh = '0201' then '9' || '-' || BGMJ
|
|
|
|
|
//when bgh = '0204' then '10' || '-' || BGMJ
|
|
|
|
|
//when bgh = '0301' then '12' || '-' || BGMJ
|
|
|
|
|
//when bgh = '0305' then '13' || '-' || BGMJ
|
|
|
|
|
//when bgh = '0307' then '14' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1202' then '15' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1006' then '16' || '-' || BGMJ
|
|
|
|
|
//when bgh = '0401' then '17' || '-' || BGMJ
|
|
|
|
|
//when bgh = '0403' then '18' || '-' || BGMJ
|
|
|
|
|
//when bgh = '0304' then '19' || '-' || BGMJ
|
|
|
|
|
//when bgh = '0306' then '20' || '-' || BGMJ
|
|
|
|
|
//when bgh = '0402' then '21' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1103' then '22' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1104' then '23' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1107' then '24' || '-' || BGMJ
|
|
|
|
|
//when bgh = '201' then '27' || '-' || BGMJ
|
|
|
|
|
//when bgh = '202' then '28' || '-' || BGMJ
|
|
|
|
|
//when bgh = '203' then '29' || '-' || BGMJ
|
|
|
|
|
//when bgh = '204' then '30' || '-' || BGMJ
|
|
|
|
|
//when bgh = '205' then '31' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1001' then '33' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1002' then '34' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1003' then '35' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1007' then '36' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1008' then '37' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1009' then '38' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1109' then '39' || '-' || BGMJ
|
|
|
|
|
//when bgh = '0404' then '41' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1101' then '42' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1102' then '43' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1106' then '44' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1108' then '45' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1204' then '46' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1205' then '47' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1206' then '48' || '-' || BGMJ
|
|
|
|
|
//when bgh = '1207' then '49' || '-' || BGMJ
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//else '' END NYD
|
|
|
|
|
// from(
|
|
|
|
|
// select bgq, bgh, SUM(BGMJ)BGMJ from(
|
|
|
|
|
// select bgq, bgh, SUM(BGMJ)BGMJ from
|
|
|
|
|
// (
|
|
|
|
|
// select
|
|
|
|
|
// --case when bgq in ('1001', '1002', '1003', '1007', '1008', '1009', '1109')or substr(bgq, 1, 2) = '20' THEN 'JSYD' ELSE bgq END
|
|
|
|
|
// bgq,
|
|
|
|
|
// --case when bgh in ('1001', '1002', '1003', '1007', '1008', '1009', '1109')or substr(bgh, 1, 2) = '20' THEN 'JSYD' ELSE bgh END
|
|
|
|
|
// bgh, BGMJ from
|
|
|
|
|
// (
|
|
|
|
|
// select case when BGQCZCSXM = '空' then BGQDLBM else BGQCZCSXM end bgq,case when BGHCZCSXM = '空' then BGHDLBM else BGHCZCSXM end bgh,BGMJ from(select substr(BGQDLBM, 1, 4) BGQDLBM,substr(BGQCZCSXM, 1, 3) BGQCZCSXM, substr(BGHDLBM, 1, 4) BGHDLBM,substr(BGHCZCSXM, 1, 3) BGHCZCSXM,BGMJ, XZQTZLX from JCTJB_GQ )A )A
|
|
|
|
|
|
|
|
|
|
// )A WHERE bgq<> bgh and(bgq = 'JSYD' OR bgh = 'JSYD') GROUP BY bgq,bgh
|
|
|
|
|
// union ALL
|
|
|
|
|
// select bgq,bgh,SUM(BGMJ)BGMJ from
|
|
|
|
|
// (
|
|
|
|
|
// select case when BGQCZCSXM = '空' then BGQDLBM else BGQCZCSXM end bgq,case when BGHCZCSXM = '空' then BGHDLBM else BGHCZCSXM end bgh,BGMJ from(select substr(BGQDLBM, 1, 4) BGQDLBM,substr(BGQCZCSXM, 1, 3) BGQCZCSXM, substr(BGHDLBM, 1, 4) BGHDLBM,substr(BGHCZCSXM, 1, 3) BGHCZCSXM,BGMJ, XZQTZLX from JCTJB_GQ )A
|
|
|
|
|
// )A WHERE bgq<> bgh GROUP BY bgq,bgh
|
|
|
|
|
// )A GROUP BY bgq, bgh
|
|
|
|
|
// )A WHERE substr(bgq, 1, 2) = '01' and substr(bgh, 1, 2)<> '01'
|
|
|
|
|
//)a WHERE length(nyd) > 0 GROUP by substr(nyd, 1, 2)
|
|
|
|
|
// union all
|
|
|
|
|
//select substr(nyd,0,instr(nyd,'-'))|| '-' || sum(replace(nyd, rtrim(nyd, replace(nyd, '-', '')), '')) from(
|
|
|
|
|
// select
|
|
|
|
|
//case
|
|
|
|
|
//when bgq = '0201' then '53' || '-' || BGMJ
|
|
|
|
|
//when bgq = '0204' then '54' || '-' || BGMJ
|
|
|
|
|
//when bgq = '0301' then '56' || '-' || BGMJ
|
|
|
|
|
//when bgq = '0305' then '57' || '-' || BGMJ
|
|
|
|
|
//when bgq = '0307' then '58' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1202' then '59' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1006' then '60' || '-' || BGMJ
|
|
|
|
|
//when bgq = '0401' then '61' || '-' || BGMJ
|
|
|
|
|
//when bgq = '0403' then '62' || '-' || BGMJ
|
|
|
|
|
//when bgq = '0304' then '63' || '-' || BGMJ
|
|
|
|
|
//when bgq = '0306' then '64' || '-' || BGMJ
|
|
|
|
|
//when bgq = '0402' then '65' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1103' then '66' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1104' then '67' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1107' then '68' || '-' || BGMJ
|
|
|
|
|
//when bgq = '201' then '71' || '-' || BGMJ
|
|
|
|
|
//when bgq = '202' then '72' || '-' || BGMJ
|
|
|
|
|
//when bgq = '203' then '73' || '-' || BGMJ
|
|
|
|
|
//when bgq = '204' then '74' || '-' || BGMJ
|
|
|
|
|
//when bgq = '205' then '75' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1001' then '77' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1002' then '78' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1003' then '79' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1007' then '80' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1008' then '81' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1009' then '82' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1109' then '83' || '-' || BGMJ
|
|
|
|
|
//when bgq = '0404' then '85' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1101' then '86' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1102' then '87' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1106' then '88' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1108' then '89' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1204' then '90' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1205' then '91' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1206' then '92' || '-' || BGMJ
|
|
|
|
|
//when bgq = '1207' then '93' || '-' || BGMJ
|
|
|
|
|
|
|
|
|
|
//else '' END NYD
|
|
|
|
|
// from(
|
|
|
|
|
// select bgq, bgh, SUM(BGMJ)BGMJ from(
|
|
|
|
|
// select bgq, bgh, SUM(BGMJ)BGMJ from
|
|
|
|
|
// (
|
|
|
|
|
// select
|
|
|
|
|
// --case when bgq in ('1001', '1002', '1003', '1007', '1008', '1009', '1109')or substr(bgq, 1, 2) = '20' THEN 'JSYD' ELSE bgq END
|
|
|
|
|
// bgq,
|
|
|
|
|
// --case when bgh in ('1001', '1002', '1003', '1007', '1008', '1009', '1109')or substr(bgh, 1, 2) = '20' THEN 'JSYD' ELSE bgh END
|
|
|
|
|
// bgh, BGMJ from
|
|
|
|
|
// (
|
|
|
|
|
// select case when BGQCZCSXM = '空' then BGQDLBM else BGQCZCSXM end bgq,case when BGHCZCSXM = '空' then BGHDLBM else BGHCZCSXM end bgh,BGMJ from(select substr(BGQDLBM, 1, 4) BGQDLBM,substr(BGQCZCSXM, 1, 3) BGQCZCSXM, substr(BGHDLBM, 1, 4) BGHDLBM,substr(BGHCZCSXM, 1, 3) BGHCZCSXM,BGMJ, XZQTZLX from JCTJB_GQ )A )A
|
|
|
|
|
|
|
|
|
|
// )A WHERE bgq<> bgh and(bgq = 'JSYD' OR bgh = 'JSYD') GROUP BY bgq,bgh
|
|
|
|
|
// union ALL
|
|
|
|
|
// select bgq,bgh,SUM(BGMJ)BGMJ from
|
|
|
|
|
// (
|
|
|
|
|
// select case when BGQCZCSXM = '空' then BGQDLBM else BGQCZCSXM end bgq,case when BGHCZCSXM = '空' then BGHDLBM else BGHCZCSXM end bgh,BGMJ from(select substr(BGQDLBM, 1, 4) BGQDLBM,substr(BGQCZCSXM, 1, 3) BGQCZCSXM, substr(BGHDLBM, 1, 4) BGHDLBM,substr(BGHCZCSXM, 1, 3) BGHCZCSXM,BGMJ, XZQTZLX from JCTJB_GQ )A
|
|
|
|
|
// )A WHERE bgq<> bgh GROUP BY bgq,bgh
|
|
|
|
|
// )A GROUP BY bgq, bgh
|
|
|
|
|
// )A WHERE substr(bgq, 1, 2) <> '01' and substr(bgh, 1, 2)= '01'
|
|
|
|
|
//)a WHERE length(nyd) > 0 GROUP by substr(nyd, 1, 2) ", true);
|
|
|
|
|
#endregion
|
|
|
|
|
#region 宁波/陕西
|
|
|
|
|
DataTable table = rdbHelper.ExecuteDatatable("table", @" select substr(nyd,0,instr(nyd,'-'))|| '-' || sum(replace(nyd, rtrim(nyd, replace(nyd, '-', '')), '')) from (
|
|
|
|
|
select
|
|
|
|
|
case
|
|
|
|
|
when bgh = '0303' then '9' || '-' || BGMJ
|
|
|
|
|
when bgh = '0304' then '10' || '-' || BGMJ
|
|
|
|
|
when bgh = '0306' then '11' || '-' || BGMJ
|
|
|
|
|
when bgh = '0402' then '12' || '-' || BGMJ
|
|
|
|
|
when bgh = '0101' then '14' || '-' || BGMJ
|
|
|
|
|
when bgh = '0102' then '15' || '-' || BGMJ
|
|
|
|
|
when bgh = '0103' then '16' || '-' || BGMJ
|
|
|
|
|
when bgh = '0201' then '18' || '-' || BGMJ
|
|
|
|
|
when bgh = '0202' then '19' || '-' || BGMJ
|
|
|
|
|
when bgh = '0203' then '20' || '-' || BGMJ
|
|
|
|
|
when bgh = '0204' then '21' || '-' || BGMJ
|
|
|
|
|
when bgh = '0301' then '23' || '-' || BGMJ
|
|
|
|
|
when bgh = '0302' then '24' || '-' || BGMJ
|
|
|
|
|
when bgh = '0305' then '25' || '-' || BGMJ
|
|
|
|
|
when bgh = '0307' then '26' || '-' || BGMJ
|
|
|
|
|
when bgh = '0401' then '28' || '-' || BGMJ
|
|
|
|
|
when bgh = '0403' then '29' || '-' || BGMJ
|
|
|
|
|
when bgh = '1006' then '30' || '-' || BGMJ
|
|
|
|
|
when bgh = '1103' then '32' || '-' || BGMJ
|
|
|
|
|
when bgh = '1104' then '33' || '-' || BGMJ
|
|
|
|
|
when bgh = '1107' then '34' || '-' || BGMJ
|
|
|
|
|
when bgh = '1202' then '36' || '-' || BGMJ
|
|
|
|
|
when bgh = '1203' then '37' || '-' || BGMJ
|
|
|
|
|
when bgh = '201' then '40' || '-' || BGMJ
|
|
|
|
|
when bgh = '202' then '41' || '-' || BGMJ
|
|
|
|
|
when bgh = '203' then '42' || '-' || BGMJ
|
|
|
|
|
when bgh = '204' then '43' || '-' || BGMJ
|
|
|
|
|
when bgh = '205' then '44' || '-' || BGMJ
|
|
|
|
|
when bgh = '1001' then '46' || '-' || BGMJ
|
|
|
|
|
when bgh = '1002' then '47' || '-' || BGMJ
|
|
|
|
|
when bgh = '1003' then '48' || '-' || BGMJ
|
|
|
|
|
when bgh = '1007' then '49' || '-' || BGMJ
|
|
|
|
|
when bgh = '1008' then '50' || '-' || BGMJ
|
|
|
|
|
when bgh = '1009' then '51' || '-' || BGMJ
|
|
|
|
|
when bgh = '1109' then '52' || '-' || BGMJ
|
|
|
|
|
when bgh = '1105' then '55' || '-' || BGMJ
|
|
|
|
|
when bgh = '1106' then '56' || '-' || BGMJ
|
|
|
|
|
when bgh = '1108' then '57' || '-' || BGMJ
|
|
|
|
|
when bgh = '0404' then '58' || '-' || BGMJ
|
|
|
|
|
when bgh = '1101' then '60' || '-' || BGMJ
|
|
|
|
|
when bgh = '1102' then '61' || '-' || BGMJ
|
|
|
|
|
when bgh = '1110' then '62' || '-' || BGMJ
|
|
|
|
|
when bgh = '1204' then '64' || '-' || BGMJ
|
|
|
|
|
when bgh = '1205' then '65' || '-' || BGMJ
|
|
|
|
|
when bgh = '1206' then '66' || '-' || BGMJ
|
|
|
|
|
when bgh = '1207' then '67' || '-' || BGMJ
|
|
|
|
|
else '' END NYD
|
|
|
|
|
from(
|
|
|
|
|
select bgq, bgh, SUM(BGMJ)BGMJ from(
|
|
|
|
|
select bgq, bgh, SUM(BGMJ)BGMJ from
|
|
|
|
|
(
|
|
|
|
|
select
|
|
|
|
|
--case when bgq in ('1001', '1002', '1003', '1007', '1008', '1009', '1109')or substr(bgq, 1, 2) = '20' THEN 'JSYD' ELSE bgq END
|
|
|
|
|
bgq,
|
|
|
|
|
--case when bgh in ('1001', '1002', '1003', '1007', '1008', '1009', '1109')or substr(bgh, 1, 2) = '20' THEN 'JSYD' ELSE bgh END
|
|
|
|
|
bgh, BGMJ from
|
|
|
|
|
(
|
|
|
|
|
select case when BGQCZCSXM = '空' then BGQDLBM else BGQCZCSXM end bgq,case when BGHCZCSXM = '空' then BGHDLBM else BGHCZCSXM end bgh,BGMJ from(select substr(BGQDLBM, 1, 4) BGQDLBM,substr(BGQCZCSXM, 1, 3) BGQCZCSXM, substr(BGHDLBM, 1, 4) BGHDLBM,substr(BGHCZCSXM, 1, 3) BGHCZCSXM,BGMJ, XZQTZLX from JCTJB_GQ )A )A
|
|
|
|
|
|
|
|
|
|
)A WHERE bgq<> bgh and(bgq = 'JSYD' OR bgh = 'JSYD') GROUP BY bgq,bgh
|
|
|
|
|
union ALL
|
|
|
|
|
select bgq,bgh,SUM(BGMJ)BGMJ from
|
|
|
|
|
(
|
|
|
|
|
select case when BGQCZCSXM = '空' then BGQDLBM else BGQCZCSXM end bgq,case when BGHCZCSXM = '空' then BGHDLBM else BGHCZCSXM end bgh,BGMJ from(select substr(BGQDLBM, 1, 4) BGQDLBM,substr(BGQCZCSXM, 1, 3) BGQCZCSXM, substr(BGHDLBM, 1, 4) BGHDLBM,substr(BGHCZCSXM, 1, 3) BGHCZCSXM,BGMJ, XZQTZLX from JCTJB_GQ )A
|
|
|
|
|
)A WHERE bgq<> bgh GROUP BY bgq,bgh
|
|
|
|
|
)A GROUP BY bgq, bgh
|
|
|
|
|
)A WHERE substr(bgq, 1, 2) = '01' and substr(bgh, 1, 2)<> '01'
|
|
|
|
|
)a WHERE length(nyd) > 0 GROUP by substr(nyd, 1, 2)
|
|
|
|
|
union all
|
|
|
|
|
select substr(nyd,0,instr(nyd,'-'))|| '-' || sum(replace(nyd, rtrim(nyd, replace(nyd, '-', '')), '')) from(
|
|
|
|
|
select
|
|
|
|
|
case
|
|
|
|
|
when bgq = '0303' then '71' || '-' || BGMJ
|
|
|
|
|
when bgq = '0304' then '70' || '-' || BGMJ
|
|
|
|
|
when bgq = '0306' then '73' || '-' || BGMJ
|
|
|
|
|
when bgq = '0402' then '74' || '-' || BGMJ
|
|
|
|
|
when bgq = '0101' then '76' || '-' || BGMJ
|
|
|
|
|
when bgq = '0102' then '77' || '-' || BGMJ
|
|
|
|
|
when bgq = '0103' then '78' || '-' || BGMJ
|
|
|
|
|
when bgq = '0201' then '80' || '-' || BGMJ
|
|
|
|
|
when bgq = '0202' then '81' || '-' || BGMJ
|
|
|
|
|
when bgq = '0203' then '82' || '-' || BGMJ
|
|
|
|
|
when bgq = '0204' then '83' || '-' || BGMJ
|
|
|
|
|
when bgq = '0301' then '85' || '-' || BGMJ
|
|
|
|
|
when bgq = '0302' then '86' || '-' || BGMJ
|
|
|
|
|
when bgq = '0305' then '87' || '-' || BGMJ
|
|
|
|
|
when bgq = '0307' then '88' || '-' || BGMJ
|
|
|
|
|
when bgq = '0401' then '90' || '-' || BGMJ
|
|
|
|
|
when bgq = '0403' then '91' || '-' || BGMJ
|
|
|
|
|
when bgq = '1006' then '92' || '-' || BGMJ
|
|
|
|
|
when bgq = '1103' then '94' || '-' || BGMJ
|
|
|
|
|
when bgq = '1104' then '95' || '-' || BGMJ
|
|
|
|
|
when bgq = '1107' then '96' || '-' || BGMJ
|
|
|
|
|
when bgq = '1202' then '98' || '-' || BGMJ
|
|
|
|
|
when bgq = '1203' then '99' || '-' || BGMJ
|
|
|
|
|
when bgq = '201' then '102' || '-' || BGMJ
|
|
|
|
|
when bgq = '202' then '103' || '-' || BGMJ
|
|
|
|
|
when bgq = '203' then '104' || '-' || BGMJ
|
|
|
|
|
when bgq = '204' then '105' || '-' || BGMJ
|
|
|
|
|
when bgq = '205' then '106' || '-' || BGMJ
|
|
|
|
|
when bgq = '1001' then '108' || '-' || BGMJ
|
|
|
|
|
when bgq = '1002' then '109' || '-' || BGMJ
|
|
|
|
|
when bgq = '1003' then '110' || '-' || BGMJ
|
|
|
|
|
when bgq = '1007' then '111' || '-' || BGMJ
|
|
|
|
|
when bgq = '1008' then '112' || '-' || BGMJ
|
|
|
|
|
when bgq = '1009' then '113' || '-' || BGMJ
|
|
|
|
|
when bgq = '1109' then '114' || '-' || BGMJ
|
|
|
|
|
when bgq = '1105' then '117' || '-' || BGMJ
|
|
|
|
|
when bgq = '1106' then '118' || '-' || BGMJ
|
|
|
|
|
when bgq = '1108' then '119' || '-' || BGMJ
|
|
|
|
|
when bgq = '0404' then '120' || '-' || BGMJ
|
|
|
|
|
when bgq = '1101' then '122' || '-' || BGMJ
|
|
|
|
|
when bgq = '1102' then '123' || '-' || BGMJ
|
|
|
|
|
when bgq = '1110' then '124' || '-' || BGMJ
|
|
|
|
|
when bgq = '1204' then '126' || '-' || BGMJ
|
|
|
|
|
when bgq = '1205' then '127' || '-' || BGMJ
|
|
|
|
|
when bgq = '1206' then '128' || '-' || BGMJ
|
|
|
|
|
when bgq = '1207' then '129' || '-' || BGMJ
|
|
|
|
|
else '' END NYD
|
|
|
|
|
from(
|
|
|
|
|
select bgq, bgh, SUM(BGMJ)BGMJ from(
|
|
|
|
|
select bgq, bgh, SUM(BGMJ)BGMJ from
|
|
|
|
|
(
|
|
|
|
|
select
|
|
|
|
|
--case when bgq in ('1001', '1002', '1003', '1007', '1008', '1009', '1109')or substr(bgq, 1, 2) = '20' THEN 'JSYD' ELSE bgq END
|
|
|
|
|
bgq,
|
|
|
|
|
--case when bgh in ('1001', '1002', '1003', '1007', '1008', '1009', '1109')or substr(bgh, 1, 2) = '20' THEN 'JSYD' ELSE bgh END
|
|
|
|
|
bgh, BGMJ from
|
|
|
|
|
(
|
|
|
|
|
select case when BGQCZCSXM = '空' then BGQDLBM else BGQCZCSXM end bgq,case when BGHCZCSXM = '空' then BGHDLBM else BGHCZCSXM end bgh,BGMJ from(select substr(BGQDLBM, 1, 4) BGQDLBM,substr(BGQCZCSXM, 1, 3) BGQCZCSXM, substr(BGHDLBM, 1, 4) BGHDLBM,substr(BGHCZCSXM, 1, 3) BGHCZCSXM,BGMJ, XZQTZLX from JCTJB_GQ )A )A
|
|
|
|
|
|
|
|
|
|
)A WHERE bgq<> bgh and(bgq = 'JSYD' OR bgh = 'JSYD') GROUP BY bgq,bgh
|
|
|
|
|
union ALL
|
|
|
|
|
select bgq,bgh,SUM(BGMJ)BGMJ from
|
|
|
|
|
(
|
|
|
|
|
select case when BGQCZCSXM = '空' then BGQDLBM else BGQCZCSXM end bgq,case when BGHCZCSXM = '空' then BGHDLBM else BGHCZCSXM end bgh,BGMJ from(select substr(BGQDLBM, 1, 4) BGQDLBM,substr(BGQCZCSXM, 1, 3) BGQCZCSXM, substr(BGHDLBM, 1, 4) BGHDLBM,substr(BGHCZCSXM, 1, 3) BGHCZCSXM,BGMJ, XZQTZLX from JCTJB_GQ )A
|
|
|
|
|
)A WHERE bgq<> bgh GROUP BY bgq,bgh
|
|
|
|
|
)A GROUP BY bgq, bgh
|
|
|
|
|
)A WHERE substr(bgq, 1, 2) <> '01' and substr(bgh, 1, 2)= '01'
|
|
|
|
|
)a WHERE length(nyd) > 0 GROUP by substr(nyd, 1, 3) ", true);
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
Workbook workbook = new Workbook(fileInfo.FullName); //工作簿
|
|
|
|
|
Worksheet sheet = workbook.Worksheets[0]; //工作表
|
|
|
|
|
foreach (DataRow item in table.Rows)
|
|
|
|
|
{
|
|
|
|
|
var ExcelCell_Y = item[0].ToTrim().Split('-')[0].ToInt();
|
|
|
|
|
var Cells_Value = item[0].ToTrim().Split('-')[1].ToDouble();
|
|
|
|
|
Cells cells = sheet.Cells;//单元格
|
|
|
|
|
cells[ExcelCell_X, ExcelCell_Y].Value = Cells_Value;
|
|
|
|
|
}
|
|
|
|
|
workbook.Save(fileInfo.FullName);
|
|
|
|
|
#endregion
|
|
|
|
|
param.ErrorMessage = "完成";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug(ex.Message);
|
|
|
|
|
LogAPI.Debug(ex.StackTrace);
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (rdbHelper != null)
|
|
|
|
|
rdbHelper.DisConnect();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static void SetFileToDisk(int Cells_X, int Cells_Y, string path, double Cells_Value)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Workbook workbook = new Workbook(path); //工作簿
|
|
|
|
|
Worksheet sheet = workbook.Worksheets[0]; //工作表
|
|
|
|
|
Cells cells = sheet.Cells;//单元格
|
|
|
|
|
cells[Cells_X, Cells_Y].Value = Cells_Value;
|
|
|
|
|
workbook.Save(path);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception exc)
|
|
|
|
|
{
|
|
|
|
|
System.Windows.MessageBox.Show(exc.Message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static DataTable DtSelectTop(int TopItem, DataTable oDT)
|
|
|
|
|
{
|
|
|
|
|
if (oDT.Rows.Count < TopItem) return oDT;
|
|
|
|
|
|
|
|
|
|
DataTable NewTable = oDT.Clone();
|
|
|
|
|
DataRow[] rows = oDT.Select("1=1");
|
|
|
|
|
for (int i = 0; i < TopItem; i++)
|
|
|
|
|
{
|
|
|
|
|
NewTable.ImportRow((DataRow)rows[i]);
|
|
|
|
|
}
|
|
|
|
|
return NewTable;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
private void txt_execute_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
private void chkSelectedAll_EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (this.ListData != null && this.ListData.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
bool check = (sender as DevExpress.Xpf.Editors.CheckEdit).IsChecked == null ? false : bool.Parse((sender as DevExpress.Xpf.Editors.CheckEdit).IsChecked.Value.ToString());
|
|
|
|
|
this.ListData.ForEach(x => x.IsChecked = check);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.ShowError("全选发生异常:" + ex.Message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 通过IDataStatistics获取图层指定字段唯一值
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="pFeatureLayer"></param>
|
|
|
|
|
/// <param name="fieldName"></param>
|
|
|
|
|
/// <returns>指定字段所有唯一值</returns>
|
|
|
|
|
private List<string> GetLayerUniqueFieldValueByDataStatistics(IFeatureClass featureClass, string fieldName)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
List<string> arrValues = new List<string>();
|
|
|
|
|
IQueryFilter pQueryFilter = new QueryFilterClass();
|
|
|
|
|
IFeatureCursor pFeatureCursor = null;
|
|
|
|
|
pQueryFilter.SubFields = fieldName;
|
|
|
|
|
pFeatureCursor = featureClass.Search(pQueryFilter, true);
|
|
|
|
|
IDataStatistics pDataStati = new DataStatisticsClass();
|
|
|
|
|
pDataStati.Field = fieldName;
|
|
|
|
|
pDataStati.Cursor = (ICursor)pFeatureCursor;
|
|
|
|
|
IEnumerator pEnumerator = pDataStati.UniqueValues;
|
|
|
|
|
pEnumerator.Reset();
|
|
|
|
|
while (pEnumerator.MoveNext())
|
|
|
|
|
{
|
|
|
|
|
object pObj = pEnumerator.Current;
|
|
|
|
|
arrValues.Add(pObj.ToString());
|
|
|
|
|
}
|
|
|
|
|
arrValues.Sort();
|
|
|
|
|
return arrValues;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("GetLayerUniqueFieldValueByDataStatistics异常:" + ex.Message);
|
|
|
|
|
LogAPI.Debug("GetLayerUniqueFieldValueByDataStatistics异常:" + ex.StackTrace);
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool DirectoryCopy(string sourceDir, string targetDirPath)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (!Directory.Exists(sourceDir)) return false;
|
|
|
|
|
string targetDir = targetDirPath + "\\" + System.IO.Path.GetFileName(sourceDir);
|
|
|
|
|
if (!Directory.Exists(targetDir)) Directory.CreateDirectory(targetDir);
|
|
|
|
|
// 文件及文件夹名称数组
|
|
|
|
|
string[] dirColl = Directory.GetDirectories(sourceDir);
|
|
|
|
|
string[] fileColl = Directory.GetFiles(sourceDir);
|
|
|
|
|
// 便利所有文件
|
|
|
|
|
if (fileColl.Length > 0)
|
|
|
|
|
{
|
|
|
|
|
string fileName;
|
|
|
|
|
foreach (string fileDir in fileColl)
|
|
|
|
|
{
|
|
|
|
|
fileName = System.IO.Path.GetFileName(fileDir);
|
|
|
|
|
File.Copy(sourceDir + "\\" + fileName, targetDir + "\\" + fileName, true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 遍历所有文件夹
|
|
|
|
|
if (dirColl.Length > 0)
|
|
|
|
|
{
|
|
|
|
|
string folderName;
|
|
|
|
|
foreach (string dir in dirColl)
|
|
|
|
|
{
|
|
|
|
|
folderName = System.IO.Path.GetFileName(dir);
|
|
|
|
|
// 递归调用
|
|
|
|
|
Directory.CreateDirectory(targetDir + "\\" + folderName);
|
|
|
|
|
DirectoryCopy(dir, targetDir + "\\" + folderName);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("新建工程页面中,文件夹复制时失败,异常原因: " + ex + " ; ");
|
|
|
|
|
return false;
|
|
|
|
|
throw;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public virtual void DelectDirect(string srcPath)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
DirectoryInfo dir = new DirectoryInfo(srcPath);
|
|
|
|
|
FileSystemInfo[] fileinfo = dir.GetFileSystemInfos(); //返回目录中所有文件和子目录
|
|
|
|
|
foreach (FileSystemInfo i in fileinfo)
|
|
|
|
|
{
|
|
|
|
|
if (i is DirectoryInfo) //判断是否文件夹
|
|
|
|
|
{
|
|
|
|
|
DirectoryInfo subdir = new DirectoryInfo(i.FullName);
|
|
|
|
|
subdir.Delete(true); //删除子目录和文件
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
File.Delete(i.FullName); //删除指定文件
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
throw;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
///
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sourceFeatureClass">数据源</param>
|
|
|
|
|
/// <param name="targetFeatureClass">目标数据</param>
|
|
|
|
|
/// <param name="pFilter">筛选条件</param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public bool BGFWFcToFc(IFeatureClass sourceFeatureClass, IFeatureClass targetFeatureClass, IQueryFilter pFilter)
|
|
|
|
|
{
|
|
|
|
|
IFeatureCursor S_Cursor = null;
|
|
|
|
|
IFeatureCursor T_Cursor = null;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (sourceFeatureClass == null || targetFeatureClass == null) return false;
|
|
|
|
|
IFeatureClassLoad pFclsLoad = targetFeatureClass as IFeatureClassLoad;
|
|
|
|
|
if (pFclsLoad != null)
|
|
|
|
|
pFclsLoad.LoadOnlyMode = true;
|
|
|
|
|
//此处写编辑的代码
|
|
|
|
|
S_Cursor = sourceFeatureClass.Search(pFilter, true);
|
|
|
|
|
IFeature f = null;
|
|
|
|
|
T_Cursor = targetFeatureClass.Insert(true);
|
|
|
|
|
IFeatureBuffer buffer = targetFeatureClass.CreateFeatureBuffer();
|
|
|
|
|
var s_ihcbgdl = sourceFeatureClass.FindField("hcbgdl");
|
|
|
|
|
var s_idlbm = sourceFeatureClass.FindField("dlbm");
|
|
|
|
|
var s_ihcbgdl_1 = sourceFeatureClass.FindField("hcbgdl_1");
|
|
|
|
|
var s_izzsx = sourceFeatureClass.FindField("zzsx");
|
|
|
|
|
var s_izzsx_1 = sourceFeatureClass.FindField("zzsx_1");
|
|
|
|
|
var s_igdlx = sourceFeatureClass.FindField("gdlx");
|
|
|
|
|
var s_igdlx_1 = sourceFeatureClass.FindField("gdlx_1");
|
|
|
|
|
var s_ihfsx = sourceFeatureClass.FindField("hfsx");
|
|
|
|
|
var s_ihfsx_1 = sourceFeatureClass.FindField("hfsx_1");
|
|
|
|
|
var s_itblx = sourceFeatureClass.FindField("tblx");
|
|
|
|
|
var s_itblx_1 = sourceFeatureClass.FindField("tblx_1");
|
|
|
|
|
var s_itbbsm = sourceFeatureClass.FindField("tbbsm");
|
|
|
|
|
var s_itbbsm_1 = sourceFeatureClass.FindField("tbbsm_1");
|
|
|
|
|
var s_iczcsxm = sourceFeatureClass.FindField("czcsxm");
|
|
|
|
|
var s_iczcsxm_1 = sourceFeatureClass.FindField("czcsxm_1");
|
|
|
|
|
var s_isjdrly1 = sourceFeatureClass.FindField("FID_sjdrly1");
|
|
|
|
|
var t_idlbm = targetFeatureClass.FindField("dlbm");
|
|
|
|
|
var t_izzsxdm = targetFeatureClass.FindField("zzsxdm");
|
|
|
|
|
var t_igdlx = targetFeatureClass.FindField("gdlx");
|
|
|
|
|
var t_iBSM = targetFeatureClass.FindField("tbbsm");
|
|
|
|
|
var t_iCZCSXM = targetFeatureClass.FindField("czcsxm");
|
|
|
|
|
List<TBLXConvert> tBLXConverts = TBLXConvert();
|
|
|
|
|
while ((f = S_Cursor.NextFeature()) != null)
|
|
|
|
|
{
|
|
|
|
|
bool setdlbm = true;
|
|
|
|
|
string sjdrly1 = string.Empty;
|
|
|
|
|
if (s_isjdrly1 > 0)
|
|
|
|
|
{
|
|
|
|
|
sjdrly1 = f.Value[s_isjdrly1].ToTrim();
|
|
|
|
|
}
|
|
|
|
|
if (sjdrly1 == "-1")
|
|
|
|
|
{
|
|
|
|
|
if (s_itblx_1 > 0 && tBLXConverts.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
string tblx = f.Value[s_itblx_1].ToTrim();
|
|
|
|
|
var _TBLXConvert = tBLXConverts.FirstOrDefault(x => x.FieldValue == tblx);
|
|
|
|
|
if (_TBLXConvert != null)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(f.Value[s_ihcbgdl_1].ToTrim()))
|
|
|
|
|
{
|
|
|
|
|
buffer.Value[t_idlbm] = _TBLXConvert.DLBM;
|
|
|
|
|
setdlbm = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
buffer.Shape = f.ShapeCopy;
|
|
|
|
|
//hcbgdl---dlbm //zzsx ---zzsxdm //gdlx---gdlx //hfsx---zzsxdm
|
|
|
|
|
if (setdlbm)
|
|
|
|
|
buffer.Value[t_idlbm] = f.Value[s_ihcbgdl_1];
|
|
|
|
|
buffer.Value[t_igdlx] = f.Value[s_igdlx_1];
|
|
|
|
|
var zzsx = f.Value[s_izzsx_1].ToTrim();
|
|
|
|
|
if (!string.IsNullOrEmpty(zzsx))
|
|
|
|
|
buffer.Value[t_izzsxdm] = zzsx;
|
|
|
|
|
else
|
|
|
|
|
buffer.Value[t_izzsxdm] = f.Value[s_ihfsx_1];
|
|
|
|
|
if (s_iczcsxm_1 > 0)
|
|
|
|
|
{
|
|
|
|
|
buffer.Value[t_iCZCSXM] = f.Value[s_iczcsxm_1];
|
|
|
|
|
}
|
|
|
|
|
buffer.Value[t_iBSM] = f.Value[s_itbbsm_1];
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (s_itblx > 0 && tBLXConverts.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
string tblx = f.Value[s_itblx].ToTrim();
|
|
|
|
|
var _TBLXConvert = tBLXConverts.FirstOrDefault(x => x.FieldValue == tblx);
|
|
|
|
|
if (_TBLXConvert != null)
|
|
|
|
|
{
|
|
|
|
|
if (s_ihcbgdl > 0)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(f.Value[s_ihcbgdl].ToTrim()))
|
|
|
|
|
{
|
|
|
|
|
buffer.Value[t_idlbm] = _TBLXConvert.DLBM;
|
|
|
|
|
setdlbm = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
buffer.Shape = f.ShapeCopy;
|
|
|
|
|
//hcbgdl---dlbm //zzsx ---zzsxdm //gdlx---gdlx //hfsx---zzsxdm
|
|
|
|
|
if (setdlbm)
|
|
|
|
|
{
|
|
|
|
|
if (s_ihcbgdl > 0)
|
|
|
|
|
buffer.Value[t_idlbm] = f.Value[s_ihcbgdl];
|
|
|
|
|
}
|
|
|
|
|
if (s_idlbm > 0)
|
|
|
|
|
buffer.Value[t_idlbm] = f.Value[s_idlbm];
|
|
|
|
|
if (s_igdlx > 0)
|
|
|
|
|
buffer.Value[t_igdlx] = f.Value[s_igdlx];
|
|
|
|
|
var zzsx = string.Empty;
|
|
|
|
|
if (s_izzsx > 0)
|
|
|
|
|
zzsx = f.Value[s_izzsx].ToTrim();
|
|
|
|
|
if (!string.IsNullOrEmpty(zzsx))
|
|
|
|
|
buffer.Value[t_izzsxdm] = zzsx;
|
|
|
|
|
else if (s_ihfsx > 0)
|
|
|
|
|
buffer.Value[t_izzsxdm] = f.Value[s_ihfsx];
|
|
|
|
|
if (s_iczcsxm > 0)
|
|
|
|
|
buffer.Value[t_iCZCSXM] = f.Value[s_iczcsxm];
|
|
|
|
|
if (s_itbbsm > 0)
|
|
|
|
|
buffer.Value[t_iBSM] = f.Value[s_itbbsm];
|
|
|
|
|
}
|
|
|
|
|
T_Cursor.InsertFeature(buffer);
|
|
|
|
|
}
|
|
|
|
|
T_Cursor.Flush();
|
|
|
|
|
if (pFclsLoad != null)
|
|
|
|
|
pFclsLoad.LoadOnlyMode = false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (T_Cursor != null)
|
|
|
|
|
{
|
|
|
|
|
Marshal.ReleaseComObject(T_Cursor);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public bool BGFWFcToFc_0813(IFeatureClass sourceFeatureClass, IFeatureClass targetFeatureClass, IQueryFilter pFilter)
|
|
|
|
|
{
|
|
|
|
|
IFeatureCursor S_Cursor = null;
|
|
|
|
|
IFeatureCursor T_Cursor = null;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (sourceFeatureClass == null || targetFeatureClass == null) return false;
|
|
|
|
|
IFeatureClassLoad pFclsLoad = targetFeatureClass as IFeatureClassLoad;
|
|
|
|
|
if (pFclsLoad != null)
|
|
|
|
|
pFclsLoad.LoadOnlyMode = true;
|
|
|
|
|
//此处写编辑的代码
|
|
|
|
|
S_Cursor = sourceFeatureClass.Search(pFilter, true);
|
|
|
|
|
IFeature f = null;
|
|
|
|
|
T_Cursor = targetFeatureClass.Insert(true);
|
|
|
|
|
IFeatureBuffer buffer = targetFeatureClass.CreateFeatureBuffer();
|
|
|
|
|
var s_tblx = sourceFeatureClass.FindField("tblx");
|
|
|
|
|
var t_idlbm = targetFeatureClass.FindField("dlbm");
|
|
|
|
|
List<TBLXConvert> tBLXConverts = TBLXConvert();
|
|
|
|
|
while ((f = S_Cursor.NextFeature()) != null)
|
|
|
|
|
{
|
|
|
|
|
string tblx = string.Empty;
|
|
|
|
|
if (s_tblx > 0)
|
|
|
|
|
{
|
|
|
|
|
tblx = f.Value[s_tblx].ToTrim();
|
|
|
|
|
}
|
|
|
|
|
if (tBLXConverts.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
var _TBLXConvert = tBLXConverts.FirstOrDefault(x => x.FieldValue == tblx);
|
|
|
|
|
if (_TBLXConvert != null)
|
|
|
|
|
{
|
|
|
|
|
buffer.Value[t_idlbm] = _TBLXConvert.DLBM;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#region 投影坐标
|
|
|
|
|
ISpatialReference s_spatialReference = f.ShapeCopy.SpatialReference;
|
|
|
|
|
ISpatialReference t_spatialReference = (targetFeatureClass.FeatureDataset as IGeoDataset).SpatialReference;
|
|
|
|
|
if (s_spatialReference.Name != t_spatialReference.Name)
|
|
|
|
|
{
|
|
|
|
|
IGeometry geo = null;
|
|
|
|
|
geo = f.ShapeCopy;
|
|
|
|
|
geo.SpatialReference = s_spatialReference;
|
|
|
|
|
geo.Project(t_spatialReference);
|
|
|
|
|
ITopologicalOperator topologicalOperator = geo as ITopologicalOperator;
|
|
|
|
|
topologicalOperator.Simplify();
|
|
|
|
|
buffer.Shape = geo;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
buffer.Shape = f.ShapeCopy;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
T_Cursor.InsertFeature(buffer);
|
|
|
|
|
}
|
|
|
|
|
T_Cursor.Flush();
|
|
|
|
|
if (pFclsLoad != null)
|
|
|
|
|
pFclsLoad.LoadOnlyMode = false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (T_Cursor != null)
|
|
|
|
|
{
|
|
|
|
|
Marshal.ReleaseComObject(T_Cursor);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool BGFcToFc(IFeatureClass sourceFeatureClass, IFeatureClass targetFeatureClass, IQueryFilter pFilter)
|
|
|
|
|
{
|
|
|
|
|
IFeatureCursor S_Cursor = null;
|
|
|
|
|
IFeatureCursor T_Cursor = null;
|
|
|
|
|
IFeature f = null;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (sourceFeatureClass == null || targetFeatureClass == null) return false;
|
|
|
|
|
List<string> filedname = new List<string>() { "DLBM", "GDLX", "ZZSXDM" };
|
|
|
|
|
//IFeatureClassLoad pFclsLoad = targetFeatureClass as IFeatureClassLoad;
|
|
|
|
|
//if (pFclsLoad != null)
|
|
|
|
|
// pFclsLoad.LoadOnlyMode = true;
|
|
|
|
|
Dictionary<int, int> keyValuePairs = new Dictionary<int, int>();
|
|
|
|
|
for (int i = 0; i < targetFeatureClass.Fields.FieldCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IField field = targetFeatureClass.Fields.Field[i];
|
|
|
|
|
if (field.Name == targetFeatureClass.ShapeFieldName || field.Name.Contains(targetFeatureClass.ShapeFieldName) || field.Name == targetFeatureClass.OIDFieldName || !field.Editable || !filedname.Contains(field.Name)) continue;
|
|
|
|
|
var sindex = sourceFeatureClass.Fields.FindField(field.Name);
|
|
|
|
|
if (sindex > 0)
|
|
|
|
|
keyValuePairs.Add(i, sindex);
|
|
|
|
|
}
|
|
|
|
|
//此处写编辑的代码
|
|
|
|
|
S_Cursor = sourceFeatureClass.Search(pFilter, true);
|
|
|
|
|
T_Cursor = targetFeatureClass.Insert(true);
|
|
|
|
|
var s_iCZCLX = sourceFeatureClass.FindField("CZCLX");
|
|
|
|
|
var s_iCZCSXM = sourceFeatureClass.FindField("CZCSXM");
|
|
|
|
|
var t_iczcsxm = targetFeatureClass.FindField("CZCSXM");
|
|
|
|
|
var s_idlbm = sourceFeatureClass.FindField("DLBM");
|
|
|
|
|
IFeatureBuffer buffer = targetFeatureClass.CreateFeatureBuffer();
|
|
|
|
|
while ((f = S_Cursor.NextFeature()) != null)
|
|
|
|
|
{
|
|
|
|
|
foreach (var item in keyValuePairs)
|
|
|
|
|
{
|
|
|
|
|
buffer.Value[item.Key] = f.Value[item.Value];
|
|
|
|
|
}
|
|
|
|
|
string dlbm = f.Value[s_idlbm].ToTrim();
|
|
|
|
|
//06类的为204,09类为205,0701为202,其余为203
|
|
|
|
|
List<string> jsyd = new List<string>() { "0508", "05H1", "0701", "0809", "0810", "0810A", "08H1", "08H2", "08H2A", "1004", "1005", "1201" };
|
|
|
|
|
string czcsxm = string.IsNullOrEmpty(f.Value[s_iCZCSXM].ToTrim()) ? f.Value[s_iCZCLX].ToTrim() : f.Value[s_iCZCSXM].ToTrim();
|
|
|
|
|
if (czcsxm.IsNullOrEmpty())
|
|
|
|
|
{
|
|
|
|
|
if (dlbm.StartsWith("06"))
|
|
|
|
|
czcsxm = "204";
|
|
|
|
|
if (dlbm.StartsWith("09"))
|
|
|
|
|
czcsxm = "205";
|
|
|
|
|
if (dlbm == "0702")
|
|
|
|
|
czcsxm = "202";
|
|
|
|
|
if (jsyd.Contains(dlbm))
|
|
|
|
|
czcsxm = "203";
|
|
|
|
|
}
|
|
|
|
|
buffer.Value[t_iczcsxm] = czcsxm;
|
|
|
|
|
buffer.Shape = f.ShapeCopy;
|
|
|
|
|
T_Cursor.InsertFeature(buffer);
|
|
|
|
|
}
|
|
|
|
|
T_Cursor.Flush();
|
|
|
|
|
//if (pFclsLoad != null)
|
|
|
|
|
// pFclsLoad.LoadOnlyMode = false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (T_Cursor != null)
|
|
|
|
|
Marshal.ReleaseComObject(T_Cursor);
|
|
|
|
|
if (f != null)
|
|
|
|
|
Marshal.ReleaseComObject(f);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取转换关系
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
private List<TBLXConvert> TBLXConvert()
|
|
|
|
|
{
|
|
|
|
|
List<TBLXConvert> tBLXConverts = new List<TBLXConvert>();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string strPath = SysAppPath.GetCurrentAppPath() + "Configs\\TBLX_Config.xml";
|
|
|
|
|
XDocument xDoc = XDocument.Load(strPath);
|
|
|
|
|
foreach (XElement xElement in xDoc.Descendants("Item"))
|
|
|
|
|
{
|
|
|
|
|
string FieldName = xElement.Attributes("FieldName").Single().Value;
|
|
|
|
|
string FieldValue = xElement.Attributes("FieldValue").Single().Value;
|
|
|
|
|
string DLBM = xElement.Attributes("DLBM").Single().Value;
|
|
|
|
|
string Iseffective = xElement.Attributes("Iseffective").Single().Value;
|
|
|
|
|
if (Iseffective != "true") continue;
|
|
|
|
|
tBLXConverts.Add(new WpfApp1.TBLXConvert() { FieldName = FieldName, FieldValue = FieldValue, DLBM = DLBM });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("获取转换关系异常:" + ex.Message);
|
|
|
|
|
LogAPI.Debug("获取转换关系异常:" + ex.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
return tBLXConverts;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btn_nO_Click(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Process.GetCurrentProcess().Kill();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void czc20x_Checked(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CheckAll_Checked(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
list.ForEach(f => f.IsChecked = (sender as System.Windows.Controls.CheckBox).IsChecked == true);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private string Overlap_AfterTreatment { get; set; }
|
|
|
|
|
|
|
|
|
|
private void btn_overlap_Click(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
IQueryFilter queryFilter = null;
|
|
|
|
|
GPParamClass gPParamClass = null;
|
|
|
|
|
IFeatureLayer MultipartLayer = null;
|
|
|
|
|
FileInfo file = null;
|
|
|
|
|
IFeatureClass outsideFeatureClass = null;
|
|
|
|
|
List<string> files = new List<string>();
|
|
|
|
|
string temppath = string.Empty;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string filepath = bgfwpath.Text;
|
|
|
|
|
if (string.IsNullOrEmpty(filepath) || filepath == "矢量数据中包含多个区县的变更范围,请先勾选下方复选框")
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.ShowTips("请先选择变更范围图斑.");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (Directory.Exists(filepath + "\\去重数据\\BGDB.gdb"))
|
|
|
|
|
{
|
|
|
|
|
if (MessageHelper.ShowYesNoAndTips("已存在去重数据,是否重新生成去重数据.") != System.Windows.Forms.DialogResult.Yes)
|
|
|
|
|
{
|
|
|
|
|
Overlap_AfterTreatment = $"{filepath + "\\去重数据\\BGDB.gdb\\AfterTreatment"}";
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!string.IsNullOrEmpty(filepath))
|
|
|
|
|
{
|
|
|
|
|
var filesshp = System.IO.Directory.GetFiles(filepath, "*.shp", SearchOption.AllDirectories);
|
|
|
|
|
files.AddRange(filesshp);
|
|
|
|
|
if (filesshp.Length == 0) return;
|
|
|
|
|
this.ShowLoading("正在处理重叠数据", 0, 0);
|
|
|
|
|
file = new FileInfo(files[0]);
|
|
|
|
|
IWorkspaceFactory wsf = new ShapefileWorkspaceFactory();
|
|
|
|
|
ESRI.ArcGIS.Geodatabase.IWorkspace pWorkspace = wsf.OpenFromFile(file.DirectoryName, 0);
|
|
|
|
|
IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
|
|
|
|
|
outsideFeatureClass = pFeatureWorkspace.OpenFeatureClass(file.Name.Replace(".shp", ""));
|
|
|
|
|
if (outsideFeatureClass == null)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.ShowTips("变更范围图斑读取失败,请检查数据是否正确.");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
temppath = filepath + "\\去重数据";
|
|
|
|
|
if (!Directory.Exists(temppath))
|
|
|
|
|
{
|
|
|
|
|
Directory.CreateDirectory(temppath);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
DelectDirect(temppath);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex) { }
|
|
|
|
|
}
|
|
|
|
|
DirectoryCopy(SysAppPath.GetCurrentAppPath() + "Template\\BGDB.gdb", temppath);
|
|
|
|
|
temppath = $"{temppath}\\BGDB.gdb";
|
|
|
|
|
#region 根据sjdrly 擦除重复数据 1 国家提取 2自主提取 用sjdrly=1的 擦除sjdrly=2的数据 然后拆分多部件
|
|
|
|
|
IWorkspaceAPI wsAPI = new WorkspaceAPI(temppath, WorkspaceTypeEnum.GDBFile);
|
|
|
|
|
GeoDBAPI.SetGeoDatasetSpatialReference(wsAPI.CurrentWorkspace, GeoDBAPI.GetGeoDatasetSpatialReference(pWorkspace), 0.0001);
|
|
|
|
|
IFeatureClassAPI sjdrly_1 = wsAPI.CreateFeatureClass("sjdrly1", (outsideFeatureClass as IGeoDataset).SpatialReference, outsideFeatureClass.Fields);
|
|
|
|
|
IFeatureClassAPI sjdrly_2 = wsAPI.CreateFeatureClass("sjdrly2", (outsideFeatureClass as IGeoDataset).SpatialReference, outsideFeatureClass.Fields);
|
|
|
|
|
IFeatureClassAPI fcAPI = new FeatureClassAPI(outsideFeatureClass);
|
|
|
|
|
queryFilter = new QueryFilter() { };
|
|
|
|
|
queryFilter.WhereClause = $"sdxz = '3' and sjdrly='1' ";
|
|
|
|
|
fcAPI.FcToFc(sjdrly_1.FeatureClass, queryFilter, true);
|
|
|
|
|
queryFilter.WhereClause = $"sdxz = '3' and sjdrly='2' ";
|
|
|
|
|
fcAPI.FcToFc(sjdrly_2.FeatureClass, queryFilter, true);
|
|
|
|
|
IFeatureLayer EraseLayer = null;
|
|
|
|
|
|
|
|
|
|
gPParamClass = new GPParamClass
|
|
|
|
|
{
|
|
|
|
|
FirstFeatureLayer = new FeatureLayer() { FeatureClass = sjdrly_1.FeatureClass, Name = "sjdrly1" },
|
|
|
|
|
SecondFeatureLayer = new FeatureLayer() { FeatureClass = sjdrly_2.FeatureClass, Name = "sjdrly2" },
|
|
|
|
|
OutFeatureClassPath = $"{temppath}\\shapeErase",
|
|
|
|
|
IsGetOutPutFeature = true,
|
|
|
|
|
GPType = EnumGPType.Erase,
|
|
|
|
|
};
|
|
|
|
|
GPHelper.Instance.ExeGPForProces(gPParamClass, ref EraseLayer);
|
|
|
|
|
#region 拆分多部件
|
|
|
|
|
gPParamClass = new GPParamClass();
|
|
|
|
|
gPParamClass.FirstFeatureLayer = EraseLayer;
|
|
|
|
|
gPParamClass.OutFeatureClassPath = $"{temppath}\\AfterTreatment";
|
|
|
|
|
gPParamClass.IsGetOutPutFeature = true;
|
|
|
|
|
gPParamClass.GPType = EnumGPType.MultipartToSinglePath;
|
|
|
|
|
GPHelper.Instance.ExeGPForProces(gPParamClass, ref MultipartLayer);
|
|
|
|
|
#endregion
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
Overlap_AfterTreatment = $"{temppath}\\AfterTreatment";
|
|
|
|
|
this.CloseLoading();
|
|
|
|
|
MessageHelper.ShowTips("重叠数据处理完成.");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
this.CloseLoading();
|
|
|
|
|
LogAPI.Debug(ex.Message + ex.StackTrace);
|
|
|
|
|
MessageHelper.ShowError("重叠图斑处理失败:" + ex.Message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void Overlap_Checked(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 流量分析数据为DLTBGXGC层数据
|
|
|
|
|
private void DLTBGXGC_Checked(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (DLTBGXGC.IsChecked == true)
|
|
|
|
|
{
|
|
|
|
|
GTDCY.IsChecked = false;
|
|
|
|
|
JCTB.IsChecked = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
private void btn_FG_Click(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
ESRI.ArcGIS.Geodatabase.IWorkspace pWorkspace = null;
|
|
|
|
|
IFeatureClass outsideFeatureClass = null;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (ListData == null || ListData.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.ShowTips("请先选择需要分析的数据.");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.ShowLoading("正在进行拆分...", 0, 0);
|
|
|
|
|
List<string> files = new List<string>();
|
|
|
|
|
var filesshp = System.IO.Directory.GetFiles(bgfwpath.Text, "*.shp", SearchOption.AllDirectories);
|
|
|
|
|
files.AddRange(filesshp);
|
|
|
|
|
if (filesshp.Length == 0) return;
|
|
|
|
|
FileInfo file = new FileInfo(files[0]);
|
|
|
|
|
IWorkspaceFactory wsf = new ShapefileWorkspaceFactory();
|
|
|
|
|
pWorkspace = wsf.OpenFromFile(file.DirectoryName, 0);
|
|
|
|
|
IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
|
|
|
|
|
outsideFeatureClass = pFeatureWorkspace.OpenFeatureClass(file.Name.Replace(".shp", ""));
|
|
|
|
|
if (outsideFeatureClass == null) return;
|
|
|
|
|
foreach (var item in ListData)
|
|
|
|
|
{
|
|
|
|
|
if (item.XZQDM == null) continue;
|
|
|
|
|
string gdbFolder = bgfwpath.Text + $"\\分县导出\\{item.XZQDM}";
|
|
|
|
|
if (!Directory.Exists(gdbFolder))
|
|
|
|
|
Directory.CreateDirectory(gdbFolder);
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
DelectDirect(gdbFolder);
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
{
|
|
|
|
|
//删除临时数据异常 不做处理
|
|
|
|
|
}
|
|
|
|
|
ExportFeaturesToShp(outsideFeatureClass, new QueryFilterClass() { WhereClause = $"xzqdm='{item.XZQDM}'" }, gdbFolder, item.XZQDM);
|
|
|
|
|
}
|
|
|
|
|
this.CloseLoading();
|
|
|
|
|
MessageHelper.ShowTips($"分县导出完成。");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
this.CloseLoading();
|
|
|
|
|
LogAPI.Debug("分县导出失败" + ex.Message + ex.StackTrace);
|
|
|
|
|
MessageHelper.ShowError($"地类图斑数据提取失败:{ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
btn_oK.IsEnabled = true;
|
|
|
|
|
btn_nO.IsEnabled = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 导出SHP数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="pSourceFeatureClass"></param>
|
|
|
|
|
/// <param name="pQueryFilter"></param>
|
|
|
|
|
/// <param name="forlder"></param>
|
|
|
|
|
/// <param name="fileName"></param>
|
|
|
|
|
public static void ExportFeaturesToShp(IFeatureClass pSourceFeatureClass, IQueryFilter pQueryFilter, string forlder, string fileName)
|
|
|
|
|
{
|
|
|
|
|
IWorkspaceFactory workFactory = null;
|
|
|
|
|
IFeatureWorkspace pFeatureWorkspace = null;
|
|
|
|
|
IFeatureCursor pFeatureCursor = null;
|
|
|
|
|
IFeatureClass pFeatureClass = null;
|
|
|
|
|
IFeatureCursor pInsertFeatureCursor = null;
|
|
|
|
|
int count = 0;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (!System.IO.Directory.Exists(forlder))
|
|
|
|
|
{
|
|
|
|
|
System.IO.Directory.CreateDirectory(forlder);
|
|
|
|
|
}
|
|
|
|
|
count = pSourceFeatureClass.FeatureCount(pQueryFilter);
|
|
|
|
|
pFeatureCursor = pSourceFeatureClass.Search(pQueryFilter, true);
|
|
|
|
|
workFactory = new ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass();
|
|
|
|
|
pFeatureWorkspace = workFactory.OpenFromFile(forlder, 0) as IFeatureWorkspace;
|
|
|
|
|
//创建字段信息
|
|
|
|
|
IFields pFields = new FieldsClass();
|
|
|
|
|
IFieldsEdit pFieldsEdit = pFields as IFieldsEdit;
|
|
|
|
|
List<string> fieldNames = new List<string>();
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < pSourceFeatureClass.Fields.FieldCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IField field = pSourceFeatureClass.Fields.get_Field(i);
|
|
|
|
|
if ((field.Type == esriFieldType.esriFieldTypeBlob || field.Type == esriFieldType.esriFieldTypeRaster) && field.Type != esriFieldType.esriFieldTypeGeometry)
|
|
|
|
|
continue;
|
|
|
|
|
if (field.Type == esriFieldType.esriFieldTypeGeometry)
|
|
|
|
|
{
|
|
|
|
|
IField pField = new FieldClass();
|
|
|
|
|
IFieldEdit pFieldEdit = pField as IFieldEdit;
|
|
|
|
|
pFieldEdit.Name_2 = "Shape";
|
|
|
|
|
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;
|
|
|
|
|
IGeometryDef pGeometryDef = new GeometryDef();
|
|
|
|
|
IGeometryDefEdit pGeometryDefEdit = pGeometryDef as IGeometryDefEdit;
|
|
|
|
|
pGeometryDefEdit.GeometryType_2 = pSourceFeatureClass.ShapeType;//pFeature.Shape.GeometryType;
|
|
|
|
|
if ((pSourceFeatureClass as IGeoDataset) != null)
|
|
|
|
|
{
|
|
|
|
|
pGeometryDefEdit.SpatialReference_2 = (pSourceFeatureClass as IGeoDataset).SpatialReference;//pFeature.Shape.SpatialReference;
|
|
|
|
|
}
|
|
|
|
|
pFieldEdit.GeometryDef_2 = pGeometryDef;
|
|
|
|
|
pFieldsEdit.AddField(pField);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
IField pField = new FieldClass();
|
|
|
|
|
IFieldEdit pFieldEdit = pField as IFieldEdit;
|
|
|
|
|
pFieldEdit.Length_2 = field.Length;
|
|
|
|
|
if (field.AliasName == "种植属性名称")
|
|
|
|
|
{
|
|
|
|
|
pFieldEdit.Length_2 = field.Length + 10;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (field.Name.Length > 10)
|
|
|
|
|
{
|
|
|
|
|
string fname = field.Name.Substring(0, 10);
|
|
|
|
|
int n = 1;
|
|
|
|
|
while (fieldNames.Contains(fname))
|
|
|
|
|
{
|
|
|
|
|
string end = n.ToString();
|
|
|
|
|
fname = fname.Remove(10 - end.Length) + end;
|
|
|
|
|
n++;
|
|
|
|
|
}
|
|
|
|
|
pFieldEdit.Name_2 = fname;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
pFieldEdit.Name_2 = field.Name;
|
|
|
|
|
}
|
|
|
|
|
fieldNames.Add(pFieldEdit.Name);
|
|
|
|
|
pFieldEdit.AliasName_2 = field.AliasName;
|
|
|
|
|
pFieldEdit.Type_2 = field.Type;
|
|
|
|
|
pFieldsEdit.AddField(pField);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
pFeatureClass = pFeatureWorkspace.CreateFeatureClass(fileName, pFields, null, null, pSourceFeatureClass.FeatureType, "SHAPE", "");
|
|
|
|
|
pInsertFeatureCursor = pFeatureClass.Insert(true);
|
|
|
|
|
int num = 0;
|
|
|
|
|
ProgressHelper.CountProgress = count;
|
|
|
|
|
Dictionary<int, int> dicMatchFields = new Dictionary<int, int>();
|
|
|
|
|
GetMatchFieldsDirectory(pSourceFeatureClass, pFeatureClass, ref dicMatchFields, true);
|
|
|
|
|
IFeatureBuffer featureAdd = pFeatureClass.CreateFeatureBuffer();
|
|
|
|
|
IFeature pFeature = null;
|
|
|
|
|
while ((pFeature = pFeatureCursor.NextFeature()) != null)
|
|
|
|
|
{
|
|
|
|
|
featureAdd.Shape = pFeature.Shape;
|
|
|
|
|
foreach (KeyValuePair<int, int> kvpMatchField in dicMatchFields)
|
|
|
|
|
{
|
|
|
|
|
if (pFeature.Value[kvpMatchField.Value] != DBNull.Value)
|
|
|
|
|
{
|
|
|
|
|
featureAdd.set_Value(kvpMatchField.Key, pFeature.get_Value(kvpMatchField.Value));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
featureAdd.set_Value(kvpMatchField.Key, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
pInsertFeatureCursor.InsertFeature(featureAdd);
|
|
|
|
|
num++;
|
|
|
|
|
if (num % 100 == 0 || num == count)
|
|
|
|
|
{
|
|
|
|
|
ProgressHelper.CurrentProgress = num;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
pInsertFeatureCursor.Flush();
|
|
|
|
|
ProgressHelper.CloseProcessBar();
|
|
|
|
|
//关闭lock
|
|
|
|
|
IWorkspaceFactoryLockControl ipWsFactoryLock = (IWorkspaceFactoryLockControl)workFactory;
|
|
|
|
|
if (ipWsFactoryLock.SchemaLockingEnabled)
|
|
|
|
|
{
|
|
|
|
|
ipWsFactoryLock.DisableSchemaLocking();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
ProgressHelper.CloseProcessBar();
|
|
|
|
|
MessageHelper.ShowError("导出SHAPE文件出错:" + ex.Message);
|
|
|
|
|
LogAPI.Debug("导出SHAPE文件出错,可能的原因是:" + ex.Message);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (pFeatureCursor != null)
|
|
|
|
|
{
|
|
|
|
|
Marshal.ReleaseComObject(pFeatureCursor);
|
|
|
|
|
}
|
|
|
|
|
if (pFeatureClass != null)
|
|
|
|
|
{
|
|
|
|
|
Marshal.ReleaseComObject(pFeatureClass);
|
|
|
|
|
}
|
|
|
|
|
if (pInsertFeatureCursor != null)
|
|
|
|
|
{
|
|
|
|
|
Marshal.ReleaseComObject(pInsertFeatureCursor);
|
|
|
|
|
}
|
|
|
|
|
if (pFeatureWorkspace != null)
|
|
|
|
|
{
|
|
|
|
|
Marshal.ReleaseComObject(pFeatureWorkspace);
|
|
|
|
|
}
|
|
|
|
|
if (workFactory != null)
|
|
|
|
|
{
|
|
|
|
|
Marshal.ReleaseComObject(workFactory);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获得匹配的字段索引集合
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="pSourceFeatureClass">源要素类</param>
|
|
|
|
|
/// <param name="pTargetClass">目标要素类</param>
|
|
|
|
|
/// <param name="dicMatchFields">匹配字段集合-KEY为目标图层字段,VALUE为源图层字段</param>
|
|
|
|
|
/// <param name="isGetRequired">是否获取必须字段</param>
|
|
|
|
|
public static void GetMatchFieldsDirectory(IClass pSourceClass, IClass pTargetClass, ref Dictionary<int, int> dicMatchFields, bool isGetRequired = false)
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < pTargetClass.Fields.FieldCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IField pTargetField = pTargetClass.Fields.get_Field(i);
|
|
|
|
|
//目标图层的字段必须为可编辑并且不是必须字段
|
|
|
|
|
if (pTargetField.Required == false && pTargetField.Editable == true)
|
|
|
|
|
{
|
|
|
|
|
int iSourceFeatureClassIndex = pSourceClass.Fields.FindField(pTargetField.Name);
|
|
|
|
|
if (pTargetField.Name == "SHAPE_Leng")
|
|
|
|
|
{
|
|
|
|
|
iSourceFeatureClassIndex = pSourceClass.Fields.FindField("SHAPE_Length");
|
|
|
|
|
}
|
|
|
|
|
//源要素类中该字段存在
|
|
|
|
|
if (iSourceFeatureClassIndex > -1)
|
|
|
|
|
{
|
|
|
|
|
IField pSourceField = pSourceClass.Fields.get_Field(iSourceFeatureClassIndex);
|
|
|
|
|
//目标图层的字段也必须为可编辑并且不是必须字段
|
|
|
|
|
if (pSourceField.Required == false && pSourceField.Editable == true)
|
|
|
|
|
{
|
|
|
|
|
//添加到字段匹配集合中
|
|
|
|
|
dicMatchFields.Add(i, iSourceFeatureClassIndex);
|
|
|
|
|
}
|
|
|
|
|
else if (isGetRequired)
|
|
|
|
|
{
|
|
|
|
|
dicMatchFields.Add(i, iSourceFeatureClassIndex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//此处为了保留原有要素ObjectID字段值
|
|
|
|
|
if (pTargetField.Name.Equals("OIDCOPY", StringComparison.CurrentCultureIgnoreCase))
|
|
|
|
|
{
|
|
|
|
|
dicMatchFields.Add(i, pSourceClass.FindField(pSourceClass.OIDFieldName));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public virtual string CreateTempDB(string pType, string pSubType = "")
|
|
|
|
|
{
|
|
|
|
|
string result = string.Empty;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string gdbFolder = Directory.GetCurrentDirectory() + "\\Temp\\" + pType;
|
|
|
|
|
if (!Directory.Exists(gdbFolder))
|
|
|
|
|
Directory.CreateDirectory(gdbFolder);
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
DelectDirect(gdbFolder);
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
{
|
|
|
|
|
//删除临时数据异常 不做处理
|
|
|
|
|
}
|
|
|
|
|
//IWorkspaceFactory pFtWsFct = new ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactory();
|
|
|
|
|
string gdbFileName = DateTime.Now.ToString("yyyyMMddHHmmssfff");// Guid.NewGuid().ToString().Replace("-", "");
|
|
|
|
|
string path = System.IO.Path.Combine(gdbFolder, string.IsNullOrWhiteSpace(pSubType) ? gdbFileName : pSubType);
|
|
|
|
|
//pFtWsFct.Create(path, "TempGDB", null, 0);
|
|
|
|
|
if (!Directory.Exists(path))
|
|
|
|
|
{
|
|
|
|
|
Directory.CreateDirectory(path);
|
|
|
|
|
}
|
|
|
|
|
string savePath = System.IO.Path.Combine(path, "TempGDB.gdb");
|
|
|
|
|
string templeteGDBPath = System.IO.Path.Combine(SysAppPath.GetCurrentAppPath(), "Template", "TempGDB.gdb");
|
|
|
|
|
CopyDirectory(templeteGDBPath, savePath, true);
|
|
|
|
|
result = path;// System.IO.Path.Combine(path, "TempGDB.gdb");//临时数据存放路径
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("创建临时数据库失败!" + ex.Message);
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void DLTBGX_Checked(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void JCTB_Checked(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (JCTB.IsChecked == true)
|
|
|
|
|
{
|
|
|
|
|
this.GTDCY.IsChecked = false;
|
|
|
|
|
this.DLTBGXGC.IsChecked = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void GTDCY_Checked(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (GTDCY.IsChecked == true)
|
|
|
|
|
{
|
|
|
|
|
this.JCTB.IsChecked = false;
|
|
|
|
|
this.DLTBGXGC.IsChecked = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public class ThreadParam
|
|
|
|
|
{
|
|
|
|
|
public string ThreadName { get; set; }
|
|
|
|
|
public List<string> Codes { get; set; }
|
|
|
|
|
public ProjectInfo ProjInfo { get; set; }
|
|
|
|
|
public string StrBgTbLayer { get; set; }
|
|
|
|
|
public string StrJcTbLayer { get; set; }
|
|
|
|
|
public List<LayerCfg> Layers { get; set; }
|
|
|
|
|
public AnalysisExport analysisExport { get; set; }
|
|
|
|
|
public string nodeid { get; set; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class CustomIDGParm
|
|
|
|
|
{
|
|
|
|
|
public AnalysisExport analysisExport { get; set; }
|
|
|
|
|
public IDGParameter PressParameter { get; set; }
|
|
|
|
|
public string ErrorMessage { get; set; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class TBLXConvert
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 字段名称
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string FieldName { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 字段值
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string FieldValue { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 对应的地类编码
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string DLBM { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 是否转换
|
|
|
|
|
/// </summary>
|
|
|
|
|
public bool Iseffective { get; set; }
|
|
|
|
|
}
|
|
|
|
|
public class TestData : INotifyPropertyChanged
|
|
|
|
|
{
|
|
|
|
|
private bool _IsChecked;
|
|
|
|
|
public bool IsChecked
|
|
|
|
|
{
|
|
|
|
|
get { return _IsChecked; }
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
_IsChecked = value;
|
|
|
|
|
RaisePropertyChanged("IsChecked");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public string ItemType { get; set; }
|
|
|
|
|
public string Descriction { get; set; }
|
|
|
|
|
|
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
|
protected void RaisePropertyChanged(string propertyName)
|
|
|
|
|
{
|
|
|
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|