Polygon glätten (Cartography)
Zusammenfassung
Glättet spitze Winkel in Umrisslinien von Polygonen, um die ästhetische oder kartografische Qualität zu verbessern.
Abbildung
Verwendung
-
Sie können aus zwei Glättungsmethoden wählen:
- Die Methode PAEK (Polynomial Approximation with Exponential Kernel, Polynomiale Approximation mit exponentiellem Kernel) glättet Polygone auf Grundlage einer Glättungstoleranz. Ein geglättetes Polygon hat möglicherweise mehr Stützpunkte als das ursprüngliche Polygon. Der Parameter Glättungstoleranz steuert die Länge eines "gleitenden" Pfades, der bei der Berechnung neuer Stützpunkte verwendet wird. Je geringer die Länge, desto mehr Details bleiben erhalten und desto länger ist die Verarbeitungszeit.
- Die Methode BEZIER_INTERPOLATION glättet Polygone ohne Verwendung einer Toleranz durch das Erstellen von Bézierkurven, die den Eingabelinien entsprechen. Wenn die Ausgabe ein Shapefile ist, werden die Bézierkurven approximiert, da in Shapefiles keine echten Bézierkurven gespeichert werden können.
-
Die Glättung führt möglicherweise topologische Fehler wie Kreuzungen in den Umrisslinien von Polygonen ein. Verwenden Sie für den Parameter Verarbeitung topologischer Fehler die Option FLAG_ERRORS, um diese Fehler zu identifizieren. Die Felder "InPoly_FID" und "SmoPlyFlag" für Eingabe-Feature-IDs und topologische Fehler werden hinzugefügt. Der Wert 1 im Feld "SmoPlyFlag" zeigt einen Topologiefehler an. 0 (Null) bedeutet, dass kein Fehler aufgetreten ist. Das Feld "InPoly_FID" verknüpft die Ausgabepolygone mit ihren Eingabepolygonen. Die Option FLAG_ERRORS kann nicht innerhalb einer Editiersitzung verwendet werden.
-
Während des Glättungsvorgangs erstellte ungültige (sich selbst schneidende) Geometrie wird repariert, aber nicht verbessert. Wenn sich z. B. ein Polygon selbst schneidet, wird es zu einem Multipart-Polygon, sieht aber nach wie vor wie ein sich selbst schneidendes Polygon aus.
Syntax
Parameter | Erläuterung | Datentyp |
in_features |
Die zu glättenden Polygon-Features. | Feature Layer |
out_feature_class |
Die zu erstellende Ausgabe-Polygon-Feature-Class. | Feature Class |
algorithm |
Gibt den Algorithmus für die Glättung an.
| String |
tolerance |
Legt die vom PAEK-Algorithmus verwendete Toleranz fest. Die Toleranz muss angegeben und größer als Null sein. Sie können eine bevorzugte Einheit angeben. Standardmäßig wird die Feature-Einheit verwendet. Beim Verwenden des Glättungs-Algorithmus BEZIER_INTERPOLATION müssen Sie eine 0 als Platzhalter eingeben. | Linear unit |
endpoint_option (optional) |
Gibt an, ob die Endpunkte für isolierte Polygon-Ringe beibehalten werden. Diese Option kann nur mit dem PAEK-Algorithmus verwendet werden.
| Boolean |
error_option (optional) |
Gibt an, wie (möglicherweise durch den Vorgang entstandene) topologische Fehler, z. B. sich schneidende Linien oder Überlappungen, behandelt werden.
| String |
Codebeispiel
Das folgende Skript im Python-Fenster veranschaulicht, wie Sie das Werkzeug "SmoothPolygon" im unmittelbaren Modus verwenden.
import arcpy from arcpy import env import arcpy.cartography as CA env.workspace = "C:/data" CA.SmoothPolygon("soils.shp", "C:/output/output.gdb/smoothed_soils", "PAEK", 100)
Das folgende eigenständige Skript veranschaulicht, wie das Werkzeug "SmoothPolygon" verwendet wird.
# Name: SmoothPolygon_Example2.py # Description: Eliminate small islands before simplifying and smoothing lake boundaries # Author: ESRI # Import system modules import arcpy from arcpy import env import arcpy.cartography as CA import arcpy.management as DM # Set environment settings env.workspace = "C:/data/Portland.gdb/Hydrography" # Set local variables inLakeFeatures = "lakes" eliminatedFeatures = "C:/data/PortlandOutput.gdb/lakes_eliminated" simplifiedFeatures = "C:/data/PortlandOutput.gdb/lakes_simplified" smoothedFeatures = "C:/data/PortlandOutput.gdb/lakes_smoothed" # Eliminate small islands in lake polygons. DM.EliminatePolygonPart(inLakeFeatures, eliminatedFeatures, 100, "OR", 0, "CONTAINED_ONLY") # Simplify lake polygons. CA.SimplifyPolygon(eliminatedFeatures, simplifiedFeatures, "POINT_REMOVE", 50, 200, "RESOLVE_ERRORS", "KEEP_COLLAPSED_POINTS", "CHECK") # Smooth lake polygons. CA.SmoothPolygon(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "FLAG_ERRORS")