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

Zusammenfassung

Erstellt Gebäudemodelle aus Dachpunkten in einem LAS-Dataset.

Abbildung

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

Verwendung

  • Dieses Werkzeug erstellt Gebäude als Multipatch-Features mithilfe von Dachpunkten aus einem LAS-Dataset, Bodenhöhendaten und Gebäude-Footprint-Polygonen. Jedes Gebäudemodell wird generiert, indem aus den LAS-Punkten, die mit dem Gebäude-Footprint-Polygon überlappen, ein TIN erstellt wird. Der Footprint wird als Ausschneidepolygon in dieses TIN integriert, wobei die Polygonhöhe vom Parameterwert Bodenhöhe abgeleitet wird. Dieses TIN wird dann in ein Multipatch konvertiert, das in Basishöhe geschlossen wird. Da das resultierende Multipatch auf einer TIN-Oberfläche basiert, enthält das Multipatch keine Details entlang des vertikalen Profils des Gebäudes.

  • Die Eingabe-LAS-Punkte sollten das Gebäudedach erfassen. Schließen Sie möglichst Gebäudeelemente aus, die nicht das Dach darstellen. Sie sind in der Regel die Ursache für Ausgaben mit unerwünschten Merkmalen. Das Werkzeug Gebäude aus LAS klassifizieren kann verwendet werden, um Punkten des Gebäudedachs den Klassencodewert 6 zuzuweisen. Das Werkzeug weist Punkten, die Gebäudedächer darstellen, den Klassencodewert 6 zu. Zudem bietet das Werkzeug Optionen zum Klassifizieren von Punkten unterhalb und oberhalb des Daches. Verwenden Sie beim Klassifizieren dieser Punkte einen anderen Klassencode als 6, um sie so zu definieren, dass sie beim Erstellen von Gebäude-Features ausgeschlossen werden können. Prüfen Sie das Ergebnis der Gebäudeklassifizierung, und nehmen Sie durch interaktive Bearbeitung oder die erneute Ausführung des Werkzeugs Gebäude aus LAS klassifizieren mit anderen Parametereinstellungen erforderliche Korrekturen vor. Wenn das LAS-Dataset über den Gebäude-Footprints keine Punkte enthält, die nicht zu Gebäuden gehören, können alle Punkte zum Definieren der Dachfläche verwendet werden.

  • Der Parameterwert Abtastauflösung wird verwendet, um die Punkte im LAS-Dataset auszudünnen, bevor das TIN konstruiert wird. Dieser Parameter optimiert die Performance des Werkzeugs, wenn die Eingabe eine Punktwolke mit einer hohen Punktdichte ist oder wenn Punkte entlang des vertikalen Gebäudeprofils verarbeitet werden. Der Parameterwert stellt die Länge und Breite der ausgedünnten Fläche dar. Eine Entfernung von 2 Fuß führt also dazu, dass die Punktwolke in ein 2-Fuß-Raster diskretisiert wird. Der höchste Punkt in jedem Abschnitt wird zum Konstruieren des Dach-TIN verwendet. Auf diese Weise können die Auswirkungen von Punkten von der Gebäudeseite abgeschwächt werden.

  • Gebäude-Footprint-Polygone mit Bogensegmenten werden von diesem Werkzeug nicht unterstützt. Verwenden Sie das Werkzeug Verdichten, um Bogensegmente durch Liniensegmente zu ersetzen.

  • Der Parameterwert Bodenhöhe kann eine Höhenoberfläche oder ein Feld in der Attributtabelle des Footprint-Polygons sein. Wenn Sie eine Oberfläche verwenden, ist die Basishöhe des Gebäudes der kleinste Z-Wert entlang der Grenze des Footprints. Für die Oberfläche sollte dasselbe vertikale Koordinatensystem verwendet werden wie für das LAS-Dataset. Eine Bodenoberfläche kann aus einem LAS-Dataset abgeleitet werden, um sicherzustellen, dass die Gebäude mit den Höhen der ursprünglichen Punktwolke übereinstimmen. Gehen Sie wie folgt vor, um eine Höhenoberfläche aus dem LAS-Dataset zu erstellen:

    1. Stellen Sie sicher, dass im LAS-Dataset klassifizierte Bodenpunkte vorhanden sind. Ist dies nicht der Fall, weisen Sie mithilfe des Werkzeugs Boden aus LAS klassifizieren Bodenpunkten den Klassencodewert 2 zu.
    2. Filtern Sie den LAS-Dataset-Layer mithilfe der Layer-Eigenschaften oder des Werkzeugs LAS-Dataset-Layer erstellen nach Bodenpunkten.
    3. Verwenden Sie das Werkzeug LAS-Dataset in Raster oder LAS-Dataset in TIN, um eine Raster- oder TIN-Oberfläche zu erstellen, die als Eingabe für dieses Werkzeug dienen kann.
  • Wenn die Bodenhöhe aus einem Feld in der Attributtabelle des Footprint-Polygons abgeleitet wird, wird davon ausgegangen, dass die 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, verwenden Sie das Werkzeug Feld berechnen, um neue Höhenwerte in den linearen Einheiten des LAS-Datasets zu berechnen. Die minimale Bodenhöhe kann mit dem Werkzeug Oberflächeninformationen hinzufügen dem Gebäude-Footprint-Polygon aus einer Geländehöhenoberfläche zugeordnet werden.

  • Wenn Gebäude-Features für angrenzende Strukturen mit Dächern generiert werden, die ganz andere Höhen aufweisen, wird das resultierende Feature für jedes Gebäude möglicherweise durch Punkte des angrenzenden Gebäudes definiert. Eine Möglichkeit, dieses Problem zu minimieren, ist, jedem Feature den Höhenbereich des Gebäudedaches zuzuordnen und diese Felder als Parameterwerte für Feld für minimale Höhe und Feld für maximale Höhe zu 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 Abschnittsgröße, die zum Ausdünnen der Punktwolke vor der Erstellung der Dachfläche verwendet wird.

Linear Unit
Feld für minimale Höhe
(optional)

Das numerische Feld, das die minimale Höhe der Punkte enthält, die zum Definieren des Daches verwendet wird. Es kann ein beliebiges numerisches Feld angegeben werden. Punkte unter dem Wert in diesem Feld werden ignoriert.

Field
Feld für maximale Höhe
(optional)

Das numerische Feld, das die maximale Höhe der Punkte enthält, die zum Definieren des Daches verwendet wird. Es kann ein beliebiges numerisches Feld angegeben werden. Punkte über dem Wert in diesem Feld werden ignoriert.

Field

arcpy.ddd.LasBuildingMultipatch(in_las_dataset, in_features, ground, out_feature_class, {point_selection}, {simplification}, {sampling_resolution}, {min_height_field}, {max_height_field})
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 Abschnittsgröße, die zum Ausdünnen der Punktwolke vor der Erstellung der Dachfläche verwendet wird.

Linear Unit
min_height_field
(optional)

Das numerische Feld, das die minimale Höhe der Punkte enthält, die zum Definieren des Daches verwendet wird. Es kann ein beliebiges numerisches Feld angegeben werden. Punkte unter dem Wert in diesem Feld werden ignoriert.

Field
max_height_field
(optional)

Das numerische Feld, das die maximale Höhe der Punkte enthält, die zum Definieren des Daches verwendet wird. Es kann ein beliebiges numerisches Feld angegeben werden. Punkte über dem Wert in diesem Feld werden ignoriert.

Field

Codebeispiel

LasBuildingMultipatch: Beispiel 1 (Python-Fenster)

Im folgenden Beispiel 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())

Verwandte Themen