LAS-Überlappung klassifizieren (3D Analyst)

Zusammenfassung

Klassifiziert LAS-Punkte aus überlappenden Scans von LIDAR-Luftbildvermessungen.

Abbildung

Überlappung aus LAS klassifizieren

Verwendung

  • Überlappende Punkte stellen LAS-Rückgaben dar, die in unmittelbarer Nähe zu einem anderen Punkt aus einem Scan liegen, der aus einer anderen Flugbahn stammt. Wenn in einer Entfernung, die kürzer ist als der nominale Punktabstand, mehrere Punkte unterschiedlicher Flugbahnen liegen, wird in der Regel der Punkt mit dem größeren Abtastwinkel als Überlappung markiert. Durch die Bezeichnung "Überlappung" können die Punkte gefiltert und aus der Visualisierung und Analyse ausgeschlossen werden.

  • Dieses Werkzeug ist für gekachelte LAS-Dateien bestimmt, die Punkt-Datensätze aus mehreren Flugbahnen kombinieren. Jede LAS-Datei wird einzeln verarbeitet, die Eingabe-LAS-Daten werden dateiweise verarbeitet. Daher werden überlappende Punkte nicht erkannt, wenn jede Flugbahn in einer separaten LAS-Datei gespeichert wird. Mit dem Werkzeug LAS kacheln kann eine Sammlung von LAS-Dateien, die aus einzelnen Flugbahnen bestehen, in gekachelte Dateien mit mehreren Flugbahnen zusammengeführt werden.

  • Nicht klassifizierte überlappende Punkte können bei Vorgängen, bei denen eine gleichmäßige Punktverteilung vorausgesetzt wird, zu unerwünschten Ergebnissen führen. Daten, die aus Verarbeitungspunkten mit unregelmäßiger Punktdichte und Verteilung abgeleitet wurden, können eine unerwünschte Fehlerspanne aufweisen. Durch die Klassifizierung von überlappenden Punkten können die LAS-Daten gefiltert werden, um eine konsistente Punktdichte zu erzeugen und das Potenzial für Punktrückgaben mit einer höheren Fehlerspanne reduzieren.

  • Das Punktquell-ID-Attribut eines LAS-Punktes liefert Informationen zu der Flugbahn, aus der er stammt. Dieses Werkzeug verarbeitet LAS-Daten in Kacheln, indem es ermittelt, ob mehrere Punktquell-IDs vorhanden sind und die ID mit dem größeren Abtastwinkel als Überlappung identifiziert. Wenn in einer zu verarbeitenden Fläche mehrere Punkte mit derselben Punktquell-ID vorhanden sind, werden alle Punkte mit derselben Punktquell-ID des Punktes mit dem größeren Abtastwinkel als Überlappung klassifiziert. Daher sollte die zum Auswerten der LAS-Punkte verwendete Stichprobengröße ca. zwei- bis dreimal so groß sein wie der nominale Punktabstand der LAS-Daten. Größere Kachelgrößen sollten vermieden werden, da sonst die Gefahr besteht, dass Punkte mit kleineren Werten für den Abtastwinkel falsch klassifiziert werden. Bei kleineren Stichprobengrößen werden möglicherweise nicht genügend Punkte erfasst, um überlappende Punkte ordnungsgemäß zu identifizieren und zu klassifizieren.

  • Überlappenden Punkten in LAS-Dateien mit der Versionsnummer 1.4 und einem Punktdatenformat zwischen 6 und 8 wird das Klassifizierungs-Flag "Überlappung" zugewiesen, wobei ihr ursprünglicher Klassencodewert erhalten bleibt. Überlappenden Punkten in allen anderen unterstützten LAS-Dateien wird der Klassencodewert 12 zugewiesen. Wenn der Klassencodewert 12 von den Eingabe-LAS-Dateien bereits verwendet wird, um etwas anderes als überlappende Scans darzustellen, kann diesen Punkten mit dem Werkzeug LAS-Klassencodes ändern vor dem Ausführen dieses Werkzeugs ein anderer Wert zugewiesen werden.

Syntax

arcpy.3d.ClassifyLasOverlap(in_las_dataset, sample_distance, {extent}, {process_entire_files}, {compute_stats})
ParameterErklärungDatentyp
in_las_dataset

Das zu verarbeitende gekachelte LAS-Dataset.

LAS Dataset Layer
sample_distance

Der Abstand einer Dimension der quadratischen Fläche, die zum Auswerten der LAS-Daten verwendet wird. Dieser Wert kann als Zahl und Wert der linearen Einheit wie "3 Meter" ausgedrückt werden. Wenn keine linearen Einheiten angegeben oder als Unknown eingegeben wurden, wird die Einheit durch den Raumbezug der Eingabe-LAS-Datei definiert.

Linear Unit
extent
(optional)

