Skip To Content

Überlappung aus LAS klassifizieren

Zusammenfassung

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

Abbildung

Überlappung aus LAS klassifizieren

Verwendung

  • Wenn nicht klassifizierte überlappende Punkte vorhanden sind, kann dies bei Vorgängen, bei denen wie etwa beim Werkzeug Gebäude aus LAS klassifizieren eine gleichmäßige Punktverteilung vorausgesetzt wird, zu unerwünschten Ergebnissen führen. Dies kann darüber hinaus auch bei der Erzeugung von abgeleiteten Daten zu einer unerwünschten Fehlerspanne führen, wenn die Überlappungen von extremen Scan-Winkel herrühren. Durch die Klassifizierung überlappender Punkte ist es möglich, diese herauszufiltern und eine regelmäßigere Punktverteilung von hochwertigeren Rückgaben zu erzielen.

  • 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 dann 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.

  • Das LAS-Format unterstützt die Klassifizierung jedes Punktes basierend auf den von der ASPRS (American Society for Photogrammetry and Remote Sensing) definierten Spezifikationen. Die ArcGIS Plattform wendet das für die LAS-Dateiversion 1.4 angegebene Klassifizierungsschema an:

    Klassifizierungswert Klassifizierungstyp

    0

    Nie klassifiziert

    1

    Nicht zugewiesen

    2

    Boden

    3

    Niedrige Vegetation

    4

    Mittelhohe Vegetation

    5

    Hohe Vegetation

    6

    Gebäude

    7

    Niedriger Rauschwert

    8

    Modellschlüssel/Reserviert

    9

    Wasser

    10

    Schienen

    11

    Straßenbelag

    12

    Überlappung/Reserviert

    13

    Draht - Schutz

    14

    Draht - Leiter

    15

    Strommast

    16

    Drahtverbinder

    17

    Brückenfahrbahn

    18

    Hohes Rauschen

    19 – 63

    Für die ASPRS-Definition reserviert (die Versionen LAS 1.1 bis 1.3 unterstützen bis zum Klassencode 31)

    32 – 255

    Kann vom Benutzer definiert werden (wird nur in LAS 1.0 und bestimmten Versionen von 1.4 unterstützt)

    Hinweis:

    Während der Großteil der mit LAS 1.4 eingeführten neuen Klassencodezuweisungen zuvor als "Reserviert" festgelegt wurde, wurden die Klassencodes 8 und 12 von "Modellschlüssel" und "Überlappung" in "Reserviert" geändert.

Syntax

ClassifyLasOverlap_3d (in_las_dataset, sample_distance, {extent}, {process_entire_files}, {compute_stats})
ParameterErläuterungDatentyp
in_las_dataset

Das zu verarbeitende 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 Unbekannt 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.

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 Statistiken wird es ermöglicht, in den Filter- und Symbolisierungsoptionen des LAS-Dataset-Layers nur die in den LAS-Dateien vorhandenen LAS-Attributwerte anzuzeigen.

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

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

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

Verwandte Themen