public int CompareWith(ImageCompareRequestModel request)
        {
            var sourceBitmap = FolderExtensions.GetBitmap(request.Source.FileName, request.Source.NetworkName, request.Source.NetworkCredential);
            var targetBitmap = FolderExtensions.GetBitmap(request.Target.FileName, request.Target.NetworkName, request.Target.NetworkCredential);

            return(Comparisons(sourceBitmap, targetBitmap));
        }
예제 #2
0
        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("成功生成文件");
        }
예제 #3
0
        private void InitExcel()
        {
            var files = FolderExtensions.GetExcelFiles(SourceFolder, "*.xls");

            OutputMessage("成功获取数据路径下的所有Excel文件");
            var tools = new List <CollectExcelTool>();

            foreach (var entry in Arguments.TableFieldDict)
            {
                var list = files.Where(e => e.TableName == entry.Key.Name).ToList();
                tools.Add(new CollectExcelTool {
                    Fields = entry.Value, CollectTable = entry.Key, SaveFolder = SaveFolder, CollectXZQ = CollectXZQ, Files = list, CollectExcelTypes = CollectExcelTypes
                });
            }
            OutputMessage("完成创建读取数据工具,正在读取获取数据");
            foreach (var tool in tools)
            {
                tool.Program();
                OutputMessage(string.Format("完成{0}的生成", tool.CollectTable.Name));
            }
            //Parallel.ForEach(tools, tool =>
            //{
            //    tool.Program();
            //});
            OutputMessage("成功完成数据文件合并操作");
        }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }
예제 #6
0
        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
                });
            }
        }
예제 #7
0
        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());
        }
예제 #8
0
        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("成功保存文件,请在保存路径中查看文件");
        }
예제 #9
0
        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("成功保存文件,请在保存路径中查看文件!");
        }
예제 #10
0
        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);
                }
            }
        }
예제 #11
0
        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("完成所有区县数据合并"));




        


        }
예제 #12
0
        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);
        }