交差部分のクロス集計 (Tabulate Intersection) (解析)

サマリー

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)][合計フィールド] の値、または、AREALENGTHPERCENTAGE
    ピボット テーブルの出力の例

パラメーター

ラベル説明データ タイプ
入力ゾーン フィーチャ

ゾーンの特定に使用するフィーチャです。

Feature Layer
ゾーン フィールド

ゾーンの定義に使用する 1 つまたは複数の属性フィールドです。

Field
入力クラス フィーチャ

クラスの特定に使用するフィーチャです。

Feature Layer
出力テーブル

ゾーンとクラス間の交差部分のクロス集計が含まれるテーブルです。

Table
クラス フィールド
(オプション)

クラスの定義に使用される 1 つまたは複数の属性フィールドです。

Field
合計フィールド
(オプション)

[入力クラス フィーチャ] パラメーターから集計されるフィールド。

Field
XY 許容値
(オプション)

フィーチャまたはその頂点が同一と見なされる範囲を決定する距離です。 [入力ゾーン フィーチャ] パラメーター値の X,Y 許容値がデフォルト値となります。

注意:

このパラメーターの値を変更すると、失敗または予期しない結果が発生する可能性があります。 このパラメーターは変更しないことをお勧めします。 ツール ダイアログ ボックスのビューからは削除されています。 デフォルトでは、入力フィーチャクラスの空間参照の [XY許容値] プロパティが使用されます。

Linear Unit
出力単位
(オプション)

面積計測または長さの計測の計算に使用する単位を指定します。 入力クラス フィーチャがポイントの場合は、出力単位を設定できません。

  • 不明単位は不明です。
  • キロメートル単位はキロメートルです。
  • メートル単位はメートルです。
  • デシメートル単位はデシメートルです。
  • センチメートル単位はセンチメートルです。
  • ミリメートル単位はミリメートルです。
  • 法定マイル単位は法定マイルです。
  • 国際海里単位は国際海里です。
  • 国際ヤード単位は国際ヤードです。
  • 国際フィート単位は国際フィートです。
  • 国際インチ単位は国際インチです。
  • 米国測量マイル単位は米国測量マイルです。
  • 米国測量海里単位は米国測量海里です。
  • 米国測量ヤード単位は米国測量ヤードです。
  • 米国測量フィート単位は米国測量フィートです。
  • インチ単位は米国測量インチです。
  • 度 (10 進)単位は度 (10 進) です。
  • ポイント単位はポイントです。
  • アール単位はアールです。
  • 平方キロメートル単位は平方キロメートルです。
  • 平方メートル単位は平方メートルです。
  • 平方デシメートル単位は平方デシメートルです。
  • 平方センチメートル単位は平方センチメートルです。
  • 平方ミリメートル単位は平方ミリメートルです。
  • 平方法定マイル単位は平方法定マイルです。
  • 平方国際ヤード単位は平方国際ヤードです。
  • 平方国際フィート単位は平方国際フィートです。
  • 平方国際インチ単位は平方国際インチです。
  • 平方 US Survey マイル単位は平方米国測量マイルです。
  • 平方 US Survey ヤード単位は平方米国測量ヤードです。
  • 平方 US Survey フィート単位は平方米国測量フィートです。
  • 平方 US Survey インチ単位は平方米国測量インチです。
  • US Survey エーカー単位は米国測量エーカーです。
  • ヘクタール単位はヘクタールです。
  • エーカー単位は国際エーカーです。
String

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 パラメーター値の X,Y 許容値がデフォルト値となります。

注意:

このパラメーターの値を変更すると、失敗または予期しない結果が発生する可能性があります。 このパラメーターは変更しないことをお勧めします。 ツール ダイアログ ボックスのビューからは削除されています。 デフォルトでは、入力フィーチャクラスの空間参照の [XY許容値] プロパティが使用されます。

Linear Unit
out_units
(オプション)

面積計測または長さの計測の計算に使用する単位を指定します。 入力クラス フィーチャがポイントの場合は、出力単位を設定できません。

  • UNKNOWN単位は不明です。
  • KILOMETERS単位はキロメートルです。
  • METERS単位はメートルです。
  • DECIMETERS単位はデシメートルです。
  • CENTIMETERS単位はセンチメートルです。
  • MILLIMETERS単位はミリメートルです。
  • MILES_INTERNATIONAL単位は法定マイルです。
  • NAUTICAL_MILES_INTERNATIONAL単位は国際海里です。
  • YARDS_INTERNATIONAL単位は国際ヤードです。
  • FEET_INTERNATIONAL単位は国際フィートです。
  • INCHES_INTERNATIONAL単位は国際インチです。
  • MILES単位は米国測量マイルです。
  • NAUTICAL_MILES単位は米国測量海里です。
  • YARDS単位は米国測量ヤードです。
  • FEET単位は米国測量フィートです。
  • INCHES単位は米国測量インチです。
  • DECIMAL_DEGREES単位は度 (10 進) です。
  • POINTS単位はポイントです。
  • ARES単位はアールです。
  • SQUARE_KILOMETERS単位は平方キロメートルです。
  • SQUARE_METERS単位は平方メートルです。
  • SQUARE_DECIMETERS単位は平方デシメートルです。
  • SQUARE_CENTIMETERS単位は平方センチメートルです。
  • SQUARE_MILLIMETERS単位は平方ミリメートルです。
  • SQUARE_MILES単位は平方法定マイルです。
  • SQUARE_YARDS単位は平方国際ヤードです。
  • SQUARE_FEET単位は平方国際フィートです。
  • SQUARE_INCHES単位は平方国際インチです。
  • SQUARE_MILES_US単位は平方米国測量マイルです。
  • SQUARE_YARDS_US単位は平方米国測量ヤードです。
  • SQUARE_FEET_US単位は平方米国測量フィートです。
  • SQUARE_INCHES_US単位は平方米国測量インチです。
  • ACRES_US単位は米国測量エーカーです。
  • HECTARES単位はヘクタールです。
  • ACRES単位は国際エーカーです。
String

コードのサンプル

TabulateIntersection の例 1 (Python ウィンドウ)

Python ウィンドウで TabulateIntersection 関数を使用して、ゾーンごとに各植生タイプの面積を求めます。

import arcpy
arcpy.analysis.TabulateIntersection("Zones", "zone_id", "Vegetation", 
                                    r"C:\Esri\veganalysis.gdb\vegtypeAreas", 
                                    "VEGTYPE")
TabulateIntersection の例 2 (スタンドアロン スクリプト)

このスクリプトは、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.analysis.TabulateIntersection(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

関連トピック