Simplifier des lignes (Cartographie)
Récapitulatif
Simplifie des lignes en supprimant les courbes superflues, tout en conservant la forme globale.
Illustration
Utilisation
Il existe deux méthodes de simplification :
- La méthode Supprimer un point est la plus rapide des deux processus. Elle supprime les sommets redondants. Utilisez cette méthode pour la compression de données ou une simplification plus grossière, notamment lorsque les données sont connues. L'angularité (angles aigus) de la ligne obtenue augmente de façon notable avec la tolérance, de sorte que l'aspect esthétique de la ligne risque de devenir moins satisfaisant.
- La méthode Simplifier une courbe est plus lente, mais génère habituellement des résultats plus fidèles à l'original et plus satisfaisants du point de vue esthétique. Elle opère en éliminant des courbes superflues le long des lignes. Recourez à cette méthode lorsque vous souhaitez une simplification moindre, 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, Supprimer un point produit un résultat plus approximatif et plus simplifié que Simplifier une courbe.
-
Cet outil génère deux classes d'entités en sortie : une classe d'entités linéaires pour stocker les lignes simplifiées et une classe d'entités ponctuelles pour stocker les points qui représentent des lignes éliminées de longueur nulle. Le nom et l'emplacement du point en sortie sont automatiquement dérivés du nom de la ligne en sortie, avec un suffixe _Pnt. La ligne en sortie contiendra tous les champs en entrée ; le point en sortie ne contiendra aucun des champs en entrée.
-
Plusieurs possibilités s'offrent à vous pour 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 cette option est activée, le paramètre Résoudre les erreurs topologiques l'est également. Le traitement est plus rapide sans vérification de la topologie, mais utilisez ce paramètre si vous n'avez pas confiance dans la précision topologique des données.
- La ligne en sortie contiendra deux nouveaux champs pour indiquer si une entité comporte une erreur topologique. InLine_FID et SimLnFlag contiennent respectivement les identifiants d'entités en entrée et les erreurs topologiques. Une valeur de 1 indique qu'une erreur est présente ; 0 (zéro) indique l'absence d'erreurs.
- Les valeurs de balise restent en place après qu'une erreur topologique a été résolue. 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 dans une session de mise à jour. Désactivez le paramètre Détecter les erreurs topologiques afin d'exécuter l'outil dans une session de mise à jour.
Syntaxe
Paramètre | Explication | Type de données |
in_features |
Entités linéaires à simplifier. | Feature Layer |
out_feature_class |
Classe d'entités linéaires en sortie à créer. | Feature Class |
algorithm |
Spécifie l'algorithme de simplification de lignes à utiliser.
| String |
tolerance |
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 a la valeur CHECK (par défaut).
| Boolean |
collapsed_point_option (Facultatif) |
Spécifie s'il faut conserver les lignes de longueur nulle éliminées en tant que points s'il en existe dans le processus. Cette option s'applique uniquement lorsque NO_CHECK est spécifié ou que les options FLAG_ERRORS et CHECK sont toutes les deux spécifiées.
| 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 ci-dessous illustre l'utilisation de 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)