Simplifier un polygone (Cartographie)

Synthèse

Simplifie les polygones en supprimant les sommets relativement extérieurs tout en conservant leur forme globale.

Illustration

Illustration de l’outil Simplifier un polygone
Des exemples de résultats des algorithmes de simplification sont présentés ici à titre de comparaison.

Utilisation

  • Cet outil utilise différents algorithmes de simplification répondant à des objectifs différents. Pour en savoir plus sur ces algorithmes, reportez-vous à Fonctionnement des outils Simplifier des lignes et Simplifier un polygone.

    Les options du paramètre Algorithme de simplification sont répertoriées ci-dessous.

    • L’algorithme Conserver les points critiques (Douglas-Peucker) ("POINT_REMOVE" dans Python) identifie et supprime les sommets relativement redondants afin de simplifier les données pour un affichage à des échelles plus petites. Il s’agit de l’algorithme de simplification le plus rapide dans cet outil. Cette option est souvent utilisée pour la compression des données ou pour une simplification grossière. L'angularité des contours polygonaux résultants augmente significativement au fur et à mesure que la tolérance s'accroît.
    • L’algorithme Conserver les courbes critiques (Wang-Müller) ("BEND_SIMPLIFY" dans Python) identifie et élimine les courbes relativement non significatives pour simplifier les données pour un affichage à des échelles plus petites. Il est généralement plus fidèle à la géométrie en entrée que l’algorithme Conserver les points critiques (Douglas-Peucker), mais son traitement peut prendre plus de temps.
    • L’algorithme Conserver les surfaces effectives pondérées (Zhou-Jones) ("WEIGHTED_AREA" en Python) identifie les triangles de la surface effective pour chaque sommet. Les triangles sont ensuite pondérés par un ensemble de mesures afin de comparer la platitude, l’inclinaison et la convexité de chaque surface. Les surfaces pondérées guident la suppression de leurs sommets correspondant pour simplifier le contour polygonal tout en conservant le plus de caractère possible.
    • L’algorithme Conserver les surfaces effectives (Visvalingam-Whyatt) ("EFFECTIVE_AREA" dans Python) identifie les triangles de surface effective de chaque sommet pour guider la suppression des sommets, ce qui permet de simplifier le contour du polygone tout en préservant au maximum son caractère.

  • La valeur du paramètre Tolérance de simplification détermine le degré de simplification. Plus la tolérance est grande, plus la géométrie finale est grossière. Des tolérances plus petites génèrent une géométrie qui représente l'entrée de manière plus précise. Les champs MinSimpTol et MaxSimpTol sont ajoutés à la sortie pour enregistrer la tolérance utilisée.

    • Pour l’algorithme Retain critical points (Douglas-Peucker) (Conserver les points critiques (Douglas-Peucker)), la tolérance est la distance perpendiculaire autorisée maximum entre chaque sommet et la nouvelle ligne créée.
    • Pour l'algorithme Conserver les courbes critiques (Wang-Müller), la tolérance est le diamètre d'un cercle qui avoisine une courbe significative.
    • Pour l’algorithme Retain weighted effective areas (Conserver les surfaces effectives pondérées) (Zhou-Jones), le carré de la tolérance est la surface d’un triangle significatif défini par trois sommets adjacents. Plus un triangle dévie de la forme équilatérale, plus la pondération attribuée est élevée et moins il est probable qu’il soit supprimé.
    • Pour l’algorithme Retain effective areas (Conserver les surfaces effectives) (Visvalingam-Whyatt), le carré de la tolérance est la surface d’un triangle significatif défini par trois sommets adjacents.

  • Les polygones dont la superficie est inférieure à la valeur du paramètre Surface minimale sont supprimés de la classe d’entités en sortie. Pour un groupe de polygones adjacents qui partagent des tronçons communs, la surface minimum s'applique à la superficie totale du groupe. Utilisez le paramètre Conserver les points éliminés pour conserver un enregistrement des polygones supprimés en tant qu'entités surfaciques.

  • Les polygones multi-parties sont simplifiés en tant que parties individuelles.

  • Utilisez le paramètre Conserver les points éliminés pour créer une classe d’entités ponctuelles en sortie afin d’enregistrer les points qui représentent tous les polygones supprimés parce qu’ils sont plus petits que la surface minimale. La sortie du point est dérivée ; elle utilisera le même nom et le même emplacement que la valeur du paramètre Classe d’entités en sortie, mais avec un suffixe _Pnt. La classe d’entités surfaciques en sortie contient tous les champs de la classe d’entités en entrée. La classe d’entités ponctuelles en sortie ne contient aucun de ces champs.

  • Les erreurs topologiques telles que des auto-intersections et des superpositions entre les entités peuvent se produire pendant la simplification de la géométrie. Le paramètre Traitement des erreurs topologiques propose trois options pour déterminer ce qu’il convient de faire en pareils cas :

    • Ne pas détecter les erreurs topologiques : les erreurs topologiques ne sont pas identifiées. Le traitement sera ainsi plus rapide. Utilisez cette option lorsque vous avez confiance dans la précision topologique des données.
    • Signaler les erreurs topologiques : les erreurs topologiques sont identifiées et signalées. La classe d’entités en sortie inclut les champs InPoly_FID et SimPgnFlag. Le champ InPoly_FID répertorie les ID d’entités en entrée. Le champ SimPgnFlag contient la valeur 1 lorsqu’une erreur topologique est présente ou la valeur 0 (zéro) en l’absence d’erreur.
    • Résoudre les erreurs topologiques : les erreurs topologiques ne sont pas créées dans la sortie et les erreurs qui existent dans l’entrée auront des sommets insérés aux points d’intersection. Les relations topologiques qui existent entre les entités telles que les tronçons partagés sont préservées. Le traitement sera plus long. La classe d’entités en sortie inclut les champs InPoly_FID et SimPgnFlag. Le champ InPoly_FID contient l’ID de l’entité en entrée. Les valeurs du champ SimPgnFlag sont les suivantes :
      • 0 = aucune erreur topologique n’est présente.
      • 1 = une erreur topologique est présente dans l’entrée.
      • 2 = l’entité a été fractionnée par une partition et les parties sont désormais inférieures à la surface minimale après simplification. Cet indicateur est susceptible de n’apparaître que sur une partie de l’entité fractionnée. Ces entités sont conservées dans la classe d’entités en sortie. Cela se produit lorsque le paramètre d’environnement Partitions cartographiques est utilisé.
    Héritage :

    Au cours de la résolution topologique, les versions précédentes de l’outil modifiaient la tolérance sur une base par entité, et enregistraient ces valeurs dans les champs MinSimpTol et MaxSimpTol. Dans l’implémentation actuelle, les valeurs de ces champs de tolérance seront identiques et égaux à la tolérance spécifiée dans le paramètre Tolérance de simplification. Veillez à modifier les modèles existants ou les scripts qui s’appuient sur ces champs.

  • Utilisez le paramètre Couches de barrière en entrée pour identifier les entités qui ne doivent pas être traversées par des polygones simplifiés. Les entités interruptions peuvent être des points, des lignes ou des polygones.

  • Les domaines et sous-types sont copiés vers la sortie, même si l’environnement Transférer les propriétés de champ de géodatabase n’est pas sélectionné.

  • Le traitement de jeux de données volumineux peut dépasser les limites de mémoire. Dans ce cas, envisagez de traiter les données en entrée par partition en identifiant une classe d'entités surfaciques pertinente dans le paramètre d'environnement Partitions cartographiques. Les portions des données, définies par les limites des partitions, sont traitées de façon séquentielles. Les classes d'entités en sortie résultantes seront transparentes et cohérentes au niveau des tronçons de partition. Reportez-vous à Généralisation de jeux de données volumineux à l'aide de partitions pour en savoir plus.

    Attention :

    Le paramètre d’environnement Partitions cartographiques est ignoré lorsque le paramètre Traitement des erreurs topologiques est défini sur Ne pas détecter les erreurs topologiques ou sur Signaler les erreurs topologiques.

