Simplificar polígono (Cartografía)

Resumen

Simplifica entidades poligonales con la eliminación de vértices relativamente extraños a la vez que preserva la forma esencial.

Ilustración

Ejemplos de opción del algoritmo de la herramienta Simplificar polígono
Resultados de muestra de los algoritmos de simplificación se muestran aquí para su comparación.

Uso

  • Esta herramienta utiliza distintos algoritmos de simplificación para diferentes finalidades. Para más información sobre estos algoritmos, consulte Cómo funcionan Simplificar línea y Simplificar polígono.

    • Algoritmo Retener puntos críticos (Douglas-Peucker) (algorithm = "POINT_REMOVE" en Python): identifica y elimina vértices relativamente redundantes para simplificar los datos a fin de visualizarlos a escalas más pequeñas. Es el algoritmo de simplificación más rápido de esta herramienta. Este algoritmo se suele utilizar para la compresión de datos o para una simplificación más gruesa. La angulosidad de los contornos de polígono resultantes se incrementa considerablemente a medida que aumenta la tolerancia. Este algoritmo se basa en el algoritmo de Douglas-Peucker: Douglas, David and Peucker, Thomas, "Algorithms for the reduction of the number of points required to represent a digitized line or its caricature," The Canadian Cartographer 10(2), 112–122 (1973).
    • Algoritmo Retener curvaturas críticas (Wang-Müller) (algorithm = "BEND_SIMPLIFY" en Python): identifica y elimina curvaturas relativamente insignificantes para simplificar los datos a fin de visualizarlos a escalas más pequeñas. Suele ser más preciso con respecto a la geometría de entrada que el algoritmo Retener puntos críticos (Douglas-Peucker), pero puede tardar más tiempo en procesarse. Este algoritmo se basa en el algoritmo definido en Wang, Zeshen and Müller, Jean-Claude, "Line Generalization Based on Analysis of Shape Characteristics," Cartography and Geographic Information Systems 25(1), 3–15 (1998).
    • Algoritmo Retener áreas efectivas ponderadas (Zhou-Jones) (algorithm = "WEIGHTED_AREA" en Python): identifica triángulos de un área efectiva para cada vértice. Seguidamente, estos triángulos se ponderan mediante un conjunto de métricas a fin de comparar la planitud, el sesgo y la convexidad de cada área. Las áreas ponderadas determinan la eliminación de sus vértices correspondientes para simplificar el contorno del polígono manteniendo a la vez la mayor cantidad de carácter posible. Este algoritmo se basa en el algoritmo definido en Zhou, Sheng and Jones, Christopher B., "Shape-Aware Line Generalisation with Weighted Effective Area," in Fisher, Peter F. (Ed.), Developments in Spatial Handling: 11th International Symposium on Spatial Handling, 369–80 (2005).
    • Algoritmo Retener áreas efectivas (Visvalingam-Whyatt) (algorithm = "EFFECTIVE_AREA" en Python): identifica triángulos del área efectiva para que cada vértice guíe la eliminación de vértices para simplificar el contorno del polígono mientras se mantienen tantos caracteres como resulta posible. Este algoritmo se basa en el algoritmo definido en Visvalingam, M. y Whyatt, J. D., "Line Generalisation by Repeated Elimination of the Smallest Area," Cartographic Information Systems Research Group (CISRG) Discussion Paper 10, The University of Hull (1992).

  • El valor del parámetro Tolerancia de simplificación determina el grado de simplificación. Cuanto mayor sea la tolerancia, más gruesa será la geometría resultante. Con tolerancias más pequeñas se genera una geometría que representa de forma más precisa la entrada. Los campos MinSimpTol y MaxSimpTol se agregan a la salida para almacenar la tolerancia que se utilizó.

    • Para el algoritmo Retener puntos críticos (Douglas-Peucker), la tolerancia es la distancia perpendicular máxima permitida entre cada vértice y la línea recién creada.
    • Para el algoritmo Retener curvaturas críticas (Wang-Müller), la tolerancia será el diámetro de un círculo que se aproxima a una curvatura significativa.
    • Para el algoritmo Retener áreas efectivas ponderadas (Zhou-Jones), el cuadrado de la tolerancia será el área de un triángulo significativo definido mediante tres vértices adyacentes. Cuanto más se desvíe el triángulo de ser equilátero, mayor ponderación se dará y, por tanto, menores serán sus probabilidades de ser eliminado.
    • Para el algoritmo Retener áreas efectivas (Visvalingam-Whyatt), el cuadrado de la tolerancia es el área de un triángulo significativo definido mediante tres vértices adyacentes.

  • Todo polígono que sea más pequeño que el valor del parámetro Área mínima se eliminará de la clase de entidad de salida. Para un grupo de polígonos adyacentes que comparten bordes, el área mínima se aplica al área total del grupo. Utilice el parámetro Mantener puntos contraídos para mantener un registro de los polígonos eliminados como entidades de puntos.

  • Los polígonos multiparte se simplifican como partes individuales.

  • Utilice el parámetro Mantener puntos contraídos (collapsed_point_option en Python) para crear una clase de entidad de punto de salida donde almacenar los puntos que representen los polígonos que se eliminan por ser más pequeños que el área mínima. Se deriva la salida de puntos; utilizará el mismo nombre y ubicación que el valor del parámetro Clase de entidad de salida (out_feature_class en Python), pero con el sufijo _Pnt. La clase de entidad poligonal 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.

  • La clase de entidad poligonal de salida será correcta desde el punto de vista topológico. Todos los errores topológicos de los datos de entrada se marcarán en la clase de entidad poligonal de salida. La clase de entidad de salida incluye dos campos adicionales: InPoly_FID y SimPgnFlag, que contienen los Id. de entidad de entrada y los errores topológicos o discrepancias de la entrada, respectivamente.

    SimPgnFlag Los valores de campo son los siguientes:

    • SimPgnFlag = 0 indica que no hay errores.
    • SimPgnFlag = 1 indica que existe un error topológico.
    • SimPgnFlag = 2 indica entidades que se han dividido por una partición y son ahora más pequeñas que el área mínima después de la simplificación. El marcador puede aparecer solo en una parte de la entidad dividida. Todas estas entidades se conservan en la clase de entidad de salida. Esta situación solo se produce cuando se utiliza la configuración del entorno Particiones cartográficas.
    Heredado:

    En versiones anteriores de esta herramienta, se podían generar errores topológicos durante el procesamiento. El parámetro Manejo de errores topológicos (error_option en Python) sigue incluido en la sintaxis de la herramienta a efectos de compatibilidad con los scripts y modelos, pero ahora se ignora y está oculto en el cuadro de diálogo de la herramienta.

    El campo SimPgnFlag se utilizaba para marcar errores topológicos en la clase de entidad de salida introducidos por la herramienta en el procesamiento. Ahora este campo marca los errores presentes en la entrada. Además, durante la resolución de la topología, en versiones anteriores de la herramienta se modificaba la tolerancia por entidad y estos valores se almacenaban en los campos MinSimpTol y MaxSimpTol. En la implementación actual, los valores de estos campos serán los mismos y equivaldrán a la tolerancia especificada en el parámetro Tolerancia de simplificación. Asegúrese de modificar los modelos o scripts existentes basados en cualquiera de estos campos.

  • Utilice el parámetro Capas de barrera de entrada para identificar las entidades que los polígonos simplificados no deben cruzar. Las entidades de barrera pueden ser puntos, líneas o polígonos.

  • Los dominios y subtipos se copian a la salida, aunque el entorno Transferir dominios de campo, subtipos y reglas de atributo no esté activado.

  • El procesamiento de datasets grandes podría superar los límites de memoria. En este caso, considere la posibilidad de procesar los datos de entrada por partición identificando una clase de entidad poligonal relevante en la configuración de entorno Particiones cartográficas. Las partes de los datos definidos por los límites de partición se procesarán en secuencia. La clase de entidad de salida resultante será sin fisuras y coherente en los bordes de la partición. Consulte Generalizar datasets grandes usando particiones para obtener más información.

