Zusammenfassung
Normalisiert den Footprint von Gebäude-Polygonen, indem unerwünschte Artefakte in deren Geometrie entfernt werden.
Abbildung
Verwendung
Dieses Werkzeug nutzt einen Polylinienkomprimierungsalgorithmus, um Verzerrungen in Gebäudegrundriss-Polygonen zu korrigieren, die durch Feature-Extraktions-Workflows erstellt wurden, die möglicherweise unerwünschte Artefakte erzeugen.
Anhand der Toleranz wird die Region um die Grenze des Polygons definiert, in der das normalisierte Polygon liegen muss. Diese Region lässt sich am besten visualisieren, indem die Grenze des Polygons in ein Linien-Feature konvertiert und die Linie anschließend um die gewünschte Toleranz gepuffert wird, um ein Gespür dafür zu bekommen, wie es vom Werkzeug angewendet wird.
Wenn die angegebenen Parameter keine normalisierte Lösung für eine bestimmte Eingabe erstellen können, wird das ursprüngliche Feature in die Ausgabe kopiert.
Die Ausgabe verfügt über ein Feld namens STATUS, dessen Werte Folgendes angeben:
- 0 – Ursprüngliches Feature
- 1 – Normalisiertes Feature
Syntax
RegularizeBuildingFootprint_3d (in_features, out_feature_class, method, tolerance, densification, precision, diagonal_penalty, min_radius, max_radius)
Parameter | Erläuterung | Datentyp |
in_features | Die Polygone zur Darstellung des Gebäudegrundrisses, der normalisiert werden soll. | Feature Layer |
out_feature_class | Die Feature-Class, die von diesem Werkzeug erstellt wird. | Feature Class |
method | Die Normalisierungsmethode, die bei der Verarbeitung der Eingabe-Features verwendet werden soll.
| String |
tolerance | Die maximale Entfernung, die der normalisierte Gebäudegrundriss von der Grenze seines ursprünglichen Features abweichen kann. Der angegebene Wert basiert auf den linearen Einheiten des Koordinatensystems des Eingabe-Features. | Double |
densification | Das Beispielintervall, anhand dessen ausgewertet wird, ob das normalisierte Feature gerade oder gekrümmt ist. Die Verdichtung muss gleich dem oder kleiner als der Toleranzwert sein. Dieser Parameter wird nur mit Methoden verwendet, die die Identifizierung rechter Winkel unterstützen. | Double |
precision | Die Genauigkeit, die vom räumlichen Gitter verwendet wird, das im Normalisierungsprozess bereitgestellt wird. Zulässig sind Werte im Bereich von 0.05 bis 0.25. | Double |
diagonal_penalty | Steuert die Entfernungsverzerrung für die Erstellung von Verbindungen von rechten Winkeln. Entfernungen, die kleiner sind als die diagonale Gewichtung, dienen zum Erstellen von rechten Winkeln. Dieser Parameter wird nur mit der Methode "Rechte Winkel und Diagonalen" verwendet. | Double |
min_radius | Der kleinste Radius, den ein normalisierter Kreis aufweisen kann. Der Wert 0 impliziert, dass keine minimale Größenbeschränkung vorhanden ist. Diese Option ist nur bei der Kreismethode verfügbar. | Double |
max_radius | Der größte Radius, den ein normalisierter Kreis aufweisen kann. Diese Option ist nur bei der Kreismethode verfügbar. | Double |
Codebeispiel
RegularizeBuildingFootprint – Beispiel 1 (Python-Fenster)
Anhand des folgenden Beispiels wird die Verwendung dieses Werkzeugs im Python-Fenster veranschaulicht.
arcpy.env.workspace = 'c:/data'
arcpy.ddd.RegularizeBuildingFootprint('rough_footprints.shp',
'regularized_footprints.shp',
method='Circle', tolerance=1.5, min_radius=10,
max_radius=20)
RegularizeBuildingFootprint – Beispiel 2 (eigenständiges Skript)
Im folgenden Beispiel wird die Verwendung dieses Werkzeugs in einem eigenständigen Python-Skript veranschaulicht.
'''****************************************************************************
Name: Regularize Building Footprints
Description: Extract footprint from lidar points classified as buildings and
regularize its geometry.
****************************************************************************'''
import arcpy
lasd = arcpy.GetParameterAsText(0)
footprint = arcpy.GetParameterAsText(1)
try:
lasd_layer = 'building points'
arcpy.management.MakeLasDatasetLayer(lasd, lasd_layer, class_code=6)
temp_raster = 'in_memory/bldg_raster'
arcpy.management.LasPointStatsAsRaster(lasd_layer, temp_raster,
'PREDOMINANT_CLASS', 'CELLSIZE', 2.5)
temp_footprint = 'in_memory/footprint'
arcpy.conversion.RasterToPolygon(temp_raster, temp_footprint)
arcpy.ddd.RegularizeBuildingFootprint(temp_footprint, footprint,
method='RIGHT_ANGLES')
except arcpy.ExecuteError:
print(arcpy.GetMessages())
Umgebungen
Lizenzinformationen
- ArcGIS Desktop Basic: Erfordert 3D Analyst
- ArcGIS Desktop Standard: Erfordert 3D Analyst
- ArcGIS Desktop Advanced: Erfordert 3D Analyst