Linie vereinfachen (Cartography)
Zusammenfassung
Hiermit wird eine Linie durch Entfernen unwesentlicher Biegungen vereinfacht, behält aber die wesentliche Form bei.
Weitere Informationen zur Funktionsweise des Befehls "Linie vereinfachen"
Abbildung
Verwendung
Es gibt zwei Vereinfachungsmethoden:
- Die Methode point remove ist die schnellere der beiden. Mit ihr werden überflüssige Stützpunkte entfernt. Verwenden Sie diese Methode für die Datenkomprimierung oder eine etwas gröbere Vereinfachung. Dies bietet sich vor allem an, wenn die Daten bekannt sind. Die entstehende Linie weist mit zunehmender Toleranz jedoch deutlich mehr Winkel (scharfe Ecken) auf, sodass sie unter Umständen nicht mehr besonders ästhetisch aussieht.
- Die Methode bend simplify ist langsamer, aber erzeugt Ergebnisse, die dem Original ähnlicher sind und außerdem ästhetisch ansprechender sind. Bei dieser Methode werden unbedeutende Biegungen an den Linien entfernt. Verwenden Sie diese Methode für eine geringere, aber feinere Vereinfachung.
Der Grad der Vereinfachung wird durch die Vereinfachungstoleranz bestimmt. Legen Sie für die Toleranz einen Wert fest, der größer oder gleich dem minimal zulässigen Abstand zwischen grafischen Elementen ist. Bei gleicher Toleranz ist das Ergebnis von point remove gröber und stärker vereinfacht als das von bend simplify.
-
Das Werkzeug erzeugt zwei Ausgabe-Feature-Classes: Eine Line-Feature-Class zum Speichern der vereinfachten Linien und eine Point-Feature-Class zum Speichern der Punkte, die Linien wiedergeben, die auf eine Länge von Null reduziert wurden. Der Ausgabename und das Ausgabeverzeichnis der Punkte werden automatisch vom Ausgabe-Linienamen abgeleitet mit dem Suffix _Pnt. Die Linienausgabe enthält alle Eingabefelder, die Punktausgabe enthält keine der Eingabefelder.
-
Es bestehen Optionen zum Behandeln der topologischen Fehler in der Ausgabe:
- Mit dem Parameter Auf topologische Fehler überprüfen werden topologische Fehler identifiziert, die beim Vereinfachungsprozess entstanden sind. Wenn die Option aktiviert ist, ist der Parameter Topologische Fehler lösen auch aktiviert. Die Verarbeitung ist schneller ohne Topologieprüfung, aber Sie sollten diesen Parameter verwenden, wenn Sie der topologischen Genauigkeit der Daten nicht trauen.
- Die Linienausgabe enthält zwei neue Felder, die angeben, ob ein Feature einen topologischen Fehler aufweist oder nicht. Die Felder InLine_FID und SimLnFlag enthalten die Eingabe-Feature-IDs bzw. die topologischen Fehler. Ein Wert von 1 gibt an, dass ein Fehler aufgetreten ist, während 0 (Null) darauf hinweist, dass keine Fehler vorhanden sind.
- Die Flag-Werte bleiben bestehen, nachdem ein topologischer Fehler entfernt wurde. Über das Feld SimLnFlag können Sie die Features prüfen, die topologische Fehler aufweisen.
-
Die Parameter Auf topologische Fehler überprüfen und Topologische Fehler lösen können nicht innerhalb einer Editiersitzung verwendet werden. Deaktivieren Sie den Parameter Auf topologische Fehler überprüfen, um das Werkzeug innerhalb einer Editiersitzung auszuführen.
Syntax
Parameter | Erläuterung | Datentyp |
in_features |
Die zu vereinfachenden Linien-Features. | Feature Layer |
out_feature_class |
Die zu erstellende Ausgabe-Line-Feature-Class. | Feature Class |
algorithm |
Dadurch wird der Algorithmus für die Linienvereinfachung festgelegt.
| String |
tolerance |
Der Grad der Vereinfachung wird durch die Toleranz bestimmt. Die Toleranz muss angegeben und größer als Null sein. Sie können eine bevorzugte Einheit auswählen. Standardmäßig wird die Feature-Einheit verwendet.
| Linear unit |
error_resolving_option (optional) |
Festlegung, wie (möglicherweise durch den Vorgang entstandene) topologische Fehler, wie z. B. sich schneidende, überlappende oder zusammengefasste Linien mit der Länge Null, behandelt werden. Dieser Parameter wird verwendet, wenn "error_checking_option" auf CHECK festgelegt wurde (Standardwert).
| Boolean |
collapsed_point_option (optional) |
Legt fest, ob während des Vorgangs ermittelte zusammengefasste Linien mit der Länge Null beibehalten werden. Diese Option wird nur berücksichtigt, wenn NO_CHECK angegeben wurde oder sowohl FLAG_ERRORS als auch CHECK angegeben wurden.
| Boolean |
error_checking_option (optional) |
Festlegung, wie (möglicherweise durch den Vorgang entstandene) topologische Fehler, wie z. B. sich schneidende, überlappende oder zusammengefasste Linien mit der Länge Null, behandelt werden.
| Boolean |
Codebeispiel
Mit dem folgenden Skript im Python-Fenster wird veranschaulicht, wie Sie das Werkzeug "SimplifyLine" im unmittelbaren Modus verwenden.
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)
Mit dem folgenden eigenständigen Skript wird veranschaulicht, wie das Werkzeug "SimplifyLine" verwendet wird.
# 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)