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

ライセンス レベル:BasicStandardAdvanced

サマリ

2 つのフィーチャクラス間の交差部分を計算し、交差しているフィーチャの面積、長さ、個数をクロス集計します。

Tabulate Intersection illustration

使用法

構文

TabulateIntersection_analysis (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,...]
(オプション)

[入力クラス フィーチャ] を集計するためのフィールドです。

Field
xy_tolerance
(オプション)

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

Linear Unit
out_units
(オプション)

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

String

コードのサンプル

TabulateIntersection(交差部分のクロス集計)の例 1(Python ウィンドウ)

Python ウィンドウで TabulateIntersection(交差部分のクロス集計)を使用して、ゾーンごとに各植生タイプの面積を求めます。

arcpy.TabulateIntersection_analysis("Zones","zone_id","Vegetation",r"C:\Esri\veganalysis.gdb\vegtypeAreas","VEGTYPE")
TabulateIntersection(交差部分のクロス集計)の例 2(スタンドアロン スクリプト)

簡単なTabulateArea(クロス集計)スクリプト ツールを作成するために、TabulateIntersection(交差部分のクロス集計)をラップするスクリプトです。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, sys, 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 TI with restricted parameters
try:
    arcpy.TabulateIntersection_analysis(zoneFC, zoneFld, classFC, outTab, classFld, sum_Fields, xy_tol, outUnits)
except:
    arcpy.AddMessage("Tabulate Intersection Failed.")
AddMsgAndPrint(arcpy.GetMessages(), 0)

環境

関連トピック

ライセンス情報

ArcGIS for Desktop Basic: ×
ArcGIS for Desktop Standard: ×
ArcGIS for Desktop Advanced: ○
5/10/2014