Lisser un polygone (Cartographie)
Récapitulatif
Lisse des angles vifs en contours de polygone pour améliorer la qualité esthétique ou cartographique.
Illustration
Utilisation
-
Vous avez le choix entre deux méthodes de lissage :
- La méthode PAEK (Polynomial Approximation with Exponential Kernel, approximation polynomiale avec noyau exponentiel) lisse des 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 lisse les polygones sans faire appel à une tolérance. Elle crée des courbes de Bézier qui correspondent aux lignes en entrée. Si la sortie est un fichier de formes, les courbes de Bézier seront approximatives, car les vraies courbes de Bézier ne peuvent pas être stockées dans des fichiers de formes.
-
Le lissage peut introduire des erreurs topologiques, telles que des contours de polygone qui se croisent. Utilisez l'option FLAG_ERRORS du paramètre Détecter les erreurs topologiques pour identifier ces erreurs. Deux champs seront ajoutés, InPoly_FID et InPoly_FID, dans lesquels seront indiqués les identifiants d'entité et les erreurs topologiques. La valeur 1 dans le champ SmoPlyFlag indique une erreur topologique ; la valeur 0 (zéro) indique l'absence d'erreur. Le champ InPoly_FID relie les polygones en sortie à leurs polygones en entrée. L'option FLAG_ERRORS ne peut pas être utilisée dans une session de mise à jour.
-
Il se peut qu'une géométrie non valide (qui s'entrecoupe) soit créée pendant le processus de lissage. Celle-ci sera réparée, mais non améliorée. Par exemple, si un polygone s'entrecoupe, il sera transformé en polygone multi-parties, mais apparaîtra toujours comme s'entrecoupant.
Syntaxe
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) |
Spécifie s'il faut conserver ou non les extrémités des boucles de polygone isolées. Cette option est valide uniquement avec l'algorithme PAEK.
| Boolean |
error_option (Facultatif) |
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 |
Exemple de code
Le script de fenêtre Python ci-dessous illustre l'utilisation de l'outil SmoothPolygon en mode immédiat.
import arcpy
from arcpy import env
import arcpy.cartography as CA
env.workspace = "C:/data"
CA.SmoothPolygon("soils.shp", "C:/output/output.gdb/smoothed_soils", "PAEK", 100)
Le script autonome ci-dessous explique comment utiliser l'outil SmoothPolygon.
# Name: SmoothPolygon_Example2.py
# Description: Eliminate small islands before simplifying and smoothing lake boundaries
# Import system modules
import arcpy
from arcpy import env
import arcpy.cartography as CA
import arcpy.management as DM
# Set environment settings
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, "RESOLVE_ERRORS", "KEEP_COLLAPSED_POINTS", "CHECK")
# Smooth lake polygons.
CA.SmoothPolygon(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "", "FLAG_ERRORS")