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 de los dos procesos. Quita los vértices redundantes. Utilice este método para comprimir los datos o para obtener una simplificación mayor o más gruesa, especialmente cuando los datos son conocidos. La angulosidad (esquinas nítidas) de la línea que se cree aumentará considerablemente a medida que aumente la tolerancia y, por lo tanto, es posible que la línea se torne menos agradable estéticamente.
- El método simplificación de curvaturas es más lento, pero generalmente produce resultados más fieles al original y más agradables estéticamente. 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 menor o 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 de 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 de 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 salida de la línea contiene todos los campos de entrada, mientras que la salida del punto no contiene ninguno de los campos de entrada.
-
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. Si no se realiza una verificación de la topología, el procesamiento es más rápido, pero debe utilizar este parámetro si no confía en la precisión topológica de los datos.
- La salida de la línea contiene dos campos nuevos que indican si una entidad tiene un error topológico. Los campos InLine_FID y SimLnFlag contienen los ID de las entidades 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)