ポリゴンの集約(Aggregate Polygons) (カートグラフィ)
サマリ
特定の距離内のポリゴンを相互に結合して新しいポリゴンを生成します。
図
使用法
-
このツールは、マップ空間の制限または必要とされるデータの解像度が原因で入力フィーチャを個別に表すことができなくなったときに、適度に縮小させて集約を行うことを目的としています。集約は、2 つのポリゴン境界が指定された集約距離内にある場合にのみ行われます。自己集約は行われません。つまり、入力ポリゴン フィーチャ内において境界に沿った集約は行われず、またマルチパート ポリゴン フィーチャのどの部分の間においても集約は行われません。
直交形状を維持するオプションを使用すると、直交形状の出力フィーチャが構築されます。このオプションは、多数のエッジが直交している入力フィーチャに最適です。このオプションを適用すると、集約されるポリゴンが少なくなる場合があります。たとえば、集約距離内で斜めの位置に離して配置された 2 つの四角形の建物は、直角形状の保存中に明確な接続を作成できないため集約されません。非直交形状を維持するオプションでは、より自由造形の形状が生成されます。
バリア フィーチャを使って、集約が境界を越えて発生するのを防ぎます。土地被覆が河川または建物を越えて集約されたり、道路を越えて集約されたりする例があります。バリアは、ラインまたはポリゴンのいずれかです。複数のバリア フィーチャクラスを同時に使用できます。
入力フィーチャクラスがリプレゼンテーションを参照するレイヤで、入力フィーチャにシェープ オーバーライドがある場合、シェープ オーバーライドは、フィーチャ ジオメトリではなく、集約で評価されます。
-
出力フィーチャクラスには、入力フィーチャからの地理的な属性は一切含まれません。必要に応じて、1 対多のリレーションシップ テーブルを作成して、集約されたポリゴンをソース ポリゴンにリンクできます。入力フィーチャまたは出力フィーチャが変更されると、このリンクが切れることがあります。
-
入力フィーチャに Z 値が含まれている場合、その Z 値は、環境設定で指定されていれば、維持することが可能です。出力頂点が変更されていなければ、入力 Z 値は出力頂点に引き継がれます。出力頂点が変更されている場合は、新しい頂点の Z 値が既存の Z 値から、または内挿によって生成されます。
大きな入力データセットを処理すると、メモリの制限を超えることがあります。このような場合、[カートグラフィック パーティション] 環境設定で、関連するポリゴン フィーチャクラスを特定することによって、パーティション単位で入力データを処理することを検討します。パーティションの境界によって定義されたデータの一部が順次処理されます。作成された出力フィーチャクラスがパーティション エッジで一致するが、出力フィーチャがパーティションを越えている場合、パーティション ラインで分割されます。出力フィーチャクラスのIS_SPLITというフィールドでは、このインスタンスに 1 の値が設定されます。
構文
パラメータ | 説明 | データ タイプ |
in_features |
集約するポリゴン フィーチャ。これがリプレゼンテーションを参照するレイヤで、シェープ オーバーライドが入力フィーチャに存在する場合、フィーチャ シェープではなくオーバーライドされたシェープが集積処理の対象になります。 | Feature Layer |
out_feature_class |
作成される出力フィーチャクラス。 | Feature Class |
aggregation_distance |
この距離は、ポリゴン境界を集約するための条件です。ゼロより大きい距離を指定する必要があります。優先的に適用される単位を選択することができます。デフォルトはフィーチャ単位です。 | Linear unit |
minimum_area (オプション) |
集約されたポリゴンのために保持される最小領域。デフォルト値は 0 であり、すべてのポリゴンが保持されます。単位は自由に指定できます。デフォルトはフィーチャの単位です。 | Areal unit |
minimum_hole_size (オプション) |
保持されるポリゴン ホールの最少サイズ。デフォルト値は 0 であり、すべてのポリゴン ホールが保持されます。単位は自由に指定できます。デフォルトはフィーチャの単位です。 | Areal unit |
orthogonality_option (オプション) |
集約された境界を構築するときの出力フィーチャの特性を指定します。
| Boolean |
barrier_features (オプション) |
入力フィーチャの集約バリアとなるライン フィーチャまたはポリゴン フィーチャが含まれるレイヤ。フィーチャは、バリア フィーチャを越えて集約されません。入力フィーチャとジオメトリック競合するバリア フィーチャは無視されます。 | Feature Layer |
out_table (オプション) |
集約されたポリゴンをソース ポリゴン フィーチャにリンクする 1 対多のリレーションシップ テーブル。このテーブルは、集約されたフィーチャの ID を格納する OUTPUT_FID とそのソース フィーチャの ID を格納する INPUT_FID の 2 つのフィールドで構成されます。このテーブルを使って、ソース フィーチャから出力フィーチャの必要な属性を取得します。このテーブルのデフォルト名は、出力フィーチャクラスの名前に _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")