Legt die Ausdehnung der Daten fest, die von diesem Werkzeug ausgewertet werden.

  • MAXOF: Die maximale Ausdehnung aller Eingaben wird verwendet.
  • MINOF: Die kleinste gemeinsame Fläche aller Eingaben wird verwendet.
  • DISPLAY: Die Ausdehnung entspricht der sichtbaren Anzeige.
  • Layer-Name: Die Ausdehnung des angegebenen Layers wird verwendet.
  • Extent-Objekt: Die Ausdehnung des angegebenen Objekts wird verwendet.
  • Durch Leerzeichen getrennte Koordinatenzeichenfolge: Die Ausdehnung der angegebenen Zeichenfolge wird verwendet. Die Koordinaten werden in der Reihenfolge X-Min, Y-Min, X-Max, Y-Max ausgedrückt.
Extent
process_entire_files
(optional)

Legt fest, wie die Verarbeitungsausdehnung angewendet werden soll.

  • PROCESS_EXTENTEs werden nur LAS-Punkte verarbeitet, die den Interessenbereich schneiden. Dies ist die Standardeinstellung.
  • PROCESS_ENTIRE_FILESWenn ein Teil einer LAS-Datei den Interessenbereich schneidet, werden alle Punkte in dieser LAS-Datei verarbeitet, einschließlich derer außerhalb des Interessenbereichs.
Boolean
compute_stats
(optional)

Gibt an, ob für die vom LAS-Dataset referenzierten LAS-Dateien Statistiken berechnet werden sollen. Durch das Berechnen von Statistiken wird ein räumlicher Index für jede LAS-Datei bereitgestellt, wodurch sich die Analyse- und Darstellungs-Performance verbessert. Ferner werden durch Statistiken die Filter- und Symbolisierungsverfahren verbessert, da die Anzeige von LAS-Attributen, beispielsweise Klassifizierungscodes und Rückgabeinformationen, auf die in der LAS-Datei vorhandenen Werte begrenzt wird.

  • COMPUTE_STATSEs werden Statistiken berechnet.
  • NO_COMPUTE_STATSEs werden keine Statistiken berechnet. Dies ist die Standardeinstellung.
Boolean

Abgeleitete Ausgabe

NameErklärungDatentyp
out_las_dataset

Das zu ändernde LAS-Dataset.

LAS-Dataset-Layer

Codebeispiel

ClassifyLasOverlap: Beispiel 1 (Python-Fenster)

Anhand des folgenden Beispiels wird die Verwendung dieses Werkzeugs im Python-Fenster veranschaulicht.

arcpy.env.workspace = 'C:/data'

arcpy.ddd.ClassifyLasOverlap('Denver_2.lasd', '1 Meter')
ClassifyLasOverlap: Beispiel 2 (eigenständiges Skript)

Im folgenden Beispiel wird die Verwendung dieses Werkzeugs in einem eigenständigen Python-Skript veranschaulicht.

'''****************************************************************************
       Name: Classify Lidar & 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)
dem = arcpy.GetParameterAsText(1)
footprint = arcpy.GetParameterAsText(2)

try:
    desc = arcpy.Describe(lasd)
    if desc.spatialReference.linearUnitName in ['Foot_US', 'Foot']:
        unit = 'Feet'
    else:
        unit = 'Meters'
    ptSpacing = desc.pointSpacing * 2.25
    sampling = '{0} {1}'.format(ptSpacing, unit)
    # Classify overlap points
    arcpy.ddd.ClassifyLASOverlap(lasd, sampling)
    # Classify ground points
    arcpy.ddd.ClassifyLasGround(lasd)
    # Filter for ground points
    arcpy.management.MakeLasDatasetLayer(lasd, 'ground', class_code=[2])
    # Generate DEM
    arcpy.conversion.LasDatasetToRaster('ground', dem, 'ELEVATION', 
                                        'BINNING NEAREST NATURAL_NEIGHBOR', 
                                        sampling_type='CELLSIZE', 
                                        sampling_value=desc.pointSpacing)
    # Classify noise points
    arcpy.ddd.ClassifyLasNoise(lasd, method='ISOLATION', edit_las='CLASSIFY', 
                               withheld='WITHHELD', ground=dem, 
                               low_z='-2 feet', high_z='300 feet', 
                               max_neighbors=ptSpacing, step_width=ptSpacing, 
                               step_height='10 feet')
    # Classify buildings
    arcpy.ddd.ClassifyLasBuilding(lasd, '7.5 feet', '80 Square Feet')
    #Classify vegetation
    arcpy.ddd.ClassifyLasByHeight(lasd, 'GROUND', [8, 20, 55], 
                                  compute_stats='COMPUTE_STATS')
    # Filter LAS dataset for building points
    lasd_layer = 'building points'
    arcpy.management.MakeLasDatasetLayer(lasd, lasd_layer, class_code=[6])
    # Export raster from lidar using only building points
    temp_raster = 'in_memory/bldg_raster'
    arcpy.management.LasPointStatsAsRaster(lasd_layer, temp_raster,
                                           'PREDOMINANT_CLASS', 'CELLSIZE', 2.5)
    # Convert building raster to polygon
    temp_footprint = 'in_memory/footprint'
    arcpy.conversion.RasterToPolygon(temp_raster, temp_footprint)
    # Regularize building footprints
    arcpy.ddd.RegularizeBuildingFootprint(temp_footprint, footprint, 
                                          method='RIGHT_ANGLES')

except arcpy.ExecuteError:
    print(arcpy.GetMessages())

Lizenzinformationen

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

Verwandte Themen