Gebäude-Multipatch aus LAS (3D Analyst)

Zusammenfassung

Erstellt Gebäudemodelle, die aus in LIDAR-Daten erfassten Dachpunkten abgeleitet wurden.

Abbildung

Abbildung des Werkzeugs "Gebäude-Multipatch aus LAS"

Verwendung

  • Es wird vorausgesetzt, dass die LAS-Punkte die gewünschte Abdeckung des Gebäudedachs bereitstellen. Um optimale Ergebnisse zu erzielen, sollten Sie Punkte ausschließen, die andere Gebäudeteile als das Dach darstellen, da diese im Allgemeinen zu Rauschen im resultierenden Gebäudemodell führen. Wenn keine als Gebäude klassifizierte Punkte im LAS-Dataset vorliegen, klassifizieren Sie sie mit dem Werkzeug Gebäude aus LAS klassifizieren. Das Werkzeug weist Punkten, die Gebäudedächer darstellen, den Klassencodewert 6 zu. Prüfen Sie das Klassifizierungsergebnis, und nehmen Sie ggf. Korrekturen vor, indem Sie das Werkzeug erneut mit anderen Parametereinstellungen ausführen oder interaktiv die Klassifizierung bearbeiten. Erstellen Sie das Modell, sobald Sie mit der Gebäudeabdeckung durch die Klassifizierung zufrieden sind.

  • Nehmen Sie vor der Ausführung dieses Werkzeugs eine Klassifizierung der Bodenpunkte vor. Weisen Sie Bodenpunkten mithilfe des Werkzeugs Boden aus LAS klassifizieren den Klassencodewert 2 zu, falls sie zuvor noch nicht klassifiziert wurden.

  • Das Gebäudemodell wird generiert, indem aus den LAS-Punkten, die das Gebäude-Footprint-Polygon überlappen, ein TIN erstellt wird. Der Footprint wird als Clip-Polygon in dieses TIN integriert, wobei die Polygonhöhe durch die im Parameter Bodenhöhe angegebene Quelle definiert wird. Der Wert für den Parameter Bodenhöhe kann entweder aus einem Feld in der Attributtabelle des Footprint-Polygons oder aus einer Höhenoberfläche abgeleitet werden. Wenn die zu verarbeitende Punktwolke eine hohe Punktdichte aufweist, sollten Sie die Verwendung des Parameters Abtastauflösung in Erwägung ziehen, um die Punkte, die für die Dachkonstruktion verwendet werden, auszudünnen.

  • Polygone mit Bogensegmenten werden von diesem Werkzeug nicht unterstützt. Wenn derartige Features in den Eingabedaten vorhanden sind, können Sie eine Kopie der Features erstellen und die Bogengeometrien mit dem Werkzeug Verdichten durch Liniensegmente ersetzen.

  • 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 wird, wenden Sie vor der Verwendung dieses Werkzeugs mithilfe des Werkzeugs Feld berechnen den passenden Konvertierungsfaktor an. 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 Wert Z_MIN 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. Verwenden Sie für die Oberfläche dasselbe vertikale Koordinatensystem wie im 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 entweder das Werkzeug LAS-Dataset in Raster oder das Werkzeug LAS-Dataset in TIN zum Generieren der Oberfläche verwenden.

  • LAS-Punkte werden effizienter verarbeitet, wenn das LAS-Dataset über Statistiken verfügt. Verwenden Sie das Werkzeug LAS-Dataset-Statistiken zur Berechnung von Statistiken.

Parameter

BeschriftungErläuterungDatentyp
Eingabe-LAS-Dataset

Das LAS-Dataset mit den Punkten, die das Gebäudedach definieren.

LAS Dataset Layer
Eingabe-Features

Die Polygon-Features, die den Gebäude-Footprint definieren.

Feature Layer
Bodenhöhe

Bei der Quelle der Bodenhöhenwerte 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
Ausgabe-Multipatch-Feature-Class

Die Multipatch-Feature-Class, die die Ausgabegebäudemodelle speichert.

Feature Class
LAS-Dachpunktauswahl
(optional)

Gibt die LAS-Punkte an, die das Gebäudedach definieren.

  • Klassifizierte GebäudepunkteVerwendet werden LAS-Punkte mit einem Klassencodewert von 6. Dies ist die Standardeinstellung.
  • Gefilterte Layer-PunkteVerwendet werden LAS-Punkte, die durch den Eingabe-Layer gefiltert werden.
  • Alle PunkteAlle LAS-Punkte, die den Gebäude-Footprint überlagern, werden verwendet.
String
Vereinfachungstoleranz
(optional)

Ein Z-Wert, der zur Vereinfachung der Dachgeometrie verwendet wird. Dieser Wert definiert die maximale Abweichung des Ausgabedachmodells von der mit den LAS-Punkten erstellten TIN-Oberfläche.

Linear Unit
Abtastauflösung
(optional)

Die Binning-Größe, die zur Ausdünnung der Punktwolke vor der Erstellung der Dachfläche verwendet wird.

Linear Unit

arcpy.ddd.LasBuildingMultipatch(in_las_dataset, in_features, ground, out_feature_class, {point_selection}, {simplification}, {sampling_resolution})
NameErläuterungDatentyp
in_las_dataset

Das LAS-Dataset mit den Punkten, die 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öhenwerte 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)

Gibt die LAS-Punkte an, die das Gebäudedach definieren.

  • BUILDING_CLASSIFIED_POINTSVerwendet werden LAS-Punkte mit einem Klassencodewert von 6. Dies ist die Standardeinstellung.
  • LAYER_FILTERED_POINTSVerwendet werden LAS-Punkte, die durch den Eingabe-Layer gefiltert werden.
  • ALL_POINTSAlle LAS-Punkte, die den Gebäude-Footprint überlagern, werden verwendet.
String
simplification
(optional)

Ein Z-Wert, der zur Vereinfachung der Dachgeometrie verwendet wird. Dieser Wert definiert die maximale Abweichung des Ausgabedachmodells von der mit den LAS-Punkten erstellten TIN-Oberfläche.

Linear Unit
sampling_resolution
(optional)

Die Binning-Größe, die zur Ausdünnung der Punktwolke vor der Erstellung der Dachfläche verwendet wird.

Linear Unit

Codebeispiel

LasBuildingMultipatch – Beispiel 1 (Python-Fenster)

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')
LasBuildingMultipatch – Beispiel 2 (eigenständiges Skript)

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())

Lizenzinformationen

  • Basic: Erfordert 3D Analyst
  • Standard: Erfordert 3D Analyst
  • Advanced: Erfordert 3D Analyst

Verwandte Themen