Paramètres

ÉtiquetteExplicationType de données
Entités en entrée

Entités surfaciques en entrée qui seront simplifiées.

Feature Layer
Classe d’entités en sortie

Classe d'entités surfaciques en sortie simplifiée. Elle contient tous les champs de la classe d’entités en entrée. La classe d'entités surfaciques en sortie est correcte d'un point de vue topologique. L’outil n’introduit pas d’erreurs de topologie, mais les erreurs topologiques figurant dans les données en entrée sont signalées dans la classe d’entités surfaciques en sortie.

La classe d’entités en sortie inclut les champs InPoly_FID et SimPgnFlag qui contiennent respectivement les ID des entités en entrée et les erreurs topologiques ou les divergences en entrée.

Les valeurs attributaires SimPgnFlag sont les suivantes :

  • SimPgnFlag = 0 indique l’absence d’erreur.
  • SimPgnFlag = 1 indique la présence d’une erreur topologique.
  • SimPgnFlag = 2 indique que des entités ont été fractionnées par une partition et qu’elles ont désormais une surface inférieure à la surface minimum après simplification. Cet indicateur est susceptible de n’apparaître que sur une partie de l’entité fractionnée. Ces entités sont conservées dans la classe d’entités en sortie. Cette situation se produit uniquement lorsque le paramètre d’environnement Partitions cartographiques est utilisé.