Parámetros

EtiquetaExplicaciónTipo de datos
Entidades de entrada

Entidades poligonales de entrada que se van a simplificar.

Feature Layer
Clase de entidad de salida

La clase de entidad poligonal de salida simplificada. Contiene todos los campos incluidos en la clase de entidad de entrada. La clase de entidad poligonal de salida será correcta desde el punto de vista topológico. La herramienta no introduce errores topológicos, sino que los errores topológicos de los datos de entrada se marcan en la clase de entidad poligonal de salida.

La clase de entidad de salida incluye dos campos adicionales: InPoly_FID y SimPgnFlag, que contienen los Id. de entidad de entrada y los errores topológicos o discrepancias de la entrada, respectivamente.

SimPgnFlag Los valores de atributos son los siguientes:

  • SimPgnFlag = 0 indica que no hay errores.
  • SimPgnFlag = 1 indica que existe un error topológico.
  • SimPgnFlag = 2 indica entidades que se han dividido por una partición y son ahora más pequeñas que el área mínima después de la simplificación. El marcador puede aparecer solo en una parte de la entidad dividida. Todas estas entidades se conservan en la clase de entidad de salida. Esta situación solo se produce cuando se utiliza la configuración del entorno Particiones cartográficas.

Feature Class
Algoritmo de simplificación

