ラベル | 説明 | データ タイプ |
入力ゾーン フィーチャ | ゾーンの特定に使用するフィーチャです。 | Feature Layer |
ゾーン フィールド | ゾーンの定義に使用する 1 つまたは複数の属性フィールドです。 | Field |
入力クラス フィーチャ | クラスの特定に使用するフィーチャです。 | Feature Layer |
出力テーブル | ゾーンとクラス間の交差部分のクロス集計が含まれるテーブルです。 | Table |
クラス フィールド (オプション) | クラスの定義に使用される 1 つまたは複数の属性フィールドです。 | Field |
合計フィールド (オプション) | [入力クラス フィーチャ] パラメーターを集計するためのフィールドです。 | Field |
XY 許容値 (オプション) | フィーチャまたはその頂点が同一と見なされる範囲を決定する距離です。 [入力ゾーン フィーチャ] パラメーターの [XY 許容値] がデフォルト値となります。 注意:このパラメーターの値を変更すると、失敗または予期しない結果が発生する可能性があります。このパラメーターを変更しないことをお勧めします。ツール ダイアログのビューからは削除されています。デフォルトでは、入力フィーチャクラスの空間参照の [XY許容値] プロパティが使用されます。 | Linear Unit |
出力単位 (オプション) | 面積計測または長さの計測の計算に使用する単位を指定します。 入力クラス フィーチャがポイントの場合は、出力単位を設定できません。
| String |
サマリー
2 つのフィーチャクラス間の交差部分を計算し、交差しているフィーチャの面積、長さ、個数をクロス集計します。
図
使用法
ゾーンは [ゾーン フィールド] パラメーターと同じ値を持つ [入力ゾーン フィーチャ] パラメーターのすべてのフィーチャで構成されます。 同様に、クラスは [クラス フィールド] パラメーターと同じ値を持つ [入力クラス フィーチャ] パラメーターのすべてのフィーチャで構成されます。 フィーチャは、同じゾーンまたはクラス内で隣接している必要はありません。 このツールは、ゾーンがクラスごとにどの程度交差しているかを、面積とゾーン面積に対する割合から計算します。
[クラス フィールド] の値を指定しないと、[入力クラス フィーチャ] パラメーターのすべてのフィーチャが、単一のクラスと見なされます。 そのため、[出力テーブル] 値の各ゾーンには、1 レコードが含まれます。
[クラス フィールド] の値を指定すると、ゾーンに含まれるクラスの数を n とした場合、[出力テーブル] 値には各ゾーンに対して n レコードが含まれます。 たとえば、あるゾーンに 4 つのクラスがある場合、[出力テーブル] 値のそのゾーンの部分には 4 レコードが含まれます。
[合計フィールド] パラメーターを使用することで、[入力クラス フィーチャ] パラメーターの数値属性について、ゾーンごとに合計することができます。 クラスの合計値は、ゾーンを交差するクラスの割合に基づく合計値の比率を表します。
注意:
[合計フィールド] に指定できるのは、比率や密度などの相対的な値または正規化された値ではなく、分割してゾーン間で分配することが可能な絶対的な値を持つフィールドです。
[入力ゾーン フィーチャ] 値よりも高い次元の [入力クラス フィーチャ] 値を使用することはできません。
- [入力ゾーン フィーチャ] 値がポイントである場合、[入力クラス フィーチャ] 値にはポリゴンもラインも指定できません。
- [入力ゾーン フィーチャ] 値がラインである場合、[入力クラス フィーチャ] 値にポリゴンを指定できません。
[入力ゾーン フィーチャ] および [入力クラス フィーチャ] 値がポリゴンである場合、出力テーブルの統計情報は面積の計算に基づきます。
[入力クラス フィーチャ] 値がラインである場合、出力テーブルの統計情報は長さの計算に基づきます。
[入力クラス フィーチャ] 値がポイントである場合、出力テーブルの統計情報はフィーチャ数に基づきます。
[入力ゾーン フィーチャ] および [入力クラス フィーチャ] 値が同じディメンション (両方ポリゴン、両方ライン、または両方ポイント) である場合、出力テーブルの PERCENTAGE フィールドはクラスが交差するゾーン フィーチャの割合を記録します。
[入力ゾーン フィーチャ] および [入力クラス フィーチャ] 値が異なるディメンション (ポリゴン ゾーンとライン クラス、ポリゴン ゾーンとポイント クラス、またはライン ゾーンとポイント クラス) である場合、出力テーブルの PERCENTAGE フィールドはゾーン ポリゴンと交差するクラスの割合を記録します。
PERCENTAGE フィールドは、[入力ゾーン フィーチャ] または [入力クラス フィーチャ] パラメーターのフィーチャが重なり合ってる場合は 100% より大きい値を記録します。
[入力ゾーン フィーチャ] および [入力クラス フィーチャ] 値がポリゴンである場合にのみ、AREA フィールドが出力テーブルに追加されます。 AREA フィールドは、[入力クラス フィーチャ] 値が交差する [入力ゾーン フィーチャ] 値の面積を記録します。
[入力クラス フィーチャ] 値がラインである場合、LENGTH フィールドが出力テーブルに追加されます。 LENGTH フィールドは、[入力ゾーン フィーチャ] および [入力クラス フィーチャ] 値の間の交差の長さを記録します。
[入力クラス フィーチャ] 値がポイントである場合、PNT_COUNT フィールドが出力テーブルに追加されます。 PNT_COUNT フィールドは、[入力ゾーン フィーチャ] 値と交差する [入力クラス フィーチャ] のポイントの数を記録します。
フィーチャ レイヤーを使用していて、フィーチャが選択されている場合は、選択されたフィーチャのみが計算に使用されます。
ゾーンおよびクラスのフィーチャの交差部分の判定は、[インターセクト (Intersect)] ツールと同じルールに従います。
[ピボット テーブル (Pivot Table)] ツールを使用して [出力テーブル] 値を変換すると、各ゾーンにつき 1 つのレコードを含む、クラス属性を属性フィールドに分けたテーブルに変換できます。 [ピボット テーブル (Pivot Table)] ツールのパラメーターには、次の値を入力します。
- [入力テーブル] - [交差部分のクロス集計 (Tabulate Intersection)] の [出力テーブル] の値
- [入力フィールド] - [交差部分のクロス集計 (Tabulate Intersection)] の [ゾーン フィールド] の値
- [ピボット フィールド] - [交差部分のクロス集計 (Tabulate Intersection)] の [クラス フィールド] の値
- [値フィールド] - [交差部分のクロス集計 (Tabulate Intersection)] の [合計フィールド] の値、または、AREA、LENGTH、 PERCENTAGE
パラメーター
arcpy.analysis.TabulateIntersection(in_zone_features, zone_fields, in_class_features, out_table, {class_fields}, {sum_fields}, {xy_tolerance}, {out_units})
名前 | 説明 | データ タイプ |
in_zone_features | ゾーンの特定に使用するフィーチャです。 | Feature Layer |
zone_fields [zone_fields,...] | ゾーンの定義に使用する 1 つまたは複数の属性フィールドです。 | Field |
in_class_features | クラスの特定に使用するフィーチャです。 | Feature Layer |
out_table | ゾーンとクラス間の交差部分のクロス集計が含まれるテーブルです。 | Table |
class_fields [class_fields,...] (オプション) | クラスの定義に使用される 1 つまたは複数の属性フィールドです。 | Field |
sum_fields [sum_fields,...] (オプション) | in_class_features パラメーターを集計するためのフィールドです。 | Field |
xy_tolerance (オプション) | フィーチャまたはその頂点が同一と見なされる範囲を決定する距離です。 in_zone_features パラメーターの [XY 許容値] がデフォルト値となります。 注意:このパラメーターの値を変更すると、失敗または予期しない結果が発生する可能性があります。このパラメーターを変更しないことをお勧めします。ツール ダイアログのビューからは削除されています。デフォルトでは、入力フィーチャクラスの空間参照の [XY許容値] プロパティが使用されます。 | Linear Unit |
out_units (オプション) | 面積計測または長さの計測の計算に使用する単位を指定します。 入力クラス フィーチャがポイントの場合は、出力単位を設定できません。
| String |
コードのサンプル
Python ウィンドウで TabulateIntersection 関数を使用して、ゾーンごとに各植生タイプの面積を求めます。
import arcpy
arcpy.TabulateIntersection_analysis("Zones", "zone_id", "Vegetation",
r"C:\Esri\veganalysis.gdb\vegtypeAreas",
"VEGTYPE")
このスクリプトは、TabulateIntersection 関数をラップして、簡単な TabulateArea (クロス集計) スクリプト ツールを作成します。 TabulateArea (クロス集計) スクリプト ツールに入力できるのは、ポリゴン フィーチャのみです。
ゾーン フィールドおよびクラス フィールドは、それぞれ 1 つに制限されています。
'''
TabulateArea.py
Description: Shows how to wrap the TabulateIntersection tool to create a TabulateArea script tool
Requirements: Polygon Zone Feature Class, Polygon Class Feature Class
'''
import arcpy
import sys
import os
def AddMsgAndPrint(msg, severity=0):
# Adds a Message (in case this is run as a tool)
# and also prints the message to the screen (standard output)
print(msg)
# Split the message on \n first, so that if it's multiple lines,
# a GPMessage will be added for each line
try:
for string in msg.split('\n'):
# Add appropriate geoprocessing message
if severity == 0:
arcpy.AddMessage(string)
elif severity == 1:
arcpy.AddWarning(string)
elif severity == 2:
arcpy.AddError(string)
except:
pass
## Get Parameters
zoneFC = arcpy.GetParameterAsText(0)
zoneFld = arcpy.GetParameterAsText(1) # Only allow one field
classFC = arcpy.GetParameterAsText(2)
outTab = arcpy.GetParameterAsText(3)
classFld = arcpy.GetParameterAsText(4) # Optional and only allow one field
sum_Fields = ""
xy_tol = ""
outUnits = arcpy.GetParameterAsText(5)
## Validate parameters
# Inputs can only be polygons
zoneDesc = arcpy.Describe(zoneFC)
classDesc = arcpy.Describe(classFC)
if zoneDesc.shapeType != "Polygon" or classDesc.shapeType != "Polygon":
AddMsgAndPrint("Inputs must be of type polygon.", 2)
sys.exit()
# Only one zone field and class field
if zoneFld != "":
if zoneFld.find(";") > -1 or classFld.find(";") > -1:
AddMsgAndPrint("A maximum of one zone and/or class field is allowed.", 2)
sys.exit()
## Run TabulateIntersection
try:
arcpy.TabulateIntersection_analysis(zoneFC, zoneFld, classFC, outTab,
classFld, sum_Fields, xy_tol, outUnits)
except:
arcpy.AddMessage("Tabulate Intersection Failed.")
AddMsgAndPrint(arcpy.GetMessages(), 0)
環境
特殊なケース
ライセンス情報
- Basic: No
- Standard: No
- Advanced: Yes