public void Program() { var mdbfiles = FolderExtensions.GetFiles(ResultFolder, "*.mdb"); var codefiles = FolderExtensions.GetFiles(ResultFolder, "*.xls"); OutputMessage("成功获取成果路径下的所有矢量文件和单位代码表文件"); var tools = new List <GatherTool2>(); var ranges = GetTable(); var info = string.Empty; foreach (var item in mdbfiles) { var code = codefiles.FirstOrDefault(e => e.XZQDM.ToLower() == item.XZQDM.ToLower() && e.XZQMC.ToLower() == item.XZQMC.ToLower()); if (code != null) { tools.Add(new GatherTool2 { Dict = ranges, MdbFile = item.FullName, CodeFile = code.FullName, XZQDM = code.XZQDM, XZQMC = item.XZQMC, SaveFolder = SaveFolder }); } else { info = string.Format("缺少行政区代码【{0}】行政区名称【{1}】的相关数据文件或者单位代码表,故未进行统计操作", item.XZQDM, item.XZQMC); OutputMessage(info); } } foreach (var tool in tools) { tool.Program(); } //OutputMessage("成功生成文件"); }
private void btnExcel_Click(object sender, EventArgs e) { var folder = System.IO.Path.Combine(_dataPath, "3统计表格"); var files = FolderExtensions.GetFiles(folder, "*.xls"); var form = new FileViewForm(files, "统计表格查看"); form.ShowDialog(this); }
private void btnZJ_Click(object sender, EventArgs e) { var folder = System.IO.Path.Combine(_dataPath, "2栅格图件", "乡镇级成果"); var files = FolderExtensions.GetFiles(folder, "*.jpg"); var form = new FileViewForm(files, "乡镇级成果查看"); form.ShowDialog(this); }
private void LoadSG(string folder, RibbonComboBox combox) { var files = FolderExtensions.GetFiles(folder, "*.jpg"); foreach (var item in files) { combox.DropDownItems.Add(new RibbonLabel { Text = item.FileName }); } }
private void LoadFiles() { var files = FolderExtensions.GetFiles(_sourcePath, "*.mdb"); if (files == null || files.Count == 0) { MessageBox.Show("Datas文件夹中不存在相关文件列表,请导入"); return; } _files = files; this.DistrictBox.Items.Clear(); this.DistrictBox.Items.AddRange(files.Select(e => e.XZQMC).ToArray()); }
private void InitMdb() { var mdbfiles = FolderExtensions.GetFiles(SourceFolder, "*.mdb"); //获取文件及下所有的mdb文件列表 var codefiles = FolderExtensions.GetFiles(SourceFolder, "*.xls"); //获取文件夹下的所有的Excel文件 即单位代码表文件 OutputMessage("成功获取数据路径下的所有矢量文件和单位代码表文件"); #region 读取获取数据 var info = string.Empty; var tools = new List <CollectTool>(); foreach (var shi in CollectXZQ) { if (shi.Children != null) { foreach (var quxian in shi.Children) { var code = codefiles.FirstOrDefault(e => e.XZQDM.ToLower() == quxian.XZCDM.ToLower() && e.XZQMC.ToLower() == quxian.XZCMC.ToLower()); var mdb = mdbfiles.FirstOrDefault(e => e.XZQDM.ToLower() == quxian.XZCDM.ToLower() && e.XZQMC.ToLower() == quxian.XZCMC.ToLower()); if (code != null && mdb != null) { tools.Add(new CollectTool { MdbFile = mdb.FullName, CodeFile = code.FullName, TableFieldDict = Arguments.TableFieldDict, XZQDM = quxian.XZCDM, XZQMC = quxian.XZCMC }); } else { info = string.Format("缺少行政区代码【{0}】行政区名称【{1}】的相关数据文件或者单位代码表,故未进行统计操作", quxian.XZCDM, quxian.XZCMC); Console.WriteLine(info); //OutputMessage(info); } } } else { info = string.Format("市级{0}下未获取区县列表,请核对", shi.XZQMC); Console.WriteLine(info); OutputMessage(info); } } OutputMessage("正在获取每个县区市数据信息,请稍等......"); foreach (var tool in tools) { OutputMessage(string.Format("正在读取行政区代码【{0}】行政区名称【{1}】的矢量数据,请稍等", tool.XZQDM, tool.XZQMC)); tool.Program(); var output = tool.Result2; AddResult(output); OutputMessage(string.Format("完成对行政区代码【{0}】行政区名称【{1}】的数据查询操作", tool.XZQDM, tool.XZQMC)); } #endregion #region 多线程 //foreach (var tool in tools) //{ // var t = new Thread(tool.Program); // t.IsBackground = true; // t.Start(); // _tList.Add(t); //} //var flag = false; //while (flag == false) //{ // flag = true; // Thread.Sleep(500); // foreach(var t in _tList) // { // if (t.IsAlive == true) // { // flag = false; // } // } //} #endregion //Parallel.ForEach(tools, tool => //{ // tool.Program(); // var output = tool.Result2; // AddResult(output); //}); OutputMessage(string.Format("成功完成获取所有数据信息,共获得{0}个县区市数据信息", tools.Count)); var writes = new List <WriteCollectTool>(); OutputMessage("正在保存文件,请稍等......"); foreach (var tableInfo in Arguments.TableFieldDict) { var collects = Result.Where(e => e.Table.Name == tableInfo.Key.Name).ToList(); writes.Add(new WriteCollectTool { CollectXZQ = CollectXZQ, CollectTable = tableInfo.Key, Collects = collects, Fields = tableInfo.Value, SaveFolder = SaveFolder, CollectExcelTypes = CollectExcelTypes }); } Parallel.ForEach(writes, tool => { tool.Program(); }); OutputMessage("成功保存文件,请在保存路径中查看文件"); }
private void CollectNew() { var mdbfiles = FolderExtensions.GetFiles(SourceFolder, "*.mdb"); var codefiles = FolderExtensions.GetFiles(SourceFolder, "*.xls"); OutputMessage("成功获取数据路径下的所有矢量文件和单位代码表文件"); var ranges = new Dictionary <CollectTable, List <ExcelField> >(); foreach (var name in CollectTables) { var table = Arguments.CollectTableDict.Keys.FirstOrDefault(e => e.Name.ToLower() == name.ToLower()); if (table != null) { ranges.Add(table, Arguments.CollectTableDict[table]); } } OutputMessage("成功获取需要生成的表格类型信息"); var tools = new List <GatherTool>(); foreach (var shi in CollectXZQ) { if (shi.Children != null) { foreach (var quxian in shi.Children) { var code = codefiles.FirstOrDefault(e => e.XZQDM.ToLower() == quxian.XZCDM.ToLower() && e.XZQMC.ToLower() == quxian.XZCMC.ToLower()); var mdb = mdbfiles.FirstOrDefault(e => e.XZQDM.ToLower() == quxian.XZCDM.ToLower() && e.XZQMC.ToLower() == quxian.XZCMC.ToLower()); if (mdb != null) { tools.Add(new GatherTool { Dict = ranges, MdbFile = mdb.FullName, XZQDM = quxian.XZCDM, XZQMC = quxian.XZCMC }); } } } } OutputMessage("成功创建每个区县获取工具"); foreach (var tool in tools) { OutputMessage(string.Format("正在读取行政区代码【{0}】行政区名称【{1}】的矢量数据,请稍等", tool.XZQDM, tool.XZQMC)); Console.WriteLine(tool.XZQMC); tool.Program(); var output = tool.Collect2; _result2.AddRange(output); OutputMessage(string.Format("完成对行政区代码【{0}】行政区名称【{1}】的数据查询操作", tool.XZQDM, tool.XZQMC)); } OutputMessage(string.Format("完成所有数据信息的读取,共获取{0}个区县数据信息", tools.Count)); var writes = new List <WriteCollectTool>(); foreach (var tableInfo in ranges) { var collects = Result2.Where(e => e.Table.Name == tableInfo.Key.Name).ToList(); writes.Add(new WriteCollectTool { CollectExcelTypes = CollectExcelTypes, SaveFolder = SaveFolder, Fields = tableInfo.Value, Collect2 = collects, CollectTable = tableInfo.Key, CollectXZQ = CollectXZQ }); } foreach (var tool in writes) { tool.Program(); } //Parallel.ForEach(writes, tool => //{ // tool.Program(); //}); OutputMessage("成功保存文件,请在保存路径中查看文件!"); }
private void btnOpen_Click(object sender, EventArgs e) { var dialog = new FolderBrowserDialog { Description = "请选择数据成果所在文件夹" }; if (dialog.ShowDialog() == DialogResult.OK) { _dataPath = dialog.SelectedPath; lblPath.Text = _dataPath; var configDoc = ConfigDocument; var mdbPath = string.Empty; var mdbfile = FolderExtensions.GetFiles(_dataPath, "*.mdb").FirstOrDefault(); this.btnIdentity3.Enabled = false; this.btnAttributeSearch.Enabled = false; this.btnAddLayer.Enabled = false; if (mdbfile == null) { MessageBox.Show("成果中缺失空间数据库文件,请核对!"); } else { mdbPath = mdbfile.FullName; this.btnIdentity3.Enabled = true; } var folder1 = System.IO.Path.Combine(_dataPath, "1空间数据库"); var codefile = FolderExtensions.GetFiles(folder1, "*.xls").FirstOrDefault(); if (codefile == null) { MessageBox.Show("成果中缺失单位代码表文件,请核对!"); } else { _codePath = codefile.FullName; ExcelManager.Init(_codePath); this.btnAttributeSearch.Enabled = true; } this.btnXJ.Enabled = System.IO.Directory.Exists(System.IO.Path.Combine(_dataPath, "2栅格图件", "县级成果")); this.btnZJ.Enabled = System.IO.Directory.Exists(System.IO.Path.Combine(_dataPath, "2栅格图件", "乡镇级成果")); this.btnExcel.Enabled = System.IO.Directory.Exists(System.IO.Path.Combine(_dataPath, "3统计表格")); var docFolder = System.IO.Path.Combine(_dataPath, "4文档报告"); var docus = FolderExtensions.GetFiles(docFolder, "*.doc"); this.btnWorkWord.Enabled = false; this.btnTechnique.Enabled = false; _docs = docus; foreach (var item in docus) { if (Regex.IsMatch(item.FileName, @"^[\u4e00-\u9fa5]{3,}\(33[0-9]{4}\)农村存量建设用地调查工作报告.doc$")) { this.btnWorkWord.Enabled = true; } if (Regex.IsMatch(item.FileName, @"^[\u4e00-\u9fa5]{3,}\(33[0-9]{4}\)农村存量建设用地调查技术报告.doc$")) { this.btnTechnique.Enabled = true; } } this.btnAddLayer.Enabled = true; this.dataGridView1.DataSource = null; this.dataGridView2.DataSource = null; _mdbPath = mdbPath; if (string.IsNullOrEmpty(mdbPath) == false) { try { FileListHelper.LoadMapData2(_mdbPath, axMapControl1, configDoc); Full(); } catch { MessageBox.Show("数据库格式有误或缺少必要图层", "数据库错误", MessageBoxButtons.OK, MessageBoxIcon.Information); } } var KZMJ = FolderExtensions.GetFiles2(folder1, new string[] { "*.shp" }).FirstOrDefault(); if (KZMJ != null) { FileListHelper.LoadKZBJ(KZMJ, axMapControl1); } var rasterfiles = FolderExtensions.GetFiles2(folder1, new string[] { "*.img" }); foreach (var item in rasterfiles) { FileListHelper.LoadRasterData(item, this.axMapControl1); } } }
public void Program() { if (System.IO.File.Exists(SaveFile)) { System.IO.File.Delete(SaveFile); } #region 获取mdb文件列表 var mdbfiles = FolderExtensions.GetFiles(SourceFolder, "*.mdb"); if (mdbfiles.Count == 0) { OutputMessage("未获取矢量数据库文件,请核对!"); return; } #endregion var stockTables = ParameterManager.StockTables; var modelMdbFile = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TEMPS", "MODEL.mdb"); if (!System.IO.File.Exists(modelMdbFile)) { var directory = System.IO.Path.GetDirectoryName(modelMdbFile); if (!System.IO.Directory.Exists(directory)) { System.IO.Directory.CreateDirectory(directory); } #region 创建mdb文件 if (!ArcExtensions.CreateAccess(System.IO.Path.GetDirectoryName(modelMdbFile), System.IO.Path.GetFileNameWithoutExtension(modelMdbFile))) { OutputMessage("创建MDB文件失败!"); return; } #endregion #region 创建表和字段 ArcExtensions.Create(modelMdbFile, stockTables); OutputMessage("成功创建要素类和表"); #endregion } #region 单个区县导入数据 #region 方法一 //var index = 0; //var size = 1; //var currentMdbFilePath = string.Empty; //var files = new List<string>(); //foreach (var DD in ParameterManager.CollectXZQ) //{ // if (index % size == 0) // { // if (System.IO.File.Exists(currentMdbFilePath)) // { // ArcExtensions.DeleteFields(currentMdbFilePath, stockTables); // } // currentMdbFilePath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(SaveFile), System.IO.Path.GetFileNameWithoutExtension(SaveFile) + string.Format("-{0}", DD.XZQDM) + System.IO.Path.GetExtension(SaveFile)); // System.IO.File.Copy(modelMdbFile, currentMdbFilePath); // files.Add(currentMdbFilePath); // } // index++; // if (DD.Children != null) // { // foreach (var item in DD.Children) // { // var stockFile = mdbfiles.FirstOrDefault(e => e.XZQDM.ToLower() == item.XZCDM.ToLower()); // if (stockFile == null) // { // OutputMessage(string.Format("未识别到行政区代码【{0}】行政区名称【{1}】相关矢量文件", item.XZCDM, item.XZCMC)); // } // else // { // OutputMessage(string.Format("正在导入行政区代码【{0}】行政区名称【{1}】的矢量数据", item.XZCDM, item.XZCMC)); // try // { // ArcExtensions.Import2(currentMdbFilePath, stockFile.FullName, stockTables, DD.XZQDM, DD.XZQMC); // } // catch (Exception ex) // { // OutputMessage("导入矢量数据,发生错误:" + ex.Message); // } // OutputMessage(string.Format("完成导入行政区代码【{0}】行政区名称【{1}】的矢量信息", item.XZCDM, item.XZCMC)); // OutputMessage(string.Format("正在导入行政区代码【{0}】行政区名称【{1}】的属性表格数据", item.XZCDM, item.XZCMC)); // try // { // ArcExtensions.ImportTables(currentMdbFilePath, stockFile.FullName, stockTables, DD.XZQDM, DD.XZQMC); // } // catch (Exception ex) // { // OutputMessage("导入属性数据,发生错误:" + ex.Message); // } // OutputMessage(string.Format("完成导入行政区代码【{0}】行政区名称【{1}】的属性表格数据", item.XZCDM, item.XZCMC)); // } // } // } //} //if (System.IO.File.Exists(currentMdbFilePath)) //{ // ArcExtensions.DeleteFields(currentMdbFilePath, stockTables); //} //#region 将每个地级市数据合并 //var size2 = 6; //for (var i = 0; i < files.Count / size2; i++) //{ // var temp = files.Skip(i * size2).Take(size2).ToArray(); // var saveFile1 = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(SaveFile), System.IO.Path.GetFileNameWithoutExtension(SaveFile) + "-" + i + System.IO.Path.GetExtension(SaveFile)); // MergeFile(temp, saveFile1, stockTables); //} //#endregion #endregion #region 方法二 //var mergeSize = 6; //var results = new List<string>(); //foreach(var dd in ParameterManager.CollectXZQ) //{ // if (dd.Children != null) // { // var childrenFiles = new List<string>(); // //childrenFiles.Add(modelMdbFile); // foreach(var item in dd.Children) // { // var stock = mdbfiles.FirstOrDefault(e => e.XZQDM.ToLower() == item.XZCDM.ToLower()); // if (stock != null) // { // childrenFiles.Add(stock.FullName); // } // } // for(var i = 0; i <= childrenFiles.Count / mergeSize; i++) // { // var temp = childrenFiles.Skip(i * mergeSize).Take(mergeSize).ToList(); // temp.Add(modelMdbFile); // var tempFile = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(SaveFile), string.Format("{0}_{1}_{2}.mdb", dd.XZQDM, i,DateTime.Now.Ticks)); // MergeFile(temp.ToArray(), tempFile, stockTables); // ArcExtensions.SetXZS(tempFile, stockTables, dd.XZQDM, dd.XZQMC); // results.Add(tempFile); // } // } //} #endregion #region 方法三 var model2 = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TEMPS", "MM.mdb");//属性表 模板文件 if (!System.IO.File.Exists(model2)) { var dir = System.IO.Path.GetDirectoryName(model2); if (!System.IO.Directory.Exists(dir)) { System.IO.Directory.CreateDirectory(dir); } if (!ArcExtensions.CreateAccess(System.IO.Path.GetDirectoryName(model2), System.IO.Path.GetFileNameWithoutExtension(model2))) { OutputMessage(string.Format("创建模板文件2失败")); return; } ArcExtensions.CreateTable2(model2, stockTables.Where(e=>e.IsSpace==false).ToList()); } var mergeSize = 11; var currentmodel = string.Empty; var index = 0; #region 合成属性表 foreach(var dd in ParameterManager.CollectXZQ) { if (index % mergeSize == 0) { currentmodel = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(SaveFile), string.Format("{0}_{1}_属性表.mdb", System.IO.Path.GetFileNameWithoutExtension(SaveFile), index / mergeSize)); System.IO.File.Copy(model2, currentmodel); } index++; if (dd.Children != null) { foreach(var item in dd.Children) { var stock = mdbfiles.FirstOrDefault(e => e.XZQDM.ToLower() == item.XZCDM.ToLower()); if (stock == null) { OutputMessage(string.Format("未识别到行政区代码【{0}】行政区名称【{1}】相关矢量文件", item.XZCDM, item.XZCMC)); } else { OutputMessage(string.Format("正在导入行政区代码【{0}】行政区名称【{1}】的属性表格数据", item.XZCDM, item.XZCMC)); try { ArcExtensions.ImportTables(currentmodel, stock, stockTables, dd.XZQDM, dd.XZQMC); } catch (Exception ex) { OutputMessage("导入属性数据,发生错误:" + ex.Message); } OutputMessage(string.Format("完成导入行政区代码【{0}】行政区名称【{1}】的属性表格数据", item.XZCDM, item.XZCMC)); } } } } OutputMessage("完成属性表数据的合并"); #endregion OutputMessage("开始对矢量数据的合并"); index = 0; mergeSize = 11; var shiTable = stockTables.Where(e => e.IsSpace == true).ToList(); //var model3 = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TEMPS", "MMM.gdb"); //if (!System.IO.File.Exists(model3)) //{ // if (!ArcExtensions.CreateGDB(System.IO.Path.GetDirectoryName(model3), System.IO.Path.GetFileNameWithoutExtension(model3))) // { // OutputMessage(string.Format("创建模板文件2失败")); // return; // } // ArcExtensions.Create2(model3, shiTable); //} foreach (var dd in ParameterManager.CollectXZQ) { if (index % mergeSize == 0) { currentmodel = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(SaveFile), string.Format("{0}_{1}_矢量表.gdb", System.IO.Path.GetFileNameWithoutExtension(SaveFile), index / mergeSize)); if (!ArcExtensions.CreateGDB(System.IO.Path.GetDirectoryName(currentmodel), System.IO.Path.GetFileNameWithoutExtension(currentmodel))) { OutputMessage(string.Format("创建模板文件2失败")); return; } ArcExtensions.Create2(currentmodel, shiTable); //System.IO.File.Copy(model3, currentmodel); } index++; if (dd.Children != null) { foreach(var item in dd.Children) { var stock = mdbfiles.FirstOrDefault(e => e.XZQDM.ToLower() == item.XZCDM.ToLower()); if (stock != null) { OutputMessage(string.Format("开始导入行政区代码【{0}】行政区名称【{1}】数据", item.XZCDM, item.XZCMC)); ArcExtensions.Import3(currentmodel, stock, shiTable, dd.XZQDM, dd.XZQMC); OutputMessage(string.Format("完成导入行政区代码【{0}】行政区名称【{1}】数据", item.XZCDM, item.XZCMC)); //ArcExtensions.DeleteFields(stock.FullName, shiTable);//删除不必要的字段 //OutputMessage(string.Format("成功删除行政区代码【{0}】行政区名称【{1}】数据中多余字段", item.XZCDM, item.XZCMC)); //ArcExtensions.AddFields(stock.FullName, shiTable);//添加字段 //OutputMessage(string.Format("成功完成行政区代码【{0}】行政区名称【{1}】数据中图层添加字段", item.XZCDM, item.XZCMC)); //ArcExtensions.SetXZS(stock.FullName, shiTable, dd.XZQDM, dd.XZQMC);//给赋值 //OutputMessage(string.Format("成功赋值行政区代码【{0}】行政区名称【{1}】数据中地级市信息", item.XZCDM, item.XZCMC)); } } } } #endregion #endregion OutputMessage(string.Format("完成所有区县数据合并")); }
private Dictionary <XZC, Dictionary <XZC, List <FieldValue> > > CollectMdb() { var messages = new List <string>(); var mdbfiles = FolderExtensions.GetFiles(CollectFolder, "*.mdb"); var codefiles = FolderExtensions.GetFiles(CollectFolder, "*.xls"); #region 获取数据 var resultDict = new Dictionary <XZC, Dictionary <XZC, List <FieldValue> > >(); foreach (var shi in CollectXZQ) { if (shi.Children != null && shi.Children.Count > 0) { var shiResult = new Dictionary <XZC, List <FieldValue> >(); foreach (var qu in shi.Children) { var codeFile = codefiles.FirstOrDefault(e => e.XZQDM == qu.XZCDM && e.XZQMC == qu.XZCMC); var mdbfile = mdbfiles.FirstOrDefault(e => e.XZQDM == qu.XZCDM && e.XZQMC == qu.XZCMC); if (codeFile == null || mdbfile == null) { messages.Add(string.Format("未找到行政区代码【{0}】行政区名称【{1}】对应的单位代码表或者mdb矢量文件,未进行汇总,请核对", qu.XZCDM, qu.XZCMC)); } else { if (Connection != null) { if (Connection.State == System.Data.ConnectionState.Open || Connection.State == System.Data.ConnectionState.Connecting) { Connection.Close(); } } Connection = new OleDbConnection(string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}", mdbfile.FullName)); var dict = ExcelClass.GainXZ(codeFile.FullName); var quResult = new List <FieldValue>(); foreach (var entry in dict)// { var array = entry.Key.Split(','); var result = new List <FieldValue>();//每个乡镇对应每一列的值 var value = entry.Value; foreach (var field in Fields) { var val = field.Indexs != null?GetValues(field, value) : GetValue(field, value); if (val != null) { result.Add(val); } } quResult.AddRange(result); } shiResult.Add(qu, quResult); Connection.Close(); } } resultDict.Add(new XZC { XZCDM = shi.XZQDM, XZCMC = shi.XZQMC }, shiResult); } } #endregion return(resultDict); }