Polígono a línea (Administración de datos)
Resumen
Crea una clase de entidad que contiene líneas convertidas a partir de límites de polígonos con o sin consideración de los polígonos adyacentes.
Ilustración
Uso
Si la casilla de verificación Identificar y almacenar información de polígonos adyacentes se encuentra marcada (la opción neighbor_option está establecida en IDENTIFY_NEIGHBORS en la secuencia de comandos), se analizará la relación de polígono adyacente. Como se ilustra más arriba, los límites se convierten en líneas teniendo en cuenta los segmentos de cruce o compartidos; se agregarán a la clase de entidad de salida dos campos nuevos, LEFT_FID y RIGHT_FID, y se establecerán en los Id. de entidad de los polígonos de entrada a la izquierda y la derecha de cada línea de salida. Los atributos de las entidades de entrada no se mantendrán en la clase de entidad de salida. Las siguientes situaciones le ayudarán a comprender con más detalle el proceso y la salida:
- En una geometría de polígono, el límite exterior se almacena siempre en el sentido de las agujas del reloj. Si el polígono tiene un agujero, el límite del agujero (o interior) siempre se almacena en el sentido de las agujas del reloj. Por lo tanto, para un polígono que no tiene vecinos en el lado izquierdo (afuera) de su límite exterior y el lado izquierdo (adentro) del límite del agujero, las líneas resultantes tendrán un valor de -1 para LEFT_FID y el Id. de la entidad de polígono como RIGHT_FID.
- Si un polígono contiene otro polígono, se generará una línea de salida en el sentido de las agujas del reloj que representará el límite compartido, con el campo LEFT_FID establecido en el Id. de la entidad de polígono exterior y el campo RIGHT_FID establecido en el Id. de la entidad de polígono interior.
- Si dos polígonos comparten una parte de sus límites, se generará una línea de salida que representará el segmento compartido. La dirección de la línea será arbitraria; LEFT_FID y RIGHT_FID se establecerán en los Id. de identidad de polígono de la izquierda o la derecha según corresponda.
- Si un polígono se superpone con otro polígono, se generarán dos líneas de salida que representarán cada límite de cruce dos veces: la primera línea representará el límite exterior de uno de los polígonos que se superponen, por lo tanto, LEFT_FID es el Id. de la entidad del polígono que cruza y RIGHT_FID será el propio Id. de la entidad de polígono; la segunda línea estará en la dirección opuesta, dividiendo al otro polígono; por lo tanto, LEFT_FID y RIGHT_FID serán los mismos que los otros Id. de entidad de polígono.
- No se mantienen las multipartes en los polígonos de entrada; las líneas de salida son todas de parte simple.
-
Si la casilla de verificación Identificar y almacenar información de polígonos adyacentes se encuentra desmarcada (la opción neighbor_option está establecida en IGNORE_NEIGHBORS en la secuencia de comandos), se ignorará la relación de polígono adyacente. Cada límite de polígono de entrada se escribirá como una entidad de línea encerrada. Un polígono multiparte se convertirá en una línea multiparte en la salida. Los atributos de las entidades de entrada se mantendrán en la clase de entidad de salida. Se agregará un campo nuevo, ORIG_FID, a la salida y se establecerá en los Id. de entidad de entrada de cada línea.
-
Para las entidades de entrada de las curvas paramétricas (verdaderas), las líneas de salida permanecerán como curvas verdaderas incluso si están divididas. Esto no se aplica a los datos de shapefile.
Sintaxis
Parámetro | Explicación | Tipo de datos |
in_features |
Las entidades de entrada que deben ser polígonos. | Feature Layer |
out_feature_class |
La clase de entidad de línea de salida. | Feature Class |
neighbor_option (Opcional) |
Especifica si se debe identificar y almacenar la información de adyacencia del polígono.
| Boolean |
Ejemplo de código
La siguiente secuencia de comandos de la ventana de Python demuestra cómo utilizar la función PolygonToLine en el modo inmediato.
import arcpy from arcpy import env env.workspace = "C:/data" arcpy.PolygonToLine_management("Habitat_Analysis.gdb/vegtype", "C:/output/Output.gdb/vegtype_lines", "IGNORE_NEIGHBORS")
La siguiente secuencia de comandos independiente es un ejemplo simple de cómo aplicar la función PolygonToLine en un entorno de secuencias de comandos.
# Name: PolygonToLine_Example2.py # Description: Use PolygonToLine function to convert polygons to lines, # and report how many shared or overlapping boundary lines # were found. # Author: ESRI # import system modules import arcpy from arcpy import env # Set environment settings env.workspace = "C:/data/landcovers.gdb" # Create variables for the input and output feature classes inFeatureClass = "bldgs" outFeatureClass = "bldgs_lines" # Use error trapping in case a problem occurs when running the tool try: # Run PolygonToLine to convert polygons to lines using default neighbor_option arcpy.PolygonToLine_management(inFeatureClass, outFeatureClass) # Select lines that have LEFT_FID values greater than -1 arcpy.MakeFeatureLayer_management(outFeatureClass, "selection_lyr", "\"LEFT_FID\" > -1") result = arcpy.GetCount_management("selection_lyr") if (result.getOutput(0) == "0"): print "No overlapping or shared boundary lines were found." else: print result.getOutput(0) + " overlapping or shared " +\ "boundary lines were found." except Exception, e: # If an error occurred, print line number and error message import traceback, sys tb = sys.exc_info()[2] print "Line %i" % tb.tb_lineno print e.message