Resumen
Calcula la intersección entre dos clases de entidades y realiza una tabulación cruzada del área, la longitud o el recuento de las entidades que se intersecan.
Ilustración
Uso
Una zona consta de todas las entidades en las Entidades de zona de entrada que tienen los mismos valores en los Campos de zona. De manera similar, una clase consta de todas las entidades en las Entidades de clase de entrada que tienen los mismos valores en los Campos de zona. Las entidades no tienen que ser contiguas para estar en la misma zona o clase. Esta herramienta calcula cuánto de la zona se interseca por cada clase (área y porcentaje del área de zona).
Si no hay Campo de clase especificada, todas las entidades en las Entidades de clase de entrada se considerarán una clase única. La Tabla de salida incluirá un registro para cada zona.
Si se especifica un Campo de clase, la Tabla de salida incluirá n registros para cada zona, en donde n es el número de clases dentro de esa zona. Por ejemplo, si una zona contiene cuatro clases, la Tabla de salida tendrá cuatro registros para esa zona.
Los atributos numéricos de las Entidades de la clase de entrada se pueden sumar por zona usando el parámetro Sumar campos. Los valores de suma de una clase representan una proporción de los valores de suma basada en el porcentaje de la clase que se interseca con la zona (similar al funcionamiento de una Política de relación).
Utilizar una dimensión mayor Entidades de clase de entrada que las Entidades de zona de entrada no se admite. Combinaciones no admitidas:
- Zona = puntos, Clase = polígonos o líneas
- Zona = Líneas, Clase = polígonos
Cuando las Entidades de zona de entrada y Entidades de clase de entrada son polígonos, las estadísticas de la tabla de salida se basarán en cálculos de área.
Cuando las Entidades de clase de entrada son líneas, las estadísticas de la tabla de salida se basarán en cálculos lineales.
Cuando las Entidades de clase de entrada son puntos, las estadísticas de la tabla de salida se basarán en un recuento de entidades.
Cuando las Entidades de zona de entrada y las Entidades de clase de entrada tienen la misma dimensión (ambas son polígonos, ambas son líneas o ambas son puntos), el campo PORCENTAJE de salida registra el porcentaje de la entidad de zona que se interseca con la clase.
Si las Entidades de zona de entrada y las Entidades de clase de entrada tienen diferentes dimensiones (la zona de polígono con clase de línea, la zona de polígono con clase de punto o la zona de línea con clase de punto), el campo PORCENTAJE de salida registra el porcentaje de la clase que interseca el polígono de la zona.
Es posible que el campo PORCENTAJE para registrar un valor de porcentaje mayor que 100 por ciento cuando hay entidades superpuestas en las Entidades de zona de entrada o las Entidades de clase de entrada.
El campo AREA se incluye en la tabla de salida solo cuando las Entidades de zona de entrada y Entidades de clase de entrada son polígonos. El campo ÁREA contiene el área de las Entidades de zona de entrada que se interseca con las Entidades de clase de entrada.
Un campo LONGITUD se incluye en la tabla de salida cuando las Entidades de clase de entrada son líneas. El campo LONGITUD contiene la longitud de intersección entre las Entidades de zona de entrada y las Entidades de clase de entrada.
Un campo PNT_COUNT está incluido en la tabla de salida cuando las Entidades de clase de entrada son puntos. El campo PNT_COUNT contiene el recuento del número de puntos de las Entidades de clase de entrada que intersecan las Entidades de zona de entrada.
Al usar capas de entidades, si cualquiera de las entidades está seleccionada, solamente las entidades seleccionadas se usan en los cálculos.
La determinación de la intersección de las entidades de zona y clase se hace siguiendo las mismas reglas que la herramienta Intersectar.
Utilice la herramienta Tabla pivote para transformar la Tabla de salida en una tabla que contiene un registro para cada zona con los atributos de clase como campos de atributo separados. Rellene los parámetros para la herramienta Tabla pivote como sigue:
- Tabla de entrada: Tabular intersección Tabla de salida
- Campos de entrada: Tabular intersecciónCampos de zona
- Campo de pivote: Tabular intersección Campo de clase
- Campo de valor: Tabular intersección Campo de suma o ÁREA, LONGITUD, PORCENTAJE
Sintaxis
TabulateIntersection_analysis (in_zone_features, zone_fields, in_class_features, out_table, {class_fields}, {sum_fields}, {xy_tolerance}, {out_units})
Parámetro | Explicación | Tipo de datos |
in_zone_features | Las entidades utilizadas para identificar zonas. | Feature Layer |
zone_fields [zone_fields,...] | El campo o los campos de atributo que se utilizará para definir zonas. | Field |
in_class_features | Las entidades utilizadas para identificar clases. | Feature Layer |
out_table | La tabla que incluirá la tabulación cruzada de intersecciones entre zonas y clases. | Table |
class_fields [class_fields,...] (Opcional) | El campo o campos de atributo utilizados para definir las clases. | Field |
sum_fields [sum_fields,...] (Opcional) | Los campos para sumar en las Entidades de clase de entrada. | Field |
xy_tolerance (Opcional) | La distancia que determina el rango en el cual las entidades o sus vértices se consideran iguales. De manera predeterminada, esta es la tolerancia XY de las Entidades de zona de entrada. | Linear Unit |
out_units (Opcional) | Unidades a utilizar para calcular las mediciones de área o longitud. La configuración de las Unidades de salida cuando las Entidades de clase de entrada son puntos no es admitida. | String |
Muestra de código
Ejemplo 1 de TabulateIntersection (ventana de Python)
Usar TabulateIntersection en la ventana Python para buscar el área de cada tipo de vegetación en cada zona.
import arcpy
arcpy.TabulateIntersection_analysis("Zones", "zone_id", "Vegetation", r"C:\Esri\veganalysis.gdb\vegtypeAreas", "VEGTYPE")
Ejemplo 2 de TabulateIntersection (secuencia de comandos independiente)
Secuencia de comandos que abarca TabulateIntersection para crear una simple herramienta de secuencia de comandos TabulateArea. La herramienta de secuencia de comandos TabulateArea solamente tomará entidades de polígono como entrada.Los campos Zona y Clase están restringidos a uno cada uno.
'''
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 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)
Entornos
Información sobre licencias
- ArcGIS Desktop Basic: No
- ArcGIS Desktop Standard: No
- ArcGIS Desktop Advanced: Sí