Especifica el algoritmo de simplificación de polígono.

  • Retener puntos críticos (Douglas-Peucker)Los puntos críticos que mantienen la forma esencial de un contorno de polígono se retienen y se eliminan los demás puntos (Douglas-Peucker). Esta es la opción predeterminada.
  • Retener curvaturas críticas (Wang-Müller)Se retienen las curvaturas críticas y las curvaturas extrañas se eliminan de una línea (Wang-Müller).
  • Retener áreas efectivas ponderadas (Zhou-Jones)Se retienen los vértices que forman triángulos de área efectiva ponderados por la forma del triángulo (Zhou-Jones).
  • Retener áreas efectivas (Visvalingam-Whyatt)Se retienen los vértices que forman triángulos de área efectiva (Visvalingam-Whyatt).
String
Tolerancia de simplificación

La tolerancia determina el grado de simplificación. Puede elegir la unidad que prefiera; de lo contrario, se utilizarán las unidades de la entrada. Los campos MinSimpTol y MaxSimpTol se agregan a la salida para almacenar la tolerancia que se utilizó durante el procesamiento.

  • Para el algoritmo Retener puntos críticos (Douglas-Peucker), la tolerancia es la distancia perpendicular máxima permitida entre cada vértice y la línea recién creada.
  • Para el algoritmo Retener curvaturas críticas (Wang-Müller), la tolerancia será el diámetro de un círculo que se aproxima a una curvatura significativa.
  • Para el algoritmo Retener áreas efectivas ponderadas (Zhou-Jones), el cuadrado de la tolerancia será el área de un triángulo significativo definido mediante tres vértices adyacentes. Cuanto más se desvíe el triángulo de ser equilátero, mayor ponderación se dará y, por tanto, menores serán sus probabilidades de ser eliminado.
  • Para el algoritmo Retener áreas efectivas (Visvalingam-Whyatt), el cuadrado de la tolerancia es el área de un triángulo significativo definido mediante tres vértices adyacentes.
Linear Unit
Área mínima
(Opcional)

El área mínima para que se conserve un polígono. El valor predeterminado es cero, es decir, se mantienen todos los polígonos. Puede elegir la unidad que prefiera para el valor especificado; de lo contrario, se utilizarán las unidades de la entrada.

Areal Unit
Manejo de errores topológicos
(Opcional)
Heredado:

Este es un parámetro heredado que ya no se utiliza. Antes se utilizaba para especificar cómo se manejaban los errores topológicos posiblemente introducidos durante el procesamiento. Este parámetro sigue incluido en la sintaxis de la herramienta a efectos de compatibilidad con los scripts y modelos, pero está oculto en el cuadro de diálogo de la herramienta.

String
Mantener puntos contraídos
(Opcional)

