描述
将指定距离内的面要素合并成新的面要素。
插图
使用方法
当输入要素因为地图空间有限或数据分辨率的特定要求而无法再单独存在时,可以使用此工具实现适度比例缩减和聚合。聚合只能在两个面边界彼此处于指定的聚合距离内的时候发生。自聚合的情况则不会发生,即,输入面要素不会沿其边界发生自身的聚合,而且多部分面要素的各部分之间也不会发生聚合。
使用正交选项将会构造正交形状的输出要素。此选项最适用于主要由正交边构成的输入要素。在某些情况下,会减少聚合以适应此选项。例如,在聚合距离内位于对角线上的两个方形建筑物可能不会发生聚合,这是因为在保持正交的同时无法实现明确的连接。非正交选项将会生成有机形状更复杂的结果。
使用障碍要素以防止跨边界处发生聚合。例如,防止土地覆盖跨河流聚合或者建筑物跨街道聚合。障碍可以是线或面,并且可同时使用多个障碍要素类。
定义聚合字段参数后,属性字段及其值将复制到输出要素类中。聚合字段必须为 text、date 或 integer 数据类型。如果聚合字段具有属性域和子类型,则在选中传送地理数据库字段属性环境设置时,系统会将其复制到输出要素类。
输出要素类将不包含输入要素类的任何地理属性。可以创建一对多关系表,以将聚合的面连接到其源面。修改任何输入或输出要素后,这一连接可能会发生错误。
如果输入要素中包含 z 值,那么在环境设置中将其指定之后,就可以保留 z 值。如果输出折点不发生改变,则输入的 Z 值将传递到输出折点;否则,新折点将由现有 Z 值或通过插值派生出 Z 值。
处理大型输入数据集时可能会超出内存限制。在这种情况下,考虑通过在制图分区环境设置中确定一个相关的面要素类来通过分区处理输入数据。将按顺序处理分区边界定义的数据部分。在分区的边上生成的输出要素类将保持一致,跨越分区的输出要素将在分区线处被分割。在本实例中,输出要素类中的 IS_SPLIT 字段的值为 1。
语法
arcpy.cartography.AggregatePolygons(in_features, out_feature_class, aggregation_distance, {minimum_area}, {minimum_hole_size}, {orthogonality_option}, {barrier_features}, {out_table}, {aggregate_field})
参数 | 说明 | 数据类型 |
in_features | 要聚合的面要素。如果这是一个引用某个制图表达的图层,并且在输入要素中存在形状覆盖,则在聚合处理中将采用这些覆盖的形状、而不是要素形状。 | Feature Layer |
out_feature_class | 要创建的输出要素类。 | Feature Class |
aggregation_distance | 聚合时面要素边界间要满足的距离。必须指定一个距离,且此距离必须大于零。可以选择首选单位;默认为要素单位。 | Linear Unit |
minimum_area (可选) | 聚合面得以保留的最小面积。默认值为零,即保留所有面。可以指定首选单位;默认为要素单位。 | Areal Unit |
minimum_hole_size (可选) | 面要素中的孔洞得以保留的最小大小。默认值为零,即保留所有面要素中的孔洞。可以指定首选单位;默认为要素单位。 | Areal Unit |
orthogonality_option (可选) | 指定构造聚合边界时输出要素的特征。
| Boolean |
barrier_features [barrier_features,...] (可选) | 包含在输入要素中作为聚合障碍的线要素或面要素的图层。要素不会跨障碍要素聚合。与输入要素存在几何冲突的障碍要素将被忽略。 | Feature Layer |
out_table (可选) | 将聚合的面连接到其源面要素的一对多关系表。该表包含两个字段:OUTPUT_FID 和 INPUT_FID,分别用于存储聚合要素 ID 及其源要素 ID。使用此表根据源要素派生输出要素的必要属性。该表的默认名称为输出要素类名称加上 _tbl。默认路径与输出要素类相同。当该参数留空时,不创建任何表。 | Table |
aggregate_field (可选) | 包含聚合属性的字段。要素必须共享相同的属性值才能进行聚合。例如,可将建筑物分类字段用作聚合字段,以防止商业建筑物与住宅建筑物聚合在一起。 | Field |
代码示例
以下 Python 窗口脚本演示了如何在即时模式下使用 AggregatePolygons 工具。
本示例使用分类字段来聚合具有相同分类值的要素。环境设置用于将地理数据库字段属性(例如聚合字段的属性域和子类型)传输到输出要素类。
import arcpy
arcpy.env.cartographicPartitions = "C:/data/county.gdb/zipcodepoly"
arcpy.env.transferGDBAttributeProperties = True
buildings = "C:/data/county.gdb/bldgspoly"
roads = "C:/data/county.gdb/roadnetwork"
output = "C:/data/county.gdb/BldgAggBarrierPartition"
output_table = "C:/data/county.gdb/BldgAggBarrierPartition_Tbl"
aggregate_field = "Classification"
arcpy.AggregatePolygons_cartography(buildings, output, "20 Meters",
"50 SquareMeters", "0 SquareMeters",
"ORTHOGONAL", roads, output_table,
aggregate_field)
以下独立脚本演示了如何使用 AggregatePolygons 函数。
# Name: AggregatePolygons_Example2.py
# Description: Aggregate grass features and then transfer attributes
# Import system modules
import arcpy
import arcpy.cartography as CA
import arcpy.management as DM
import arcpy.analysis as AN
# Set environment settings
arcpy.env.workspace = "C:/data/Portland.gdb/Vegetation"
# Set local variables
inGrassFeatures = "grass"
aggregatedFeatures = "C:/data/PortlandOutput.gdb/grassland"
aggregatedTable = "C:/data/PortlandOutput.gdb/grassland_Tbl"
frequencyTable = "C:/data/PortlandOutput.gdb/frequency_Tbl"
# Aggregate grass polygons.
CA.AggregatePolygons(inGrassFeatures, aggregatedFeatures, 50, 300, 300,
"NON_ORTHOGONAL", "", aggregatedTable)
# Join the aggregatedTable with input and
# transfer the COUNT field to aggregatedTable.
DM.JoinField(aggregatedTable, "INPUT_FID", inGrassFeatures, "OBJECTID", "COUNT")
# Use Frequency on aggregatedTable and
# obtain sum for COUNT.
AN.Frequency(aggregatedTable, frequencyTable, "OUTPUT_FID", "COUNT")
# Join the aggregatedFeatures with frequencyTable
# and transfer the COUNT field to aggregatedFeatures.
DM.JoinField(aggregatedFeatures, "OBJECTID", frequencyTable, "OUTPUT_FID",
"COUNT")
许可信息
- Basic: 否
- Standard: 否
- Advanced: 是