融合 (数据管理)
插图
用法
-
可使用各种统计对已通过融合而聚合的要素的属性进行汇总或描述。以“统计类型 + 下划线 + 输入字段名”为命名标准,将用来汇总属性的统计以单个字段的形式添加到输出要素类中。例如,如果对名为 POP 的字段使用 SUM 统计,则输出中将存在名为 SUM_POP 的字段。
-
融合可在输出要素类中创建超大型要素。当融合字段中存在少量唯一值时或将所有要素融合为单个要素时尤其适用。超大型要素可能会引起处理或显示故障和/或降低在地图上进行绘制或编辑时的性能。如果融合输出在一台计算机上以最大尺寸创建要素,然后将此输出移动到一个可用内存较少的计算机上,也会出现问题。要避免这些潜在问题,可使用创建多部分(multipart)要素参数的 SINGLE_PART 选项将可能较大的多部分要素分割为多个较小要素。对于“融合”工具创建的超大型要素,可以使用切分工具来切割较大的要素,以解决处理、显示或性能上的问题。
-
空值将被排除在所有统计计算之外。例如,10、5 和空值的 AVERAGE 为 7.5 ((10+5)/2)。COUNT 工具可返回统计计算中所包括值的数目,如本例中为 2。
-
此工具通过切片的方式处理庞大的数据集以便提高性能和可扩展性。有关详细信息,请参阅对大型数据集进行地理处理。
-
可用物理内存量会对可处理并融合为单个输出要素的输入要素的数量(和复杂性)造成限制。此限制会导致错误,因为融合过程需要的内存量可能会超过可用的内存量。为防止出现此问题,融合可以使用适当的切片算法对输入要素进行分割和处理。要确定要素是否已被切片,可对此工具的结果运行频数工具,将频数字段参数指定为融合过程中所使用的字段。已对频数值为 2 的所有记录进行切片。会在输出要素中保留切片边界,以防止创建的要素过大而无法被 ArcGIS 使用。
警告:当原始的处理使用适当的切片对输入进行分割和处理后,对上一次融合处理的输出再次运行融合几乎不会减少输出中要素的数量。任何输出要素的最大大小都取决于运行时的可用内存量;因此,包含切片的输出是一个指示器,指示使用可用资源再进行融合会导致内存不足,或生成无法使用的要素。此外,再次以相同的方式对创建的输出结果运行融合工具,可能会导致系统性能下降而一无所获,而且还可能会导致异常失败。
-
融合字段参数的添加字段按钮仅可以在“模型构建器”中使用。在模型构建器中,如果先前的工具尚未运行或其派生数据不存在,则可能不会使用字段名称来填充融合字段参数。添加字段按钮可用于添加所需字段,以完成该工具的对话框并继续构建模型。
-
取消线分割参数(具有 DISSOLVE_LINES 和 UNSPLIT_LINES 两个选项)仅适用于线输入。如果指定了默认 DISSOLVE_LINES 选项,则线会被融合为单个要素。如果指定了 UNSPLIT_LINES,则只将具有公共端点(称为伪结点)的两条线合并为一条连续线。
语法
参数 | 说明 | 数据类型 |
in_features |
要聚合的要素。 | Feature Layer |
out_feature_class |
要创建的将包含聚合要素的要素类。 | Feature Class |
dissolve_field [dissolve_field,...] (可选) | 要聚合要素的字段。 “添加字段”按钮(只能在模型构建器中使用)可用于添加所需字段,以完成对话框并继续构建模型。 | Field |
statistics_fields [[field, {statistic_type}],...] (可选) |
用于对属性进行汇总的字段和统计。可使用统计 FIRST 或 LAST 对文本属性字段进行汇总。可使用任何一种统计来对数值属性字段进行汇总。空值将被排除在所有统计计算之外。
| Value Table |
multi_part (可选) |
指定在输出要素类中是否允许多部分要素。
| Boolean |
unsplit_lines (可选) |
控制线要素的融合方式。
| Boolean |
代码实例
以下 Python 窗口脚本演示了如何在即时模式下使用“融合”工具。
import arcpy
from arcpy import env
env.workspace = "C:/data/Portland.gdb/Taxlots"
arcpy.Dissolve_management("taxlots", "C:/output/output.gdb/taxlots_dissolved",
["LANDUSE", "TAXCODE"], "", "SINGLE_PART",
"DISSOLVE_LINES")
以下独立脚本演示了如何使用“融合”工具。
# Name: Dissolve_Example2.py
# Description: Dissolve features based on common attributes
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data/Portland.gdb/Taxlots"
# Set local variables
inFeatures = "taxlots"
tempLayer = "taxlotsLyr"
expression = arcpy.AddFieldDelimiters(inFeatures, "LANDUSE") + " <> ''"
outFeatureClass = "C:/output/output.gdb/taxlots_dissolved"
dissolveFields = ["LANDUSE", "TAXCODE"]
# Execute MakeFeatureLayer and SelectLayerByAttribute. This is only to exclude
# features that are not desired in the output.
arcpy.MakeFeatureLayer_management(inFeatures, tempLayer)
arcpy.SelectLayerByAttribute_management(tempLayer, "NEW_SELECTION", expression)
# Execute Dissolve using LANDUSE and TAXCODE as Dissolve Fields
arcpy.Dissolve_management(tempLayer, outFeatureClass, dissolveFields, "",
"SINGLE_PART", "DISSOLVE_LINES")