Especifica si se creará una clase de entidad de punto de salida donde almacenar los centros de los polígonos que se eliminan por ser más pequeños que el valor del parámetro Área mínima. Se deriva la salida de puntos; utilizará el mismo nombre y ubicación que el parámetro Clase de entidad de salida, pero con el sufijo _Pnt.

  • Activado: se creará una clase de entidad de punto de salida derivada donde almacenar los centros de los polígonos que se eliminan por ser más pequeños que el área mínima. Esta es la opción predeterminada.
  • Desactivado: no se creará una clase de entidad de puntos de salida derivada.
Boolean
Capas de barrera de entrada
(Opcional)

Las entradas que contienen las entidades que actúan como barreras para la simplificación. Los polígonos simplificados resultantes no tocarán ni cruzarán las entidades de barrera. Por ejemplo, al simplificar áreas forestales, los polígonos forestales simplificados resultantes no cruzarán las entidades de carreteras definidas como barreras.

Feature Layer

Salida derivada

EtiquetaExplicaciónTipo de datos
Polígonos contraídos al área cero

Cuando utiliza el parámetro Mantener puntos contraídos (collapsed_point_option en Python), se crea una clase de entidad de puntos de salida para almacenar los puntos que representan los polígonos que se eliminan por ser más pequeños que el área mínima.

Feature Class

arcpy.cartography.SimplifyPolygon(in_features, out_feature_class, algorithm, tolerance, {minimum_area}, {error_option}, {collapsed_point_option}, {in_barriers})
NombreExplicaciónTipo de datos
in_features

Entidades poligonales de entrada que se van a simplificar.

Feature Layer
out_feature_class

La clase de entidad poligonal de salida simplificada. Contiene todos los campos incluidos en la clase de entidad de entrada. La clase de entidad poligonal de salida será correcta desde el punto de vista topológico. La herramienta no introduce errores topológicos, sino que los errores topológicos de los datos de entrada se marcan en la clase de entidad poligonal de salida.

La clase de entidad de salida incluye dos campos adicionales: InPoly_FID y SimPgnFlag, que contienen los Id. de entidad de entrada y los errores topológicos o discrepancias de la entrada, respectivamente.

SimPgnFlag Los valores de atributos son los siguientes:

  • SimPgnFlag = 0 indica que no hay errores.
  • SimPgnFlag = 1 indica que existe un error topológico.
  • SimPgnFlag = 2 indica entidades que se han dividido por una partición y son ahora más pequeñas que el área mínima después de la simplificación. El marcador puede aparecer solo en una parte de la entidad dividida. Todas estas entidades se conservan en la clase de entidad de salida. Esta situación solo se produce cuando se utiliza la configuración del entorno Particiones cartográficas.

Feature Class
algorithm

Especifica el algoritmo de simplificación de polígono.

  • POINT_REMOVELos puntos críticos que mantienen la forma esencial de un contorno de polígono se retienen y se eliminan los demás puntos (Douglas-Peucker). Esta es la opción predeterminada.
  • BEND_SIMPLIFYSe retienen las curvaturas críticas y las curvaturas extrañas se eliminan de una línea (Wang-Müller).
  • WEIGHTED_AREASe retienen los vértices que forman triángulos de área efectiva ponderados por la forma del triángulo (Zhou-Jones).
  • EFFECTIVE_AREASe retienen los vértices que forman triángulos de área efectiva (Visvalingam-Whyatt).
String
tolerance

La tolerancia determina el grado de simplificación. Puede elegir la unidad que prefiera; de lo contrario, se utilizarán las unidades de la entrada. Los campos MinSimpTol y MaxSimpTol se agregan a la salida para almacenar la tolerancia que se utilizó durante el procesamiento.

  • Para el algoritmo POINT_REMOVE, la tolerancia es la distancia perpendicular máxima permitida entre cada vértice y la línea recién creada.
  • Para el algoritmo BEND_SIMPLIFY, la tolerancia será el diámetro de un círculo que se aproxima a una curvatura significativa.
  • Para el algoritmo WEIGHTED_AREA, el cuadrado de la tolerancia será el área de un triángulo significativo definido mediante tres vértices adyacentes. Cuanto más se desvíe el triángulo de ser equilátero, mayor ponderación se dará y, por tanto, menores serán sus probabilidades de ser eliminado.
  • Para el algoritmo EFFECTIVE_AREA, el cuadrado de la tolerancia será el área de un triángulo significativo definido mediante tres vértices adyacentes.
