Résumé
Lisse des angles aigus en contours de polygone pour améliorer la qualité esthétique ou cartographique.
Illustration
Utilisation
Deux méthodes de lissage sont disponibles :
- La méthode PAEK (Polynomial Approximation with Exponential Kernel, approximation polynomiale avec noyau exponentiel) (PAEK dans Python) lisse les polygones selon une tolérance de lissage. Chaque polygone lissé peut avoir davantage de sommets que son polygone source. Le paramètre Tolérance de lissage contrôle la longueur d'un chemin "mobile" qui sert à calculer les nouveaux sommets. Plus la longueur est courte, plus le niveau de détail est préservé et plus le temps de traitement est long.
- La méthode Bezier interpolation (Interpolation de Bézier) (BEZIER_INTERPOLATION dans Python) lisse les polygones sans faire appel à une tolérance. Elle crée des courbes de Bézier évaluées qui correspondent aux polygones en entrée.
Utilisez le paramètre Input barrier layers (Couches d’interruptions en entrée) pour identifier les entités qui ne doivent pas être traversées par des polygones lissés. Les entités interruptions peuvent être des points, des lignes ou des polygones.
Le traitement de jeux de données volumineux peut dépasser les limites de la mémoire. Dans ces 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 séquentiellement. La classe d'entités résultante sera transparente et cohérente aux tronçons de partition. Reportez-vous à la rubrique Généralisation de jeux de données volumineux à l’aide de partitions pour en savoir plus.
La classe d'entités linéaires en sortie est correcte d'un point de vue topologique. Toute erreur topologique dans les données en entrée son signalées dans la classe d'entités linéaires en sortie. La classe d’entités en sortie inclut deux champs supplémentaires : InPoly_FID et SmoPgnFlag qui contiennent respectivement les ID des entités en entrée et les erreurs topologiques de l’entrée. Une valeur SmoPgnFlag de 1 indique une erreur topologique ; 0 (zéro) indique aucune erreur.
Syntaxe
SmoothPolygon_cartography (in_features, out_feature_class, algorithm, tolerance, {endpoint_option}, {error_option}, {in_barriers})
Paramètre | Explication | Type de données |
in_features | Entités surfaciques à lisser. | Feature Layer |
out_feature_class | Classe d'entités surfaciques en sortie à créer. | Feature Class |
algorithm | Spécifie l'algorithme de lissage.
| String |
tolerance | Définit la tolérance utilisée par l’algorithme PAEK. Une tolérance supérieure à zéro doit être spécifiée. Vous pouvez spécifier une unité préférée. Par défaut, l'unité de l'entité est spécifiée. Si vous utilisez l'algorithme de lissage BEZIER_INTERPOLATION, vous devez entrer un 0 comme valeur de remplissage. | Linear Unit |
endpoint_option (Facultatif) | Il s'agit d'un ancien paramètre qui n'est plus utilisé. Il était auparavant utilisé pour indiquer si l’extrémité d’un anneau surfacique isolé devait être conservée. Ce paramètre est encore inclus dans la syntaxe de l'outil pour la compatibilité des scripts et des modèles, mais est désormais ignoré et masqué à partir de la boîte de dialogue de l'outil. Indique s’il faut conserver ou non l’extrémité des anneaux surfaciques isolés. Cette option est valide uniquement avec l'algorithme PAEK.
| Boolean |
error_option (Facultatif) | Il s'agit d'un ancien paramètre qui n'est plus utilisé. Il était auparavant utilisé pour indiquer la façon dont les erreurs topologiques, éventuellement introduites lors du traitement, étaient gérées. Ce paramètre est encore inclus dans la syntaxe de l'outil pour la compatibilité des scripts et des modèles, mais est désormais ignoré et masqué à partir de la boîte de dialogue de l'outil. Précise la manière de traiter les erreurs topologiques (qui ont pu s’introduire au cours du processus, notamment les croisements et les superpositions de lignes).
| String |
in_barriers [in_barriers,...] (Facultatif) | Entrées contenant les entités qui jouent le rôle d’interruptions pour le lissage. Les polygones lissés obtenus ne touchent pas ni ne traversent les entités interruptions. | Feature Layer |
Exemple de code
Exemple d'utilisation de l'outil SmoothPolygon (Fenêtre Python)
Le script de fenêtre Python suivant montre comment utiliser l'outil SmoothPolygon en mode immédiat.
import arcpy
import arcpy.cartography as CA
arcpy.env.workspace = "C:/data"
CA.SmoothPolygon("soils.shp", "C:/output/output.gdb/smoothed_soils", "PAEK", 100)
Exemple 2 d'utilisation de l'outil SmoothPolygon (script autonome)
Le script autonome suivant illustre l'utilisation de l'outil SmoothPolygon.
# Name: SmoothPolygon_Example2.py
# Description: Eliminate small islands before simplifying and smoothing lake boundaries
# Import system modules
import arcpy
import arcpy.cartography as CA
import arcpy.management as DM
# Set environment settings
arcpy.env.workspace = "C:/data/Portland.gdb/Hydrography"
# Set local variables
inLakeFeatures = "lakes"
barriers = "C:/data/Portland.gdb/Structures/buildings"
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, "RESOLVE_ERRORS", "KEEP_COLLAPSED_POINTS", barriers)
# Smooth lake polygons.
CA.SmoothPolygon(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "",
"FLAG_ERRORS", barriers)
Environnements
Informations de licence
- ArcGIS Desktop Basic: Non
- ArcGIS Desktop Standard: Oui
- ArcGIS Desktop Advanced: Oui
Rubriques connexes
- Vue d'ensemble du jeu d'outils Généralisation
- Comprendre la résolution des conflits et leur généralisation
- Automatisation de la résolution des conflits et workflows de généralisation avec le géotraitement
- Lisser des lignes
- Simplifier un polygone
- Généralisation de grands jeux de données à l'aide de partitions