Feature Class
Algorithme de simplification

Spécifie l’algorithme de simplification des polygones à utiliser.

  • Conserver les points critiques (Douglas-Peucker)Les points critiques qui préservent la forme essentielle d’un contour de polygone sont conservés, et tous les autres points sont supprimés (Douglas-Peucker). Il s’agit de l’option par défaut.
  • Conserver les courbes critiques (Wang-Müller)Les courbes critiques sont conservées, et les courbes superflues sont supprimées d’une ligne (Wang-Müller).
  • Conserver les surfaces effectives pondérées (Zhou-Jones)Conserve les sommets formant des triangles de surface effective qui ont été pondérés selon la forme du triangle (Zhou-Jones).
  • Conserver les surfaces effectives (Visvalingam-Whyatt)Conserve les sommets qui forment des triangles de surface effective (Visvalingam-Whyatt).
String
Tolérance de simplification

Degré de simplification à utiliser. Vous pouvez choisir une unité préférée ; sinon, les unités de l'entrée seront utilisées. Les champs MinSimpTol et MaxSimpTol sont ajoutés à la sortie pour enregistrer la tolérance qui a été utilisée lors du traitement.

  • Pour l’algorithme Retain critical points (Douglas-Peucker) (Conserver les points critiques (Douglas-Peucker)), la tolérance est la distance perpendiculaire autorisée maximum entre chaque sommet et la nouvelle ligne créée.
  • Pour l'algorithme Conserver les courbes critiques (Wang-Müller), la tolérance est le diamètre d'un cercle qui avoisine une courbe significative.
  • Pour l’algorithme Retain weighted effective areas (Conserver les surfaces effectives pondérées) (Zhou-Jones), le carré de la tolérance est la surface d’un triangle significatif défini par trois sommets adjacents. Plus un triangle dévie de la forme équilatérale, plus la pondération attribuée est élevée et moins il est probable qu’il soit supprimé.
  • Pour l’algorithme Retain effective areas (Conserver les surfaces effectives) (Visvalingam-Whyatt), le carré de la tolérance est la surface d’un triangle significatif défini par trois sommets adjacents.
Linear Unit
Superficie minimale
(Facultatif)

Superficie minimale pour qu'un polygone soit conservé. La valeur par défaut est de zéro, auquel cas tous les polygones sont conservés. Vous pouvez choisir une unité préférée pour la valeur précisée ; sinon, les unités de l’entrée seront utilisées.

Areal Unit
Traitement des erreurs topologiques
(Facultatif)

Précise la manière de traiter les erreurs topologiques. Les erreurs topologiques ont pu être introduites au cours du processus de simplification et peuvent inclure des croisements de lignes ou des superpositions de lignes.

  • Ne pas détecter les erreurs topologiquesLes erreurs topologiques ne seront pas identifiées. Il s’agit de l’option par défaut.
  • Signaler les erreurs topologiquesLes erreurs topologiques seront signalées.
  • Résoudre les erreurs topologiquesLes erreurs topologiques seront résolues.