Linear Unit
minimum_area
(Opcional)

El área mínima para que se conserve un polígono. El valor predeterminado es cero, es decir, se mantienen todos los polígonos. Puede elegir la unidad que prefiera para el valor especificado; de lo contrario, se utilizarán las unidades de la entrada.

Areal Unit
error_option
(Opcional)
Heredado:

Este es un parámetro heredado que ya no se utiliza. Antes se utilizaba para especificar cómo se manejaban los errores topológicos posiblemente introducidos durante el procesamiento. Este parámetro sigue incluido en la sintaxis de la herramienta a efectos de compatibilidad con los scripts y modelos, pero está oculto en el cuadro de diálogo de la herramienta.

String
collapsed_point_option
(Opcional)

Especifica si se creará una clase de entidad de punto de salida donde almacenar los centros de los polígonos que se eliminan por ser más pequeños que el valor del parámetro minimum_area. Se deriva la salida de puntos; utilizará el mismo nombre y ubicación que la clase de entidad de salida del polígono especificada en el parámetro out_feature_class, pero con el sufijo _Pnt.

  • KEEP_COLLAPSED_POINTSSe creará una clase de entidad de punto de salida derivada donde almacenar los centros de los polígonos que se eliminan por ser más pequeños que el área mínima. Esta es la opción predeterminada.
  • NO_KEEPNo se creará ninguna clase de entidad de punto de salida derivada.
Boolean
in_barriers
[in_barriers,...]
(Opcional)

Las entradas que contienen las entidades que actúan como barreras para la simplificación. Los polígonos simplificados resultantes no tocarán ni cruzarán las entidades de barrera. Por ejemplo, al simplificar áreas forestales, los polígonos forestales simplificados resultantes no cruzarán las entidades de carreteras definidas como barreras.

Feature Layer

Salida derivada

NombreExplicaciónTipo de datos
out_point_feature_class

Cuando utiliza el parámetro Mantener puntos contraídos (collapsed_point_option en Python), se crea una clase de entidad de puntos de salida para almacenar los puntos que representan los polígonos que se eliminan por ser más pequeños que el área mínima.

Feature Class

Muestra de código

Ejemplo 1 de SimplifyPolygon (ventana de Python)

La siguiente secuencia de comandos de la ventana de Python demuestra cómo utilizar la función SimplifyPolygon de modo inmediato.

import arcpy
import arcpy.cartography as CA
arcpy.env.workspace = "C:/data"
CA.SimplifyPolygon("soils.shp", "C:/output/output.gdb/simplified_soils", "POINT_REMOVE", 100)
Ejemplo 2 de SimplifyPolygon (script independiente)

La siguiente secuencia de comandos independiente muestra cómo utilizar la función SimplifyPolygon.

# Name: SimplifyPolygon_Example2.py
# Description: Eliminate small islands before simplifying and smoothing lake 
#              boundaries.

# Import system modules
import arcpy
import arcpy.management as DM
import arcpy.cartography as CA
 
# Set environment settings
arcpy.env.workspace = "C:/data/Portland.gdb/Hydrography"
 
# Set local variables
inLakeFeatures = "lakes"
eliminatedFeatures = "C:/data/PortlandOutput.gdb/lakes_eliminated"
simplifiedFeatures = "C:/data/PortlandOutput.gdb/lakes_simplified"
smoothedFeatures = "C:/data/PortlandOutput.gdb/lakes_smoothed"

# Eliminate small islands in lake polygons.
DM.EliminatePolygonPart(inLakeFeatures, eliminatedFeatures, 100, "OR", 0, 
                        "CONTAINED_ONLY")
 
# Simplify lake polygons
CA.SimplifyPolygon(eliminatedFeatures, simplifiedFeatures, "POINT_REMOVE", 50, 
                   200, "#", "KEEP_COLLAPSED_POINTS")

# Smooth lake polygons
CA.SmoothPolygon(simplifiedFeatures, smoothedFeatures, "PAEK", 100, 
                 "FLAG_ERRORS")

Información de licenciamiento

  • Basic: No
  • Standard: Sí
  • Advanced: Sí

Temas relacionados