Beschriftung | Erläuterung | Datentyp |
Eingabe-Zonen-Features | Die Features, die zum Identifizieren von Zonen benutzt werden. | Feature Layer |
Zonenfelder | Das/die Attributfeld/er, mit dem bzw. denen die Zonen definiert werden. | Field |
Eingabeklassen-Features | Die Features, die zum Identifizieren von Klassen benutzt werden | Feature Layer |
Ausgabetabelle | Die Tabelle, die die Kreuztabellierung der Schnittpunkte von Zonen und Klassen enthält. | Table |
Klassenfelder (optional) | Das/die Attributfeld/er, mit dem bzw. denen die Klassen definiert werden. | Field |
Summenfelder (optional) | Die Felder des Parameters Eingabeklassen-Features, die zusammengezählt werden sollen. | Field |
XY-Toleranz (optional) | Die Entfernung, die den Bereich bestimmt, in welchem die Features oder ihre Stützpunkte als identisch betrachtet werden. Standardmäßig ist dies die XY-Toleranz des Parameters Eingabe-Zonen-Features. Vorsicht:Das Ändern dieses Parameterwertes kann zu einem Fehler oder zu unerwarteten Ergebnissen führen. Es wird empfohlen, diesen Parameter nicht zu ändern. Er wurde im Werkzeug-Dialogfeld aus der Ansicht entfernt. Standardmäßig wird die Eigenschaft XY-Toleranz des Raumbezugs der Eingabe-Feature-Class verwendet. | Linear Unit |
Ausgabe-Einheiten (optional) | Gibt die Einheiten an, die zum Berechnen von Flächen- oder Längenmessungen verwendet werden. Ausgabe-Einheiten können nicht festgelegt werden, wenn die Eingabeklassen-Features Punkte sind.
| String |
Zusammenfassung
Berechnet den Schnittpunkt zwischen zwei Feature-Classes und kreuztabelliert die Fläche, die Länge oder die Anzahl der sich schneidenden Features.
Abbildung
Verwendung
Eine Zone umfasst alle Features im Parameter Eingabe-Zonen-Features, die im Parameter Zonenfeldern dieselben Werte aufweisen. Nach demselben Prinzip umfasst eine Klasse alle Features im Parameter Eingabeklassen-Features, die im Parameter Klassenfeldern dieselben Werte aufweisen. Features müssen nicht zusammenhängen, um sich in derselben Zone oder Klasse zu befinden. Dieses Werkzeug berechnet, welcher Anteil der Zone von jeder Klasse (Fläche und Prozentsatz der Zonenfläche) geschnitten wird.
Wenn für den Wert Klassenfelder kein Wert angegeben ist, werden alle Features im Parameter Eingabeklassen-Features als eine einzige Klasse betrachtet. Der Wert Ausgabetabelle enthält einen Datensatz für jede Zone.
Wenn der Wert Klassenfelder angegeben ist, enthält der Wert Ausgabetabelle n Datensätze für jede Zone, wobei n für die Anzahl der Klassen in der Zone steht. Wenn eine Zone beispielsweise vier Klassen enthält, enthält der Wert Ausgabetabelle vier Datensätze für diese Zone.
Numerische Attribute aus dem Parameter Eingabeklassen-Features können mit dem Parameter Summenfelder nach Zonen zusammengefasst werden. Die Summenwerte für eine Klasse stellen einen Anteil der Summenwerte dar und basieren auf dem Prozentwert der Klasse, die die Zone schneidet.
Vorsicht:
Verwenden Sie Felder mit absoluten Werten (keine relativen normalisierten Werte wie Prozentsätze oder Dichten) als Summenfelder, da die Werte geteilt und verschiedenen Zonen zugeordnet werden können.
Die Verwendung eines Werts für Eingabeklassen-Features mit einer höheren Dimension als für den Wert Eingabe-Zonen-Features wird nicht unterstützt.
- Wenn die Werte für Eingabe-Zonen-Features Punkte sind, können die Werte für Eingabeklassen-Features nicht Polygone oder Linien sein.
- Wenn die Werte für Eingabe-Zonen-Features Linien sind, können die Werte für Eingabeklassen-Features nicht Polygone sein.
Wenn die Werte für Eingabe-Zonen-Features und Eingabeklassen-Features Polygone sind, basieren die Ausgabetabellenstatistiken auf Flächenberechnungen.
Wenn die Werte für Eingabeklassen-Features Linien sind, basieren die Ausgabetabellenstatistiken auf linearen Berechnungen.
Wenn die Werte für Eingabeklassen-Features Punkte sind, basieren die Ausgabetabellenstatistiken auf der Feature-Anzahl.
Wenn die Werte für Eingabe-Zonen-Features und Eingabeklassen-Features die gleiche Dimension haben (jeweils nur Polygone, Linien oder Punkte), wird im Ausgabefeld PERCENTAGE der Prozentsatz des Zonen-Features, das von der Klasse geschnitten wird, angegeben.
Wenn die Werte für Eingabe-Zonen-Features und Eingabeklassen-Features unterschiedliche Dimensionen haben (Polygonzone mit Linienklasse, Polygonzone mit Punktklasse oder Linienzone mit Punktklasse), wird im Ausgabefeld PERCENTAGE der Prozentsatz der Klasse, die das Zonenpolygon schneidet, angegeben.
Das Feld PERCENTAGE kann einen Wert über 100 aufweisen, wenn in den Parametern Eingabe-Zonen-Features oder Eingabeklassen-Features überlappende Features enthalten sind.
Das Feld AREA ist nur dann in der Ausgabetabelle enthalten, wenn die Werte für Eingabe-Zonen-Features und Eingabeklassen-Features Polygone sind. Das Feld AREA enthält die Fläche der Werte für Eingabe-Zonen-Features, die von den Werten für Eingabeklassen-Features geschnitten werden.
Das Feld LENGTH ist in der Ausgabetabelle enthalten, wenn die Werte für Eingabeklassen-Features Linien sind. Das Feld LENGTH enthält die Länge der Überschneidung zwischen den Werten für Eingabe-Zonen-Features und Eingabeklassen-Features.
Das Feld PNT_COUNT ist in der Ausgabetabelle enthalten, wenn die Werte für Eingabeklassen-Features Punkte sind. Das Feld PNT_COUNT enthält die Anzahl der Punkte der Eingabeklassen-Features, die die Werte für Eingabe-Zonen-Features schneiden.
Wenn bei der Verwendung von Feature-Layern Features ausgewählt sind, werden nur die ausgewählten Features in Berechnungen verwendet.
Der Schnittpunkt von Zonen- und Klassen-Features wird nach den Regeln berechnet, die auch im Werkzeug Überschneiden (Intersect) zur Anwendung kommen.
Verwenden Sie das Werkzeug Pivot-Tabelle, um den Wert für Ausgabetabelle in eine Tabelle umzuwandeln, in der ein Datensatz für jede Zone mit Klassenattributen als separates Attributfeld enthalten ist. Füllen Sie die Parameter des Werkzeugs Pivot-Tabelle wie folgt aus:
- Eingabetabelle: Schnittpunkt tabellarisch aufführen Ausgabetabelle
- Eingabefelder: Schnittpunkt tabellarisch aufführen Zonenfelder
- Pivot-Feld: Schnittpunkt tabellarisch aufführen Klassenfelder
- Wertefeld: Schnittpunkt tabellarisch aufführen Summenfelder oder AREA, LENGTH, PERCENTAGE
Parameter
arcpy.analysis.TabulateIntersection(in_zone_features, zone_fields, in_class_features, out_table, {class_fields}, {sum_fields}, {xy_tolerance}, {out_units})
Name | Erläuterung | Datentyp |
in_zone_features | Die Features, die zum Identifizieren von Zonen benutzt werden. | Feature Layer |
zone_fields [zone_fields,...] | Das/die Attributfeld/er, mit dem bzw. denen die Zonen definiert werden. | Field |
in_class_features | Die Features, die zum Identifizieren von Klassen benutzt werden | Feature Layer |
out_table | Die Tabelle, die die Kreuztabellierung der Schnittpunkte von Zonen und Klassen enthält. | Table |
class_fields [class_fields,...] (optional) | Das/die Attributfeld/er, mit dem bzw. denen die Klassen definiert werden. | Field |
sum_fields [sum_fields,...] (optional) | Die Felder des Parameters in_class_features, die zusammengezählt werden sollen. | Field |
xy_tolerance (optional) | Die Entfernung, die den Bereich bestimmt, in welchem die Features oder ihre Stützpunkte als identisch betrachtet werden. Standardmäßig ist dies die XY-Toleranz des Parameters in_zone_features. Vorsicht:Das Ändern dieses Parameterwertes kann zu einem Fehler oder zu unerwarteten Ergebnissen führen. Es wird empfohlen, diesen Parameter nicht zu ändern. Er wurde im Werkzeug-Dialogfeld aus der Ansicht entfernt. Standardmäßig wird die Eigenschaft XY-Toleranz des Raumbezugs der Eingabe-Feature-Class verwendet. | Linear Unit |
out_units (optional) | Gibt die Einheiten an, die zum Berechnen von Flächen- oder Längenmessungen verwendet werden. Ausgabe-Einheiten können nicht festgelegt werden, wenn die Eingabeklassen-Features Punkte sind.
| String |
Codebeispiel
Verwenden Sie die Funktion TabulateIntersection im Python-Fenster, um die Fläche jeder Vegetationsart in jeder Zone zu ermitteln.
import arcpy
arcpy.analysis.TabulateIntersection("Zones", "zone_id", "Vegetation",
r"C:\Esri\veganalysis.gdb\vegtypeAreas",
"VEGTYPE")
Dieses Skript umgibt die TabulateIntersection-Funktion, um ein einfaches TabulateArea-Skriptwerkzeug zu erstellen. Das TabulateArea-Skriptwerkzeug verwendet nur Polygon-Features als Eingabe.
Die Felder "Zone" und "Class" werden jeweils auf eines beschränkt.
'''
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)
Umgebungen
Lizenzinformationen
- Basic: Nein
- Standard: Nein
- Advanced: Ja