String
Conserver les points éliminés
(Facultatif)

Indique si une classe d’entités ponctuelles en sortie est créée pour enregistrer les centres des polygones supprimés parce qu’ils sont plus petits que la valeur du paramètre Surface minimal. La sortie du point est dérivée ; elle utilisera le même nom et le même emplacement que la valeur du paramètre Classe d’entités en sortie, mais avec un suffixe _Pnt.

  • Activé : une classe d’entités ponctuelles en sortie dérivée sera créée pour enregistrer les centres des polygones supprimés car plus petits que la surface minimum. Il s’agit de l’option par défaut.
  • Désactivé : aucune classe d’entités ponctuelles en sortie dérivée ne sera créée.
Boolean
Couches de barrières en entrée
(Facultatif)

Les entrées contenant les entités jouant le rôle de barrières pour simplification. Les polygones simplifiés obtenus ne toucheront pas ni ne traverseront les entités interruptions. Par exemple, lors de la simplification des zones forestières, les polygones forestiers simplifiés résultants ne traversent pas les entités de route définies comme limites.

Feature Layer

Sortie obtenue

ÉtiquetteExplicationType de données
Polygones réduits en surface nulle

Lorsque le paramètre Conserver les points éliminés est activé pour créer une classe d’entités ponctuelles en sortie afin d’enregistrer les points qui représentent les polygones supprimés parce qu’ils sont plus petits que la surface minimale.

Feature Class

arcpy.cartography.SimplifyPolygon(in_features, out_feature_class, algorithm, tolerance, {minimum_area}, {error_option}, {collapsed_point_option}, {in_barriers})
NomExplicationType de données
in_features

Entités surfaciques en entrée qui seront simplifiées.

Feature Layer
out_feature_class

Classe d'entités surfaciques en sortie simplifiée. Elle contient tous les champs de la classe d’entités en entrée. La classe d'entités surfaciques en sortie est correcte d'un point de vue topologique. L’outil n’introduit pas d’erreurs de topologie, mais les erreurs topologiques figurant dans les données en entrée sont signalées dans la classe d’entités surfaciques en sortie.

La classe d’entités en sortie inclut les champs InPoly_FID et SimPgnFlag qui contiennent respectivement les ID des entités en entrée et les erreurs topologiques ou les divergences en entrée.

Les valeurs attributaires SimPgnFlag sont les suivantes :

  • SimPgnFlag = 0 indique l’absence d’erreur.
  • SimPgnFlag = 1 indique la présence d’une erreur topologique.
  • SimPgnFlag = 2 indique que des entités ont été fractionnées par une partition et qu’elles ont désormais une surface inférieure à la surface minimum après simplification. Cet indicateur est susceptible de n’apparaître que sur une partie de l’entité fractionnée. Ces entités sont conservées dans la classe d’entités en sortie. Cette situation se produit uniquement lorsque le paramètre d’environnement Partitions cartographiques est utilisé.

Feature Class
algorithm

Spécifie l’algorithme de simplification des polygones à utiliser.

  • POINT_REMOVELes points critiques qui préservent la forme essentielle d’un contour de polygone sont conservés, et tous les autres points sont supprimés (Douglas-Peucker). Il s’agit de l’option par défaut.
  • BEND_SIMPLIFYLes courbes critiques sont conservées, et les courbes superflues sont supprimées d’une ligne (Wang-Müller).
  • WEIGHTED_AREAConserve les sommets formant des triangles de surface effective qui ont été pondérés selon la forme du triangle (Zhou-Jones).
  • EFFECTIVE_AREAConserve les sommets qui forment des triangles de surface effective (Visvalingam-Whyatt).
String
tolerance

