概要
特定の距離内のポリゴンを相互に結合して新しいポリゴンを生成します。
図
使用法
このツールは、マップ空間の制限または必要とされるデータの解像度が原因で入力フィーチャを個別に表すことができなくなったときに、適度に縮小させて集約を行うことを目的としています。集約は、2 つのポリゴン境界が指定された集約距離内にある場合にのみ行われます。自己集約は行われません。つまり、入力ポリゴン フィーチャ内において境界に沿った集約は行われず、またマルチパート ポリゴン フィーチャのどの部分の間においても集約は行われません。
直交形状を維持するオプションを使用すると、直交形状の出力フィーチャが構築されます。このオプションは、多数のエッジが直交している入力フィーチャに最適です。このオプションを適用すると、集約されるポリゴンが少なくなる場合があります。たとえば、集約距離内で斜めの位置に離して配置された 2 つの四角形の建物は、直角形状の保存中に明確な接続を作成できないため集約されません。非直交形状を維持するオプションでは、より自由造形の形状が生成されます。
バリア フィーチャを使って、集約が境界を越えて発生するのを防ぎます。土地被覆が河川または建物を越えて集約されたり、道路を越えて集約されたりする例があります。バリアは、ラインまたはポリゴンのいずれかです。複数のバリア フィーチャクラスを同時に使用できます。
[集約フィールド] パラメーターを定義すると、属性フィールドとその値が出力フィーチャクラスにコピーされます。集約フィールドのデータ タイプは text、date、integer のいずれかである必要があります。集約フィールドにドメインとサブタイプがある場合は、[ジオデータベース フィールド プロパティの転送] (環境設定) がオンの場合に、出力フィーチャクラスにコピーされます。
出力フィーチャクラスには、入力フィーチャからの地理的な属性は一切含まれません。必要に応じて、1 対多のリレーションシップ テーブルを作成して、集約されたポリゴンをソース ポリゴンにリンクできます。入力フィーチャまたは出力フィーチャが変更されると、このリンクが切れることがあります。
入力フィーチャに 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 (オプション) | 集約されたポリゴンのために保持される最小領域。デフォルト値は 0 であり、すべてのポリゴンが保持されます。単位は自由に指定できます。デフォルトはフィーチャの単位です。 | Areal Unit |
minimum_hole_size (オプション) | 保持されるポリゴン ホールの最少サイズ。デフォルト値は 0 であり、すべてのポリゴン ホールが保持されます。単位は自由に指定できます。デフォルトはフィーチャの単位です。 | Areal Unit |
orthogonality_option (オプション) | 集約された境界を構築するときの出力フィーチャの特性を指定します。
| Boolean |
barrier_features [barrier_features,...] (オプション) | 入力フィーチャの集約バリアとなるライン フィーチャまたはポリゴン フィーチャが含まれるレイヤー。フィーチャは、バリア フィーチャを越えて集約されません。入力フィーチャとジオメトリック競合するバリア フィーチャは無視されます。 | Feature Layer |
out_table (オプション) | 集約されたポリゴンをソース ポリゴン フィーチャにリンクする 1 対多のリレーションシップ テーブル。このテーブルは、集約済みのフィーチャの ID を格納する OUTPUT_FID とそのソース フィーチャの ID を格納する INPUT_FID の 2 つのフィールドで構成されます。このテーブルを使って、ソース フィーチャから出力フィーチャの必要な属性を取得します。このテーブルのデフォルト名は、出力フィーチャクラスの名前に _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: はい