Skip To Content

Linie vereinfachen

Zusammenfassung

Hiermit werden Linien durch Entfernen relativ unwesentlicher Stützpunkte vereinfacht, behalten aber die wesentliche Form bei.

Weitere Informationen zur Funktionsweise von Linie vereinfachen und Polygon vereinfachen

Abbildung

Ein Vergleich der drei vom Werkzeug "Linie vereinfachen" verwendeten Vereinfachungsalgorithmen

Verwendung

  • Dieses Werkzeug stellt unterschiedliche Vereinfachungsalgorithmen für verschiedene Zwecke bereit:

    • Der Algorithmus Kritische Punkte beibehalten (Douglas-Peucker) (algorithm='POINT_REMOVE' in Python) identifiziert und entfernt relativ überflüssige Stützpunkte, um die Daten für die Anzeige in kleineren Maßstäben zu vereinfachen. Er ist der schnellste der Vereinfachungsalgorithmen in diesem Werkzeug. Er wird häufig zur Datenkomprimierung oder für eine grobere Vereinfachung verwendet. Die entstehenden Linien weisen mit zunehmender Toleranz deutlich mehr Winkel auf. Dieser Algorithmus basiert auf dem Douglas-Peucker-Algorithmus: Douglas, David and Peucker, Thomas, "Algorithms for the reduction of the number of points required to represent a digitized line or its caricature," The Canadian Cartographer. 10(2), 112–22 (1973).
    • Der Algorithmus Kritische Biegungen beibehalten (Wang-Müller) (algorithm='BEND_SIMPLIFY' in Python) identifiziert und entfernt relativ unbedeutende Biegungen, um die Daten für die Anzeige in kleineren Maßstäben zu vereinfachen. Er gibt die Eingabe-Geometrie in der Regel wirklichkeitsgetreuer wieder als der Algorithmus Kritische Punkte beibehalten (Douglas-Peucker), kann jedoch mehr Zeit für die Bearbeitung in Anspruch nehmen. Dieser Algorithmus basiert auf dem in Wang, Zeshen and Müller, Jean-Claude, "Line Generalization Based on Analysis of Shape Characteristics," Cartography and Geographic Information Systems 25(1), 3–15 (1998) definierten Algorithmus.
    • Der Algorithmus Gewichtete effektive Flächen beibehalten (Zhou-Jones) (algorithm='WEIGHTED_AREA' in Python) identifiziert zuerst Dreiecke einer effektiven Fläche für jeden Stützpunkt. Anschließend erfolgt anhand mehrerer Kennwerte eine Gewichtung der ermittelten Dreiecke nach Flachheit, Schiefe und Krümmung der jeweiligen Fläche. Die gewichteten Flächen bestimmen die Entfernung ihrer entsprechenden Stützpunkte, um die Linie zu vereinfachen, während so viele Eigenschaften wie möglich beibehalten werden. Dieser Algorithmus basiert auf dem in Zhou, Sheng and Jones, Christopher B., (2005) "Shape-Aware Line Generalisation with Weighted Effective Area" in Fisher, Peter F. (Ed.) Developments in Spatial Handling 11th International Symposium on Spatial Handling, 369–80, definierten Algorithmus.

  • Der Grad der Vereinfachung wird durch den Wert des Parameters Vereinfachungstoleranz bestimmt. Je größer die Toleranz, desto grober ist die resultierende Geometrie. Kleinere Toleranzen erzeugen eine Geometrie, die die Eingabe wirklichkeitsgetreuer wiedergibt. MinSimpTol und MaxSimpTol-Felder werden der Ausgabe hinzugefügt, um die verwendete Toleranz zu speichern.

    Ältere Versionen:

    Außerdem haben Versionen des Werkzeugs vor ArcGIS Pro 1.4 im Verlauf der Topologieauflösung Toleranzen pro Feature geändert und diese Werte in den Feldern MinSimpTol und MaxSimpTol gespeichert. In der aktuellen Implementierung sind nun die Werte in diesen Feldern identisch mit und gleich der Toleranz, die im Parameter Vereinfachungstoleranz angegeben wird. Ändern Sie vorhandene Modelle oder Skripte, die auf einem dieser Felder basieren.

    • Beim Algorithmus Kritische Punkte beibehalten (Douglas-Peucker) ist die Toleranz der maximal zulässige senkrechte Abstand zwischen jedem Stützpunkt und der neu erstellten Linie.
    • Beim Algorithmus Kritische Biegungen beibehalten (Wang-Müller) ist die Toleranz der Durchmesser eines Kreises, der sich einer signifikanten Biegung annähert.
    • Beim Algorithmus Gewichtete effektive Flächen beibehalten (Zhou-Jones) ist das Quadrat der Toleranz die Fläche eines signifikanten Dreieckes, das von drei aneinander grenzenden Stützpunkten definiert wird.

  • Verwenden Sie den Parameter Zusammengefasste Punkte beibehalten (collapsed_point_option in Python), um eine Ausgabe-Point-Feature-Class zum Speichern der Endpunkte von Linien zu erstellen, die kleiner sind als die räumliche Toleranz der Daten. Die Punktausgabe wird abgeleitet. Sie verwendet den gleichen Namen und die gleiche Position wie die Ausgabe-Feature-Class (out_feature_class in Python), jedoch mit einem _Pnt-Suffix. Die Ausgabe-Line-Feature-Class enthält alle Felder, die in der Eingabe-Feature-Class vorhanden sind. Die Ausgabe-Point-Feature-Class enthält keines dieser Felder.

  • Die Ausgabe-Line-Feature-Class ist topologisch korrekt. Alle topologischen Fehler in den Eingabedaten werden in der Ausgabe-Line-Feature-Class gekennzeichnet. Die Ausgabe-Feature-Class umfasst zwei zusätzliche Felder: InLine_FID und SimLnFlag, die die Eingabe-Feature-IDs bzw. topologischen Fehler der Eingabe enthalten. Ein SimLnFlag-Wert von 1 gibt an, dass ein topologischer Fehler vorliegt. 0 (Null) gibt an, dass keine Fehler vorhanden sind.

    Ältere Versionen:

    Vor der Version ArcGIS Pro 1.4 dieses Werkzeugs konnten topologische Fehler bei der Verarbeitung erzeugt werden. Die Parameter Auf topologische Fehler überprüfen (error_checking_option in Python) und Topologische Fehler lösen (error_resolving_option in Python) wurden hinzugefügt, um diese Fehler zu identifizieren und optional zu beheben. Diese Parameter sind in der Syntax des Werkzeugs für Kompatibilität in Skripten und Modellen nach wie vor enthalten, werden aber nun ignoriert und aus dem Dialogfeld des Werkzeugs ausgeblendet. Das Feld SimLnFlag wurde verwendet, um topologische Fehler zu kennzeichnen, die vom Werkzeug bei der Verarbeitung verursacht wurden. Nun kennzeichnet dieses Feld Fehler, die in der Eingabe vorhanden waren.

  • Verwenden Sie den Parameter Eingabe-Barriere-Layer zum Identifizieren von Features, die nicht von vereinfachten Linien gekreuzt werden dürfen. Als Barrieren-Features können Punkte, Linien oder Polygone verwendet werden.

  • Domänen und Subtypes werden auch dann in die Ausgabe kopiert, wenn die Umgebungseinstellung Felddomäne, Subtypes und Attributregeln übertragen deaktiviert ist.

  • Bei Verarbeitung von großen Datasets werden möglicherweise Speicherbeschränkungen überschritten. Erwägen Sie in solchen Fällen, die Eingabedaten partitionsweise zu verarbeiten, indem Sie eine relevante Polygon-Feature-Class in der Umgebungseinstellung Kartografische Partitionen angeben. Die Teile der Daten, die durch Partitionsgrenzen definiert werden, werden sequenziell verarbeitet. Die sich ergebende Feature-Class ist an den Partitionsrändern nahtlos und konsistent. Weitere Informationen erhalten Sie unter Generalisieren von großen Datasets mit Partitionen.

