0 基础知识
0.1 ArcGIS常用工具:union、merge、append、dissolve区别
原文来自https://blog.csdn.net/sisiiiiiii/article/details/39178913
union(联合)
要求输入的要素必须是多边形,即求得两个及以上多边形的并集,对输入要素的属性字段没有要求,输出要素是所有输入的属性的集合。如下图输入三个要素面,输出要素面为7个。
merge(合并)
将数据类型相同的多个输入数据集合并为新的单个输出数据集,属性字段也合并成两个要素属性全集
append(追加)
将多个输入数据集追加到现有目标数据集,与合并区别是合并生成新的要素集,追加是在现有要素基础上。
dissolve(融合)
对于融合需要选择一个或者多个指定的属性字段,融合的要素必须具有相同的几何类型,可以简单理解为具有相同属性要素集合成一个要素集。融合后的属性字段仅输出融合前指定的。
面状数据调整,需要把多个面融合为一个面,属性保留一种,那就需要用到融合工具(dissolve)
0.2 融合示例ArcGIS演示
文献来源:https://blog.csdn.net/aganliang/article/details/81560293
下面详细讲解使用方法,如图所示。
1.先把属性改成一样
2.打开融合工具
3.自动生成的字段不要勾选
4.结果如图所示。
要素融合+要素转点的代码实现:
//在D:\data目录下创建temp.gdb文件夹,存储计算的中间结果 public check(string inPath, string checkLayerName) { //初始化GP工具 ESRI.ArcGIS.Geoprocessor.Geoprocessor pGeoprocessor = new ESRI.ArcGIS.Geoprocessor.Geoprocessor {OverwriteOutput = true, AddOutputsToMap = false}; //创建GDB文件 CreateFileGDB processor1 = new CreateGDB {out_folder_path = @"D:\data", out_name = "temp.gdb"}; pGeoprocessor.Execute(processor1, null); string lcaPath = inPath + "\\" + checkLayerName; string gdbPath = processor1.out_folder_path + "\\" + processor1.out_name); //面融合 string dissolveLayerName = gdbPath + "\\dissolve"; pGeoprocessor.Execute(areaDissolve(lcaPath, dissolveLayerName), null); //要素转点 string featureToPointLayerName= gdbPath + "\\dissolve"; pGeoprocessor.Execute(featureToPoint(lcaPath, featureToPointLayerName), null); } //面融合函数 public void areaDissolve(string lcaPath, string dissolveLayerName) { Dissolve disolve = new Disolve {}; dissolve.in_features = lcaPath; dissolve.out_features = dissolveLayerName; dissolve.dissolve_fields = "FEAID"; return disolve; } //要素转点 public void featureToPoint(string lcaPath, string featureToPointLayerName) { FeatureToPoint pFeaToPt = new FeatureToPoint {}; pFeaToPt.in_features = lcaPath; pFeaToPt.out_features_class = featureToPointLayerName; pFeaToPt.point_location = "INSIDE"; return pFeaToPt; }