Résumé
Lisse des angles vifs en lignes afin d'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) (PAEK dans Python) lisse les lignes selon une tolérance de lissage. Chaque ligne lissée peut avoir plus de sommets que sa ligne 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 Interpolation de Bézier (BEZIER_INTERPOLATION dans Python) lisse les lignes 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 lignes qui se croisent. Utilisez l'option Signaler les erreurs (FLAG_ERRORS dans Python) du paramètre Détecter les erreurs topologiques pour identifier ces erreurs. Deux champs seront ajoutés, InLine_FID et SmoLnFlag, dans lesquels seront indiqués les identifiants d'entité et les erreurs topologiques. La valeur 1 dans le champ SmoLnFlag indique une erreur topologique ; la valeur 0 (zéro) indique l'absence d'erreur. Le champ InLineFID relie les lignes en sortie à leurs lignes en entrée. L'option Signaler les erreurs 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 une ligne s'entrecoupe, elle sera transformée en ligne multi-parties, mais apparaîtra toujours comme s'entrecoupant.
Syntaxe
SmoothLine_cartography (in_features, out_feature_class, algorithm, tolerance, {endpoint_option}, {error_option})
Paramètre | Explication | Type de données |
in_features | Entités lignes à lisser. | Feature Layer |
out_feature_class | Classe d'entités 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 choisir 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 0 comme espace réservé. | Linear Unit |
endpoint_option (Facultatif) | Indique s'il faut conserver l'extrémité des lignes fermé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 de lignes).
| String |
Exemple de code
Exemple d'utilisation de l'outil SmoothLine (Fenêtre Python)
Le script de fenêtre Python suivant montre comment utiliser l'outil SmoothLine en mode immédiat.
import arcpy
import arcpy.cartography as CA
arcpy.env.workspace = "C:/data"
CA.SmoothLine("contours.shp", "C:/output/output.gdb/smoothed_contours", "PAEK", 100)
Exemple 2 d'utilisation de l'outil SmoothLine (script autonome)
Le script autonome suivant illustre l'utilisation de l'outil SmoothLine.
# Name: SmoothLine_Example2.py
# Description: Simplify and then Smooth coastlines
# Import system modules
import arcpy
import arcpy.cartography as CA
# Set environment settings
arcpy.env.workspace = "C:/data/Portland.gdb/Hydrography"
# Set local variables
inCoastlineFeatures = "coastlines"
simplifiedFeatures = "C:/data/PortlandOutput.gdb/coastlines_simplified"
smoothedFeatures = "C:/data/PortlandOutput.gdb/coastlines_smoothed"
# Simplify coastlines.
CA.SimplifyLine(inCoastlineFeatures, simplifiedFeatures, "POINT_REMOVE", 50, "RESOLVE_ERRORS", "KEEP_COLLAPSED_POINTS", "CHECK")
# Smooth coastlines.
CA.SmoothLine(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "", "FLAG_ERRORS")
Environnements
Informations de licence
- ArcGIS Desktop Basic: Non
- ArcGIS Desktop Standard: Oui
- ArcGIS Desktop Advanced: Oui