Syntax

SimplifyLine_cartography (in_features, out_feature_class, algorithm, tolerance, {error_resolving_option}, {collapsed_point_option}, {error_checking_option}, {in_barriers})
ParameterErläuterungDatentyp
in_features

Die Eingabe-Linien-Features, die vereinfacht werden sollen.

Feature Layer
out_feature_class

Die vereinfachte Ausgabe-Line-Feature-Class. Sie enthält alle Felder, die in der Eingabe-Feature-Class vorhanden sind. Die Ausgabe-Line-Feature-Class ist topologisch korrekt. Das Werkzeug verursacht keine Topologiefehler, topologische Fehler in den Eingabedaten werden jedoch in der Ausgabe-Line-Feature-Class gekennzeichnet. Die Ausgabe-Feature-Class umfasst zwei zusätzliche Felder: InLine_FID und SimLnFlag, die die Eingabe-Feature-IDs bzw. topologischen Fehler der Eingabe enthalten. Ein SimLnFlag-Wert von 1 gibt an, dass ein topologischer Fehler bei der Eingabe vorliegt. 0 (Null) gibt an, dass kein Eingabefehler vorhanden ist.

Feature Class
algorithm

Dadurch wird der Algorithmus für die Linienvereinfachung festgelegt.

  • POINT_REMOVE Behält so genannte kritische Punkte bei, die die wesentliche Form einer Linie beibehalten. Alle anderen Punkte werden entfernt. Dies ist die Standardeinstellung.
  • BEND_SIMPLIFY Behält die kritischen Biegungen bei, und entfernt unwesentliche Biegungen von einer Linie.
  • WEIGHTED_AREA Behält Stützpunkte bei, die Dreiecke der effektiven Fläche bilden.
