Zusammenfassung
Erstellt Gebäudemodelle, die aus in LIDAR-Daten erfassten Dachpunkten abgeleitet wurden.
Abbildung
Verwendung
Bei diesem Werkzeug wird vorausgesetzt, dass die verarbeiteten LAS-Punkte ein sinnvolles Coverage des Gebäudedaches ergeben. Um optimale Ergebnisse zu erzielen, sollten Sie keine Punkte einbeziehen, die andere Gebäudeteile als das Dach darstellen, da diese im Allgemeinen zu Rauschen im sich ergebenden Gebäudemodell führen.
Das Gebäudemodell wird durch die Erstellung eines TIN aus den ausgewählten LAS-Punkten generiert, die innerhalb des Gebäude-Footprints gefunden werden. Der Footprint wird in dieses TIN als Clip-Polygon integriert, dessen Höhe durch den niedrigsten LAS-Punkt innerhalb seiner Ausdehnung definiert wird. Die Bodenhöhe stellt die Basis des Gebäudes dar. Sie kann entweder aus einem Feld in der Attributtabelle des Footprint-Polygons oder aus einer Höhenoberfläche abgeleitet werden.
Wenn die Bodenhöhe aus einem Feld in der Attributtabelle des Footprint-Polygons abgeleitet wird, wird davon ausgegangen, dass ihre Höheneinheiten mit der Z-Einheit des Eingabe-LAS-Datasets identisch sind. Wenn die Höhe in der Attributtabelle in einer anderen linearen Einheit ausgedrückt ist, sollten Sie vor der Verwendung dieses Werkzeugs das Werkzeug Feld berechnen verwenden, um den passenden Konvertierungsfaktor anzuwenden. Die Bodenhöhe kann den Gebäude-Footprint-Polygonen auf folgende Weise zugeordnet werden:
- Filtern Sie das LAS-Dataset mithilfe der Layer-Eigenschaften oder des Werkzeugs LAS-Dataset-Layer erstellen nach Bodenpunkten.
- Führen Sie das Werkzeug Oberflächeninformationen hinzufügen aus, und legen Sie dabei die Eingabe-Features auf das Gebäude-Footprint-Polygon, die Eingabeoberfläche auf das nach Bodenpunkten gefilterte LAS-Dataset und die Ausgabe-Eigenschaft auf den Z_MIN-Wert fest, um sicherzustellen, dass für das Gebäude der niedrigste Z-Wert verwendet wird.
Wenn die Bodenhöhe durch eine Oberfläche definiert ist, definiert der kleinste Z-Wert entlang der Grenze des Polygons die Basishöhe des Gebäudes. Für die Oberfläche sollte dasselbe vertikale Koordinatensystem verwendet werden wie für das LAS-Dataset. Sie können aus den LAS-Punkten mit Bodenklassifizierung eine TIN- oder Raster-Oberfläche des Bodens erstellen, indem Sie das LAS-Dataset nach den Punkten mit Bodenklassifizierung filtern und dann das Werkzeug LAS-Dataset in Raster oder LAS-Dataset in TIN zum Generieren der Oberfläche verwenden.
Bodenpunkte sollten vor der Ausführung dieses Werkzeugs klassifiziert werden. Wenn noch keine Bodenpunkte klassifiziert wurden, können Sie das Werkzeug Boden aus LAS klassifizieren verwenden.
Verwenden Sie zur Identifizierung von Punkten, die Gebäudedächer darstellen, unter Umständen das Werkzeug Gebäude aus LAS klassifizieren, vor allem wenn häufig Begrünung über Dächern hängt. Prüfen Sie das Ergebnis der automatischen Klassifizierung, und nehmen Sie ggf. erforderliche Korrekturen im Rahmen der interaktiven Klassifizierungsbearbeitung vor, bevor Sie dieses Werkzeug mit den Punkten mit Gebäudeklassifizierung ausführen.
LAS-Punkte werden effizienter verarbeitet, wenn das LAS-Dataset über Statistiken verfügt. Verwenden Sie bei Bedarf das Werkzeug LAS-Dataset-Statistiken für die Berechnung von Statistiken.
Syntax
arcpy.3d.LasBuildingMultipatch(in_las_dataset, in_features, ground, out_feature_class, {point_selection}, simplification)
Parameter | Erklärung | Datentyp |
in_las_dataset | Das LAS-Dataset, dessen Punkte das Gebäudedach definieren. | LAS Dataset Layer |
in_features | Die Polygon-Features, die den Gebäude-Footprint definieren. | Feature Layer |
ground | Bei der Quelle der Bodenhöhewerte kann es sich entweder um ein numerisches Feld in der Gebäude-Footprint-Attributtabelle, ein Raster oder eine TIN-Oberfläche handeln. Feldbasierte Bodenquellen werden schneller verarbeitet als oberflächenbasierte Bodenquellen. | Field; Raster Layer; TIN Layer |
out_feature_class | Die Multipatch-Feature-Class, die die Ausgabegebäudemodelle speichert. | Feature Class |
point_selection (optional) | Die LAS-Punkte, die das Gebäudedach definieren.
| String |
simplification | Der Z-Toleranzwert, der zur Reduzierung der Anzahl von LAS-Punkten verwendet wird, die bei der Modellierung des Gebäudedaches berücksichtigt werden. Dieser Wert definiert den maximalen Schwellwert für Abweichungen zwischen dem Ausgabedachmodell und der Dachoberfläche, die aus der vollen Auflösung von LAS-Punkten erstellt wird. | Linear Unit |
Codebeispiel
Anhand des folgenden Beispiels wird die Verwendung dieses Werkzeugs im Python-Fenster veranschaulicht.
arcpy.env.workspace = 'C:/data'
arcpy.LasBuildingMultipatch_3d('Highland.lasd', 'footprint.shp', 'dem.tif',
'highland_3d_bldgs.shp', simplification='4 Feet')
Im folgenden Beispiel wird die Verwendung dieses Werkzeugs in einem eigenständigen Python-Skript veranschaulicht.
'''****************************************************************************
Name: Extract Building Footprints & Generate 3D Models
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)
model = arcpy.GetParameterAsText(2)
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')
simplification = arcpy.Describe(lasd).pointSpacing * 4
arcpy.ddd.LasBuildingMultipatch(lasd_layer, footprint, 'Z_MIN', model,
'BUILDING_CLASSIFIED_POINTS', simplification)
except arcpy.ExecuteError:
print(arcpy.GetMessages())
Umgebungen
Lizenzinformationen
- Basic: Erfordert 3D Analyst
- Standard: Erfordert 3D Analyst
- Advanced: Erfordert 3D Analyst