Beschriftung | Erläuterung | Datentyp |
Eingabe-Features | Die Polygone zur Darstellung des Gebäudegrundrisses, der vereinfacht werden soll. | Feature Layer |
Ausgabe-Feature-Class | Die Feature-Class, die erstellt wird. | Feature Class |
Methode | Gibt die Vereinfachungsmethode an, die bei der Verarbeitung der Eingabe-Features verwendet wird.
| String |
Toleranz | Bei den meisten Methoden stellt dieser Wert die maximale Entfernung dar, die der vereinfachte Grundriss von der Grenze seines ursprünglichen Features abweichen kann. Der angegebene Wert basiert auf den linearen Einheiten des Koordinatensystems des Eingabe-Features. Bei Verwendung der Methode Kreis kann diese Option auch als Verhältnis zwischen der Differenz zwischen dem ursprünglichen Feature und seinem vereinfachten Ergebnis und der Fläche des vereinfachten Ergebnisses auf Basis der im Parameter Toleranztyp vorgenommen Auswahl interpretiert werden. | Double |
Verdichtung | Das Beispielintervall, anhand dessen ausgewertet wird, ob das vereinfachte 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 |
Genauigkeit | Die Genauigkeit des räumlichen Gitters, das im Vereinfachungsprozess verwendet wird. Zulässig sind Werte im Bereich von 0.05 bis 0.25. | Double |
Diagonale Gewichtung | Wenn die Methode Rechte Winkel und Diagonalen verwendet wird, bestimmt dieser Wert die Wahrscheinlichkeit, mit der rechte Winkel oder diagonale Kanten zwischen zwei benachbarten Segmenten erstellt werden. Wenn die Methode Alle Winkel verwendet wird, bestimmt dieser Wert die Wahrscheinlichkeit, mit der diagonale Kanten erstellt werden, die nicht mit den durch den Algorithmus des Werkzeugs festgelegten bevorzugten Kanten übereinstimmen. Wenn der Gewichtungswert auf 0 festgelegt wird, werden die bevorzugten Kanten nicht verwendet, was zur Folge hat, dass ein vereinfachtes unregelmäßiges Polygon erstellt wird. Generell gilt: Je höher der Wert, desto geringer ist die Wahrscheinlichkeit, dass eine diagonale Kante erstellt wird. | Double |
Minimaler Radius | Der kleinste für einen vereinfachten Kreis zulässige Radius. Der Wert 0 impliziert, dass keine minimale Größenbeschränkung vorhanden ist. Diese Option ist nur bei der Methode Kreis verfügbar. | Double |
Maximaler Radius | Der größte für einen vereinfachten Kreis zulässige Radius. Diese Option ist nur bei der Methode Kreis verfügbar. | Double |
Ausrichtungs-Feature (optional) | Das Linien-Feature, mit dem die Ausrichtung der vereinfachten Polygone eingestellt wird. Jedes Polygon wird nur an einem Linien-Feature ausgerichtet. | Feature Layer |
Ausrichtungstoleranz (optional) | Der maximale Entfernungsschwellenwert, mit dem das nächstgelegene Ausrichtungs-Feature bestimmt wird. Ein Wert von beispielsweise 20 bedeutet, dass die nächstgelegene Linie, die innerhalb einer Entfernung von 20 Metern liegt, für die Ausrichtung des vereinfachten Polygons verwendet wird. | Linear Unit |
Toleranztyp (optional) | Gibt an, wie die Toleranz angewendet wird, wenn der Parameter Methode auf Kreis festgelegt wurde.
| String |
Zusammenfassung
Vereinfacht 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.
Wenn Ihre Gebäude-Footprints kreisförmige Strukturen enthalten, verarbeiten Sie diese Features zuerst. Kreisförmige Gebäude können anhand eines Kompaktheitsverhältnisses identifiziert werden. Um diesen Wert zu berechnen, führen Sie die folgenden Schritte aus:
- Fügen Sie ein Feld vom Typ "Double" hinzu.
- Berechnen Sie die folgende Formel mithilfe der Feldberechnung:
(4 * 3.14159265358979 * !shape.area!) / !shape.length! ** 2
- Ein perfekter Kreis hat den Wert 1. Da die Polygone, die mit diesem Werkzeug verarbeitet werden, jedoch einige Unregelmäßigkeiten aufweisen, bedeuten Werte nahe 1 meist eine Kreisform. Identifizieren Sie in den Ergebnissen den Minimalwert eines kreisförmigen Gebäudes. Wählen Sie anschließend Werte aus, die größer als dieser Wert sind oder diesem entsprechen, bevor Sie dieses Werkzeug mit der Option Kreis für den Parameter Methode ausführen.
Legen Sie den Parameter Methode auf Alle Winkel fest, wenn die Gebäude-Footprints Geometrien mit Kanten darstellen, die eine Kombination aus Winkeln mit beispielsweise 45- und 90-Grad-Biegungen bilden. Wählen Sie zunächst eine Teilmenge von Features aus, die unregelmäßige Kanten enthalten, und ermitteln Sie, welcher Wert für die diagonale Gewichtung zum gewünschten Ergebnis führt. Wenn im Ergebnis diagonale Kanten nicht angemessen erfasst sind, ändern Sie den Toleranzwert, um die Vereinfachungszone einzuschränken und die diagonale Gewichtung schrittweise zu verringern. Wenn das Ergebnis unerwünschte Kanten mit spitzen Innenwinkeln enthält, führen Sie das Werkzeug wiederholt aus, und erhöhen Sie dabei die diagonale Gewichtung, bis das gewünschte Ergebnis erreicht ist. Verwenden Sie diesen Wert dann zur Verarbeitung des gesamten Datasets.
Wenn die Option Alle Winkel auf einem Computer mit einer NVIDIA-Grafikkarte verwendet wird, die CUDA unterstützt und über mehr als 2 GB Arbeitsspeicher verfügt, wird zum Ausführen des Werkzeugs die GPU genutzt. Dieses Verhalten können Sie über die Umgebungseinstellung Prozessortyp ändern. Wenn mehrere GPUs vorhanden sind, kann mit der Umgebungseinstellung GPU-ID die spezifische GPU ausgewählt werden.
Wenn das Werkzeug keine vereinfachte Lösung für eine bestimmte Eingabe erstellen kann, wird das ursprüngliche Feature in die Ausgabe kopiert. Der im Feld STATUS angegebene Wert gibt an, ob das Feature vereinfacht wurde:
- 0: Vereinfachtes Feature
- 1: Ursprüngliches Feature
Bei Verwendung der Methode Kreise für Geometrien mit stark variierender Größe erhalten Sie mit der Option Flächenverhältnis für den Parameter Toleranztyp möglicherweise bessere Ergebnisse als mit der Option Entfernung, da die Erstellung der Ausgabe-Features durch die Größe der ursprünglichen Geometrie eingeschränkt wird. Eine feste Größe dagegen eignet sich möglicherweise für ein begrenztes Subset der ursprünglichen Features.
Parameter
arcpy.ddd.RegularizeBuildingFootprint(in_features, out_feature_class, method, tolerance, densification, precision, diagonal_penalty, min_radius, max_radius, {alignment_feature}, {alignment_tolerance}, {tolerance_type})
Name | Erläuterung | Datentyp |
in_features | Die Polygone zur Darstellung des Gebäudegrundrisses, der vereinfacht werden soll. | Feature Layer |
out_feature_class | Die Feature-Class, die erstellt wird. | Feature Class |
method | Gibt die Vereinfachungsmethode an, die bei der Verarbeitung der Eingabe-Features verwendet wird.
| String |
tolerance | Bei den meisten Methoden stellt dieser Wert die maximale Entfernung dar, die der vereinfachte Grundriss von der Grenze seines ursprünglichen Features abweichen kann. Der angegebene Wert basiert auf den linearen Einheiten des Koordinatensystems des Eingabe-Features. Bei Verwendung der Methode CIRCLE kann diese Option auch als Verhältnis zwischen der Differenz zwischen dem ursprünglichen Feature und seinem vereinfachten Ergebnis und der Fläche des vereinfachten Ergebnisses auf Basis der im Parameter tolerance_type vorgenommen Auswahl interpretiert werden. | Double |
densification | Das Beispielintervall, anhand dessen ausgewertet wird, ob das vereinfachte 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 des räumlichen Gitters, das im Vereinfachungsprozess verwendet wird. Zulässig sind Werte im Bereich von 0.05 bis 0.25. | Double |
diagonal_penalty | Wenn die Methode RIGHT_ANGLES_AND_DIAGONALS verwendet wird, bestimmt dieser Wert die Wahrscheinlichkeit, mit der rechte Winkel oder diagonale Kanten zwischen zwei benachbarten Segmenten erstellt werden. Wenn die Methode ANY_ANGLES verwendet wird, bestimmt dieser Wert die Wahrscheinlichkeit, mit der diagonale Kanten erstellt werden, die nicht mit den durch den Algorithmus des Werkzeugs festgelegten bevorzugten Kanten übereinstimmen. Generell gilt: Je höher der Wert, desto geringer ist die Wahrscheinlichkeit, dass eine diagonale Kante erstellt wird. | Double |
min_radius | Der kleinste für einen vereinfachten Kreis zulässige Radius. Der Wert 0 impliziert, dass keine minimale Größenbeschränkung vorhanden ist. Diese Option ist nur für die Methode CIRCLE verfügbar. | Double |
max_radius | Der größte für einen vereinfachten Kreis zulässige Radius. Diese Option ist nur für die Methode CIRCLE verfügbar. | Double |
alignment_feature (optional) | Das Linien-Feature, mit dem die Ausrichtung der vereinfachten Polygone eingestellt wird. Jedes Polygon wird nur an einem Linien-Feature ausgerichtet. | Feature Layer |
alignment_tolerance (optional) | Der maximale Entfernungsschwellenwert, mit dem das nächstgelegene Ausrichtungs-Feature bestimmt wird. Ein Wert von beispielsweise 20 bedeutet, dass die nächstgelegene Linie, die innerhalb einer Entfernung von 20 Metern liegt, für die Ausrichtung des vereinfachten Polygons verwendet wird. | Linear Unit |
tolerance_type (optional) | Gibt an, wie die Toleranz angewendet wird, wenn der Parameter method auf CIRCLE festgelegt wurde.
| String |
Codebeispiel
Im folgenden Beispiel 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)
Im folgenden Beispiel wird die Verwendung dieses Werkzeugs in einem eigenständigen Python-Skript veranschaulicht.
'''****************************************************************************
Name: Extract Building Footprints
Description: Extract footprint from lidar points classified as buildings,
regularize its geometry, and calculate the building height.
****************************************************************************'''
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')
arcpy.ddd.LasPointStatsByArea(lasd_layer, footprint, ['MIN_Z', 'MAX_Z'])
arcpy.management.AddField(footprint, 'Height', 'Double')
arcpy.management.CalculateField(footprint, 'Height',
"round('!Z_Max! - !Z_Min!', 2)",
'PYTHON_9.3')
except arcpy.ExecuteError:
print(arcpy.GetMessages())