String
tolerance

Der Grad der Vereinfachung wird durch die Toleranz bestimmt. Sie können eine bevorzugte Einheit auswählen. Anderenfalls werden die Einheiten der Eingabe verwendet. MinSimpTol und MaxSimpTol-Felder werden zur Ausgabe hinzugefügt, um die Toleranz zu speichern, die bei der Verarbeitung verwendet wurde.

  • Beim Algorithmus POINT_REMOVE ist die Toleranz der maximal zulässige senkrechte Abstand zwischen jedem Stützpunkt und der neu erstellten Linie.
  • Beim Algorithmus BEND_SIMPLIFY ist die Toleranz der Durchmesser eines Kreises, der sich einer signifikanten Biegung annähert.
  • Beim Algorithmus WEIGHTED_AREA ist das Quadrat der Toleranz die Fläche eines signifikanten Dreieckes, das von drei aneinander grenzenden Stützpunkten definiert wird.
Linear Unit
error_resolving_option
(optional)
Ältere Versionen:

Dies ist ein älterer Parameter, der nicht mehr verwendet wird. Er wurde früher verwendet, um zu bestimmen, wie topologische Fehler, die möglicherweise bei der Verarbeitung verursacht wurden, behandelt werden. Dieser Parameter ist in der Syntax des Werkzeugs für Kompatibilität in Skripten und Modellen nach wie vor enthalten, wird aber aus dem Dialogfeld des Werkzeugs ausgeblendet.

Boolean
collapsed_point_option
(optional)

Bestimmt, ob eine Ausgabe-Point-Feature-Class zum Speichern der Endpunkte aller Linien zu erstellt wird, die kleiner als die räumliche Toleranz sind. Die Punktausgabe wird abgeleitet. Sie verwendet den gleichen Namen und die gleiche Position wie die out_feature_class, jedoch mit einem _Pnt-Suffix.

  • KEEP_COLLAPSED_POINTSZeichnen Sie die Endpunkte der Linien mit der Länge 0 in einer abgeleiteten Ausgabe-Point-Feature-Class auf. Dies ist die Standardeinstellung.
  • NO_KEEPErstellen Sie keine abgeleitete Ausgabe-Point-Feature-Class.
Boolean
error_checking_option
(optional)
Hinweis:

Dies ist ein älterer Parameter, der nicht mehr verwendet wird. Er wurde früher verwendet, um zu bestimmen, wie topologische Fehler, die möglicherweise bei der Verarbeitung verursacht wurden, behandelt werden. Dieser Parameter ist in der Syntax des Werkzeugs für Kompatibilität in Skripten und Modellen nach wie vor enthalten, wird aber aus dem Dialogfeld des Werkzeugs ausgeblendet.

Boolean
in_barriers
[in_barriers,...]
(optional)

Eingaben, die Features enthalten, die als Barrieren für die Vereinfachung fungieren. Resultierende vereinfachte Linien berühren oder kreuzen keine Barrieren-Features. Beim Vereinfachen von Konturlinien stellen Höhenpunkte-Eingabe-Features als Barrieren beispielsweise sicher, dass die vereinfachten Konturlinien nicht über diese Punkte hinweg vereinfacht werden. Die Ausgabe verletzt die durch die gemessenen Höhenangaben beschriebene Höhe nicht.

Feature Layer

Codebeispiel

SimplifyLine – Beispiel (Python-Fenster)

Das folgende Skript im Python-Fenster veranschaulicht, wie das Werkzeug SimplifyLine im unmittelbaren Modus verwendet wird.

import arcpy
import arcpy.cartography as CA
arcpy.env.workspace = "C:/data"
CA.SimplifyLine("roads.shp", 
                "C:/output/output.gdb/simplified_roads", 
                "POINT_REMOVE", 
                20)
SimplifyLine – Beispiel 2 (eigenständiges Skript)

Im 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
import arcpy.management as DM
import arcpy.cartography as CA
 
# Set environment settings
arcpy.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, 
                "KEEP_COLLAPSED_POINTS")
 
# 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)

Lizenzinformationen

  • ArcGIS Desktop Basic: Nein
  • ArcGIS Desktop Standard: Ja
  • ArcGIS Desktop Advanced: Ja

Verwandte Themen