Simplificar línea (Cartografía)
Resumen
Simplifica líneas con la eliminación de curvaturas extrañas y preserva la forma esencial.
Ilustración
Uso
Existen dos métodos de simplificación:
- El método eliminación de puntos es el más rápido pero también el menos refinado. Quita los vértices redundantes. Utilice este método para comprimir los datos o para obtener una simplificación más gruesa. La angulosidad de la línea que se crea aumenta considerablemente a medida que aumente la tolerancia y, por lo tanto, es posible que la línea sea menos agradable estéticamente que la entrada.
- El método simplificación de curvaturas es más lento, pero generalmente produce resultados más fieles a las entidades originales. Opera con la eliminación de las curvaturas insignificantes a lo largo de las líneas. Utilice este método para obtener una simplificación más refinada.
El valor de tolerancia de simplificación determina el grado de simplificación. Defina la tolerancia igual o mayor que el espacio mínimo permitido entre elementos gráficos. Al utilizar la misma tolerancia, eliminación de puntos produce resultados más aproximados y más simplificados que simplificación de curvaturas.
-
Esta herramienta produce dos clases de entidad de salida: una clase de entidad línea para almacenar las líneas simplificadas y una clase de entidad de puntos para almacenar los puntos que representan las líneas que se contrajeron a una longitud cero. El nombre y la ubicación de salida del punto se derivan automáticamente del nombre de la línea de salida por medio de un sufijo _Pnt. La clase de entidad de línea de salida contiene todos los campos presentes en la clase de entidad de entrada. La clase de entidad de punto de salida no contiene ninguno de estos campos.
-
Existen opciones para el manejo de los errores topológicos en la salida:
- El parámetro Verificar errores topológicos identifica los errores topológicos introducidos por el proceso de simplificación. Cuando se marca esta opción, también se habilita el parámetro Resolver errores topológicos. La comprobación de los errores topológicos puede hacer que disminuya la velocidad de procesamiento.
- La clase de entidad de la línea de salida contiene dos campos que indican si la entidad tiene o no un error topológico. InLine_FID y SimLnFlag contienen los ID de entidad de entrada y los errores topológicos, respectivamente. Un valor de 1 indica que se introdujo un error, mientras que un valor de 0 (cero) indica que no se introdujeron errores.
- Después de que se resuelva un error topológico, los valores del marcador se mantendrán en su lugar. Utilice el campo SimLnFlag para examinar las entidades que tengan errores topológicos.
-
Los parámetros Verificar errores topológicos y Resolver errores topológicos no se pueden utilizar en una sesión de edición. Para ejecutar la herramienta en una sesión de edición, deshabilite el parámetro Verificar errores topológicos.
Sintaxis
Parámetro | Explicación | Tipo de datos |
in_features |
Entidades de línea que se simplificarán. | Feature Layer |
out_feature_class |
La clase de entidad de línea de salida que se creará. | Feature Class |
algorithm |
Especifica el algoritmo de simplificación de línea.
| String |
tolerance |
La tolerancia que determina el grado de simplificación. Se debe especificar una tolerancia, la cual debe ser mayor que cero. Puede elegir la unidad que prefiera; el valor predeterminado es la unidad de la entidad.
| Linear unit |
error_resolving_option (Opcional) |
Especifica cómo se manejarán los errores topológicos (posiblemente introducidos en el proceso, incluidos el cruce de línea, la superposición de línea y las líneas contraídas a una longitud de cero). Este parámetro funciona cuando la opción error_checking_option está establecida en CHECK (la opción predeterminada).
| Boolean |
collapsed_point_option (Opcional) |
Especifica si las líneas contraídas a una longitud de cero se deben mantener como puntos, de encontrarse algunas en el proceso. Esta opción se aplica solamente cuando se especifica la opción NO_CHECK o cuando se especifican las opciones FLAG_ERRORS y CHECK.
| Boolean |
error_checking_option (Opcional) |
Especifica cómo se manejarán los errores topológicos (posiblemente introducidos en el proceso, incluidos el cruce de línea, la superposición de línea y las líneas contraídas a una longitud de cero).
| Boolean |
Ejemplo de código
La siguiente secuencia de comandos de la ventana de Python muestra cómo utilizar la herramienta SimplifyLine en el modo inmediato.
import arcpy
from arcpy import env
import arcpy.cartography as CA
env.workspace = "C:/data"
CA.SimplifyLine("roads.shp",
"C:/output/output.gdb/simplified_roads",
"POINT_REMOVE",
20)
La siguiente secuencia de comandos independiente muestra cómo utilizar la herramienta SimplifyLine.
# Name: SimplifyLine_Example2.py
# Description: Simplify line features from two feature classes, rivers and coastlines,
# while maintaining their connections
# Import system modules
import arcpy
from arcpy import env
import arcpy.management as DM
import arcpy.cartography as CA
# Set environment settings
env.workspace = "C:/data/Portland.gdb/Hydrography"
# Set local variables
inRiverFeatures = "rivers"
inCoastlineFeatures = "coastlines"
mergedFeatures = "C:/data/PortlandOutput.gdb/merged_lines"
simplifiedFeatures = "C:/data/PortlandOutput.gdb/merged_lines_simplified"
tempLayer = "tempLyr"
outRiverFeatureClass = "C:/data/PortlandOutput.gdb/rivers_final"
outCoastlineFeatureClass = "C:/data/PortlandOutput.gdb/coastlines_final"
# Merge rivers and coastlines into one feature class,
# assuming that they have a common f-code field
# with value 40 for rivers and 80 for coastlines.
DM.Merge(inRiverFeatures, inCoastlineFeatures, mergedFeatures)
# Simplify all lines.
CA.SimplifyLine(mergedFeatures,
simplifiedFeatures,
"BEND_SIMPLIFY",
100,
"RESOLVE_ERRORS",
"KEEP_COLLAPSED_POINTS",
"CHECK")
# Select rivers and coastlines by their f-code values
# and put them in separate feature classes.
DM.MakeFeatureLayer(simplifiedFeatures, tempLayer, "f-code = 40")
DM.CopyFeatures(tempLayer, outRiverFeatureClass)
DM.MakeFeatureLayer(simplifiedFeatures, tempLayer, "f-code = 80")
DM.CopyFeatures(tempLayer, outCoastlineFeatureClass)