聚合面 (制图)
摘要
将指定距离内的面合并成新的面要素。
插图
用法
-
当输入要素因为地图空间有限或数据分辨率的特定要求而无法再单独存在时,可以使用此工具实现适度比例缩减和聚合。聚合只能在两个面要素的边界处于指定的聚合距离内的位置处时才会发生。自聚合的情况则不会发生,即,输入面要素不会沿其边界发生自身的聚合,而且多部分面要素的各部分之间也不会发生聚合。
使用正交选项将会构造正交形状的输出要素。此选项最适用于主要由正交边构成的输入要素。在某些情况下,会减少聚合以适应此选项。例如,在聚合距离内位于对角线上的两个方形建筑物可能不会发生聚合,这是因为在保持正交的同时无法实现明确的连接。非正交选项将会生成有机形状更复杂的结果。
-
输出要素类将不包含输入要素类的任何地理属性,而是创建一个名为 output_feature_class_Tbl 的一对多关系表,该关系表将聚合的面要素连接到其源面要素。该表将包含两个字段(OUTPUT_FID 和 INPUT_FID),分别用于存储聚合要素 ID 和其源要素 ID。当有任何输入或输出要素发生改变后,这一连接都可能会发生错误。通过此连接,您可以利用合适的地理处理工具从输出要素的源要素中获得必要的属性。
-
如果输入要素中包含 Z 值,那么在环境设置中指定之后,就可以保留 Z 值。如果输出折点不发生改变,则输入的 Z 值将传递到输出折点;否则,新折点将由现有 Z 值或通过插值派生出 Z 值。
语法
参数 | 说明 | 数据类型 |
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 |
代码示例
以下 Python 窗口脚本演示了如何在即时模式下使用 AggregatePolygons 工具。
import arcpy from arcpy import env import arcpy.cartography as CA env.workspace = "C:/data" CA.AggregatePolygons("buildings.shp", "C:/output/output.gdb/aggregated_buildings", 10)
以下独立脚本演示了如何使用 AggregatePolygons 函数。
# Name: AggregatePolygons_Example2.py # Description: Aggregate grass features and then transfer attributes # 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") # 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")