Degré de simplification à utiliser. Vous pouvez choisir une unité préférée ; sinon, les unités de l'entrée seront utilisées. Les champs MinSimpTol et MaxSimpTol sont ajoutés à la sortie pour enregistrer la tolérance qui a été utilisée lors du traitement.

  • Pour l’algorithme POINT_REMOVE, la tolérance est la distance perpendiculaire maximum autorisée entre chaque sommet et la nouvelle ligne créée.
  • Pour l'algorithme BEND_SIMPLIFY, la tolérance est le diamètre d'un cercle qui avoisine une courbe significative.
  • Pour l’algorithme WEIGHTED_AREA, le carré de la tolérance est la surface d’un triangle significatif défini par trois sommets adjacents. Plus un triangle dévie de la forme équilatérale, plus la pondération attribuée est élevée et moins il est probable qu’il soit supprimé.
  • Pour l’algorithme EFFECTIVE_AREA, le carré de la tolérance est la surface d’un triangle significatif défini par trois sommets adjacents.
Linear Unit
minimum_area
(Facultatif)

Superficie minimale pour qu'un polygone soit conservé. La valeur par défaut est de zéro, auquel cas tous les polygones sont conservés. Vous pouvez choisir une unité préférée pour la valeur précisée ; sinon, les unités de l’entrée seront utilisées.

Areal Unit
error_option
(Facultatif)

Précise la manière de traiter les erreurs topologiques. Les erreurs topologiques ont pu être introduites au cours du processus de simplification et peuvent inclure des croisements de lignes ou des superpositions de lignes.

  • NO_CHECKLes erreurs topologiques ne seront pas identifiées. Il s’agit de l’option par défaut.
  • FLAG_ERRORSLes erreurs topologiques seront signalées.
  • RESOLVE_ERRORSLes erreurs topologiques seront résolues.
String
collapsed_point_option
(Facultatif)

Indique si une classe d’entités ponctuelles en sortie sera créée pour enregistrer les centres des polygones supprimés car plus petits que la valeur du paramètre minimum_area. La sortie du point est dérivée ; elle utilisera le même nom et le même emplacement que la valeur du paramètre out_feature_class, mais avec un suffixe _Pnt.

  • KEEP_COLLAPSED_POINTSUne classe d’entités ponctuelles en sortie dérivée sera créée pour enregistrer les centres des polygones supprimés car plus petits que la surface minimum. Il s’agit de l’option par défaut.
  • NO_KEEPAucune classe d’entités ponctuelles en sortie dérivée ne sera créée.
Boolean
in_barriers
[in_barriers,...]
(Facultatif)

Les entrées contenant les entités jouant le rôle de barrières pour simplification. Les polygones simplifiés obtenus ne toucheront pas ni ne traverseront les entités interruptions. Par exemple, lors de la simplification des zones forestières, les polygones forestiers simplifiés résultants ne traversent pas les entités de route définies comme limites.

Feature Layer

Sortie obtenue

NomExplicationType de données
out_point_feature_class

Lorsque le paramètre collapsed_point_option est KEEP_COLLAPSED_ POINTS, une classe d’entités ponctuelles en sortie est créée afin d’enregistrer les points qui représentent les polygones supprimés parce qu’ils sont plus petits que la surface minimale.

Feature Class

Exemple de code

Exemple 1 d'utilisation de la fonction SimplifyPolygon (fenêtre Python)

Le script ci-dessous pour la fenêtre Python illustre l’utilisation de la fonction SimplifyPolygon en mode immédiat.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.cartography.SimplifyPolygon(
    "soils.shp", 
    "C:/output/output.gdb/simplified_soils", 
    "POINT_REMOVE", 
    100)
2ème exemple d'utilisation de l'outil Simplifier un polygone (script autonome)

Le script autonome ci-dessous illustre l’utilisation de la fonction SimplifyPolygon.

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

# Import system modules
import arcpy
 
# 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.
arcpy.management.EliminatePolygonPart(inLakeFeatures, eliminatedFeatures, 100, 
                                      "OR", 0, "CONTAINED_ONLY")
 
# Simplify lake polygons
arcpy.cartography.SimplifyPolygon(eliminatedFeatures, simplifiedFeatures, 
                                  "POINT_REMOVE", 50, 200, "#", 
                                  "KEEP_COLLAPSED_POINTS")

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

Informations de licence

  • Basic: Non
  • Standard: Oui
  • Advanced: Oui

Rubriques connexes