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 (BEZIER_INTERPOLATION in Python) 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 Fehler kennzeichnen (FLAG_ERRORS in Python), 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 Ausgabe-Polygone mit ihren Eingabe-Polygonen. Die Option Fehler kennzeichnen 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
SmoothPolygon_cartography (in_features, out_feature_class, algorithm, tolerance, {endpoint_option}, {error_option})
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 Algorithmus PAEK verwendete Toleranz fest. Die Toleranz muss angegeben und größer als 0 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 Polygonringe 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
SmoothPolygon – Beispiel (Python-Fenster)
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)
SmoothPolygon – Beispiel 2 (eigenständiges Skript)
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
# 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")
Umgebungen
Lizenzinformationen
- ArcGIS Desktop Basic: Nein
- ArcGIS Desktop Standard: Ja
- ArcGIS Desktop Advanced: Ja