聚合面 (制图)
摘要
将指定距离内的面要素合并成新的面要素。
插图
用法
-
当输入要素因为地图空间有限或数据分辨率的特定要求而无法再单独存在时,可以使用此工具实现适度比例缩减和聚合。聚合只能在两个面要素的边界处于指定的聚合距离内的位置处时才会发生。自聚合的情况则不会发生,即,输入面要素不会沿其边界发生自身的聚合,而且多部分面要素的各部分之间也不会发生聚合。
使用正交选项将会构造正交形状的输出要素。此选项最适用于主要由正交边构成的输入要素。在某些情况下,会减少聚合以适应此选项。例如,在聚合距离内位于对角线上的两个方形建筑物可能不会发生聚合,这是因为在保持正交的同时无法实现明确的连接。非正交选项将会生成有机形状更复杂的结果。
使用障碍要素以防止跨边界处发生聚合。例如,防止土地覆盖跨河流聚合或者建筑物跨街道聚合。障碍可以是线或面,并且可同时使用多个障碍要素类。
如果输入要素类是引用某个制图表达的图层,并且在任意输入要素上都有形状覆盖,则聚合时将评估该形状覆盖而不是要素几何。
-
输出要素类将不包含输入要素类的任何地理属性,可以创建一对多关系表,以将聚合的面连接到其源面。修改任何输入或输出要素后,这一连接可能会发生错误。
-
如果输入要素中包含 Z 值,那么在环境设置中指定之后,就可以保留 Z 值。如果输出折点不发生改变,则输入的 Z 值将传递到输出折点;否则,新折点将由现有 Z 值或通过插值派生出 Z 值。
处理大型输入数据集时可能会超出内存限制。在这种情况下,可以通过在 Cartographic Partitions 环境设置中确定一个相关的面要素类以分区方式处理输入数据。将按顺序处理分区边界定义的数据各个部分。在分区的边上生成的输出要素类可保持一致,跨越分区的输出要素将在分区线处被分割。在本实例中,输出要素类中名为 IS_SPLIT 的字段的值为 1。
语法
参数 | 说明 | 数据类型 |
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 (可选) |
包含在输入要素中作为聚合障碍的线要素或面要素的图层。要素不会跨障碍要素聚合。与输入要素存在几何冲突的障碍要素将被忽略。 | Feature Layer |
out_table (可选) |
将聚合的面连接到其源面要素的一对多关系表。该表包含两个字段(OUTPUT_FID 和 INPUT_FID),分别用于存储聚合要素 ID 和其源要素 ID。使用此表根据源要素派生输出要素的必要属性。该表的默认名称为输出要素类名称,加上 _tbl。默认路径与输出要素类相同。当该参数留空时,不创建任何表。 | Table |
代码实例
以下 Python 窗口脚本演示了如何在即时模式下使用 AggregatePolygons 工具。
import arcpy
arcpy.env.cartographicPartitions = "C:/data/county.gdb/zipcodepoly"
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"
arcpy.AggregatePolygons_cartography(buildings, output, "20 Meters", "5 SquareMeters", "0 SquareMeters", "ORTHOGONAL", roads, output_table)
以下独立脚本演示了如何使用 AggregatePolygons 函数。
# Name: AggregatePolygons_Example2.py
# Description: Aggregate grass features and then transfer attributes
# Author: ESRI
# Import system modules
import arcpy
from arcpy import env
import arcpy.cartography as CA
import arcpy.management as DM
import arcpy.analysis as AN
# Set environment settings
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")