Tabular intersección (Análisis)
Resumen
Calcula la intersección entre dos clases de entidades y realiza una tabulación cruzada del área, longitud o conteo 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 la suma para una clase representan una proporción de los valores de suma con base en el porcentaje de la clase que interseca la zona (similar a cómo funciona una política de relación).
Precaución:Solo los campos con valores absolutos (no valores relativos, normalizados como porcentajes o densidades) se deberían utilizar como Campos de suma, ya que los valores se pueden dividir y asignar a diferentes zonas.
No se permite que la dimensión de Entidades de clase de entrada sea mayor que la de Entidades de zona de entrada. 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 conteo de entidades.
Cuando las Entidades de zona de entrada y las Entidades de clase de entrada tienen la misma dimensión (ambas polígonos, ambas líneas o ambas puntos), el campo PORCENTAJE de salida registra el porcentaje de la entidad de la zona intersecada 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 registre 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 AREA contiene el área de las Entidades de zona de entrada que intersecan 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. Llene 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
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. No se permite la configuración de las Unidades de salida cuando las Entidades de clase de entrada son puntos. | String |
Ejemplo de código
Usar TabulateIntersection en la ventana Python para encontrar el área de cada tipo de vegetación en cada zona.
arcpy.TabulateIntersection_analysis("Zones","zone_id","Vegetation",r"C:\Esri\veganalysis.gdb\vegtypeAreas","VEGTYPE")
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, 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)