Simplifier des lignes (Cartographie)
Récapitulatif
Simplifie les lignes en supprimant les courbes superflues tout en conservant leur forme globale.
Illustration
Utilisation
Il existe deux méthodes de simplification :
- La méthode de suppression de points est plus rapide mais moins affinée. Elle permet de supprimer les sommets redondants. Utilisez cette méthode pour la compression de données ou une simplification plus grossière. L'angularité de la ligne obtenue augmente de manière significative avec l'accroissement de la tolérance, de sorte qu'il est possible que le résultat soit esthétiquement moins satisfaisant que l'entrée.
- La méthode de simplification des courbes est plus lente mais produit généralement des résultats plus fidèles aux entités d'origine. Elle fonctionne en éliminant les courbes insignifiantes le long des lignes. Utilisez cette méthode pour une simplification plus affinée.
La valeur de tolérance de simplification détermine le degré de simplification. Définissez la tolérance sur une valeur supérieure ou égale à l'espacement admissible minimal entre les éléments graphiques. A tolérance égale, la méthode de suppression des points produit un résultat plus approximatif et plus simplifié que la méthode de simplification des courbes.
-
L'outil génère deux classes d'entités en sortie : une classe d'entités linéaires qui permet de stocker les lignes simplifiées et une classe d'entités points qui permet de stocker les points représentant les lignes réduites à une longueur de zéro. Le nom et l'emplacement en sortie du point découlent automatiquement du nom de ligne en sortie, auquel un suffixe _Pnt a été ajouté. La classe d'entités linéaires en sortie contient tous les champs présents dans la classe d'entités en entrée. La classe d'entités points en sortie ne contient aucun de ces champs.
-
Des options permettent de gérer les erreurs topologiques dans la sortie :
- Le paramètre Détecter les erreurs topologiques identifie les erreurs topologiques introduites par le processus de simplification. Lorsque l'option est sélectionnée, le paramètre Résoudre les erreurs topologiques est également activé. La détection des erreurs topologiques peut ralentir la vitesse de traitement.
- La classe d'entités linéaires en sortie possède deux champs qui indiquent si une entité comporte ou non une erreur topologique. InLine_FID et SimLnFlag contiennent les ID des entités en entrée et les erreurs topologiques, respectivement. La valeur 1 indique qu'une erreur a été introduite et la valeur 0 (zéro) indique qu'aucune erreur n'a été introduite.
- Les valeurs d'indication restent en place après la résolution d'une erreur topologique. Utilisez le champ SimLnFlag pour examiner les entités qui comportent des erreurs topologiques.
-
Les paramètres Détecter les erreurs topologiques et Résoudre les erreurs topologiques ne peuvent pas être utilisés au sein d'une session de mise à jour. Désactivez le paramètre Détecter les erreurs topologiques afin d'exécuter l'outil au sein d'une session de mise à jour.
Syntaxe
Paramètre | Explication | Type de données |
in_features |
Les entités lignes à simplifier. | Feature Layer |
out_feature_class |
La classe d'entités lignes en sortie à créer. | Feature Class |
algorithm |
Spécifie l'algorithme de simplification de lignes.
| String |
tolerance |
La tolérance qui détermine le degré de simplification. 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.
| Linear unit |
error_resolving_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, les superpositions de lignes et les lignes de longueur nulle éliminées). Ce paramètre entre en vigueur lorsque error_checking_option est positionné sur CHECK (par défaut).
| Boolean |
collapsed_point_option (Facultatif) |
Indique s'il convient, le cas échéant, de conserver ou non les lignes de longueur nulle éliminées comme des points. Ce paramètre ne s'applique que lorsque l'option NO_CHECK est spécifiée ou que sont sélectionnées les options FLAG_ERRORS et CHECK.
| Boolean |
error_checking_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, les superpositions de lignes et les lignes de longueur nulle éliminées).
| Boolean |
Exemple de code
Le script de fenêtre Python suivant montre comment utiliser l'outil SimplifyLine en mode immédiat.
import arcpy
from arcpy import env
import arcpy.cartography as CA
env.workspace = "C:/data"
CA.SimplifyLine("roads.shp",
"C:/output/output.gdb/simplified_roads",
"POINT_REMOVE",
20)
Le script autonome ci-dessous explique comment utiliser l'outil SimplifyLine.
# Name: SimplifyLine_Example2.py
# Description: Simplify line features from two feature classes, rivers and coastlines,
# while maintaining their connections
# Import system modules
import arcpy
from arcpy import env
import arcpy.management as DM
import arcpy.cartography as CA
# Set environment settings
env.workspace = "C:/data/Portland.gdb/Hydrography"
# Set local variables
inRiverFeatures = "rivers"
inCoastlineFeatures = "coastlines"
mergedFeatures = "C:/data/PortlandOutput.gdb/merged_lines"
simplifiedFeatures = "C:/data/PortlandOutput.gdb/merged_lines_simplified"
tempLayer = "tempLyr"
outRiverFeatureClass = "C:/data/PortlandOutput.gdb/rivers_final"
outCoastlineFeatureClass = "C:/data/PortlandOutput.gdb/coastlines_final"
# Merge rivers and coastlines into one feature class,
# assuming that they have a common f-code field
# with value 40 for rivers and 80 for coastlines.
DM.Merge(inRiverFeatures, inCoastlineFeatures, mergedFeatures)
# Simplify all lines.
CA.SimplifyLine(mergedFeatures,
simplifiedFeatures,
"BEND_SIMPLIFY",
100,
"RESOLVE_ERRORS",
"KEEP_COLLAPSED_POINTS",
"CHECK")
# Select rivers and coastlines by their f-code values
# and put them in separate feature classes.
DM.MakeFeatureLayer(simplifiedFeatures, tempLayer, "f-code = 40")
DM.CopyFeatures(tempLayer, outRiverFeatureClass)
DM.MakeFeatureLayer(simplifiedFeatures, tempLayer, "f-code = 80")
DM.CopyFeatures(tempLayer, outCoastlineFeatureClass)