LAS extrahieren (3D Analyst)

Zusammenfassung

Hiermit kann die Sammlung der von einem LAS-Dataset referenzierten LIDAR-Daten gefiltert, ausgeschnitten und neu projiziert werden.

Abbildung

LAS extrahieren

Verwendung

  • Mit dem LAS-Dataset-Layer können Sie die angezeigten und verarbeiteten LAS-Punkte begrenzen, indem Sie in den Filtereinstellungen des Layers eine beliebige Kombination von Klassifizierungscodes, Klassifizierungs-Flags und Rückgabewerten auswählen. Die Filter können über das Dialogfeld Layer-Eigenschaften oder mit dem Werkzeug LAS-Dataset-Layer erstellen definiert werden.

  • Um LAS-Dateien in ein anderes Koordinatensystem neu zu projizieren, legen Sie den Raumbezug in der Umgebungseinstellung Ausgabe-Koordinatensystem fest. Zur Neuprojektion der Dateien muss ein Raumbezug für die LAS-Dateien definiert sein. Wenn der Raumbezug ein vertikales Koordinatensystem enthält, können die LAS-Dateien auch in ein anderes Höhenbezugssystem neu projiziert werden, sofern die Gitter für die vertikale Datumstransformation installiert sind und eine Transformation aus dem Quellbezugssystem und dem Zielkoordinatensystem verfügbar ist. Der Raumbezug einer LAS-Datei kann im Header der Datei oder mittels einer PRJ-Zusatzdatei definiert werden, in der der Raumbezug im WTK-Format (Well-Known Text) definiert ist. Die PRJ-Datei muss sich an demselben Speicherort befinden wie die LAS-Datei und auch denselben Namen haben wie diese. Sofern vorhanden, setzt die PRJ-Datei die Raumbezugsinformationen im Header der LAS-Datei außer Kraft. Sie können PRJ-Dateien für LAS-Dateien mit fehlendem oder falsch definiertem Raumbezug erstellen, indem Sie das Werkzeug Projektion definieren für eine einzelne LAS- oder ZLAS-Datei bzw. das Werkzeug LAS-Dataset erstellen mit aktivierter Option PRJ anwenden.

  • LAS-Punkt-Datensätze werden häufig in der LAS-Datei in einer binären Sequenz gespeichert, die nicht dem räumlichen Clustering der Punkte entspricht. Wenn Daten einer derartigen Verteilung abgefragt werden, kann dies zu einem weniger effizienten Zugriff auf die binären Datensätze führen, die die LAS-Punkte darstellen. Durch eine Neuanordnung der Punkte in der resultierenden LAS-Datei werden die Daten für die Visualisierung und andere räumliche Operationen optimiert. Bei Aktivierung der Option für die Neuanordnung werden automatisch Statistiken berechnet. Wenn Sie die LAS-Punkte nicht neu anordnen möchten, bleibt es Ihnen überlassen, ob Sie die Berechnung von Statistiken aktivieren oder deaktivieren. Durch die Berechnung von Statistiken werden räumliche Abfragen optimiert. Zudem wird eine Zusammenfassung der Klassencodes und Rückgabewerte bereitgestellt, die in der LAS-Datei vorhanden sind. Im Gegenzug benötigt dieses Werkzeug jedoch etwas mehr Zeit für die Verarbeitung. Wenn Sie die resultierenden LAS-Dateien in ArcGIS nicht verwenden, bleibt es Ihnen überlassen, ob Sie die Berechnung von Statistiken aktivieren oder zur Beschleunigung des Werkzeugs deaktivieren.

  • Wenn beim Ausschneiden von LAS-Dateien eine Extraktionsausdehnung und eine Extraktionsgrenze definiert sind, wird das Coverage der extrahierten LAS-Dateien anhand des Schnittpunktes beider definiert.

  • Die Ausgabe-LAS-Dateien stimmen mit der LAS-Version und dem Punktdatensatzformat der Eingabe überein.

Syntax

arcpy.3d.ExtractLas(in_las_dataset, target_folder, {extent}, {boundary}, {process_entire_files}, {name_suffix}, {remove_vlr}, {rearrange_points}, {compute_stats}, {out_las_dataset}, {compression})
ParameterErklärungDatentyp
in_las_dataset

Das zu verarbeitende LAS-Dataset.

LAS Dataset Layer
target_folder

Der vorhandene Ordner, in den die Ausgabe-LAS-Dateien geschrieben werden.

Folder
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
boundary
(optional)

Eine Polygongrenze, die die Fläche der auszuschneidenden LAS-Dateien definiert.

Feature Layer
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
name_suffix
(optional)

Der Text, der an den Namen jeder Ausgabe-LAS-Datei angehängt wird. Jede Datei übernimmt ihren Basisnamen aus ihrer Quelldatei, gefolgt von dem Suffix, der in diesem Parameter festgelegt wird.

String
remove_vlr
(optional)

Jede LAS-Datei kann verschiedene Datensätze mit variabler Länge enthalten, die von der Software, mit der die Datei erstellt wurde, hinzugefügt wurden. Die Bedeutung dieser Datensätze ist in der Regel nur der Ursprungssoftware bekannt. Sofern die Ausgabe-LAS-Daten nicht von einer Anwendung verarbeitet werden, die diese Informationen interpretieren kann, bietet die Beibehaltung der Datensätze variabler Länge wahrscheinlich keinen funktionalen Mehrwert. Durch Entfernen dieser Datensätze lassen sich je nach Gesamtgröße und der Anzahl der Dateien, in denen sie enthalten sind, erhebliche Einsparungen beim Speicherplatz realisieren.

  • MAINTAIN_VLRDaten, die in den Datensätzen mit variabler Länge der verarbeiteten LAS-Datei gespeichert sind, werden in den extrahierten LAS-Dateien beibehalten. Dies ist die Standardeinstellung.
  • REMOVE_VLRDie Datensätze mit zusätzlicher Variablenlänge werden aus den LAS-Dateien entfernt.
Boolean
rearrange_points
(optional)

Legt fest, ob Punkte in den LAS-Dateien neu angeordnet werden.

  • MAINTAIN_POINTSReihenfolge der LAS-Dateien wird beibehalten.
  • REARRANGE_POINTSDie Punkte in den LAS-Dateien werden neu angeordnet. Dies ist die Standardeinstellung.
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
out_las_dataset
(optional)

Das Ausgabe-LAS-Dataset, das auf die neu erstellten LAS-Dateien verweist.

LAS Dataset
compression
(optional)

Legt fest, ob die Ausgabe-LAS-Datei in einem komprimierten oder im Standard-LAS-Format vorliegen soll.

  • SAME_AS_INPUTDie Komprimierung entspricht der der Eingabe. Dies ist die Standardeinstellung.
  • NO_COMPRESSIONDie Ausgabe erfolgt im Standard-LAS-Format (*.las).
  • ZLASAusgabe-LAS-Dateien werden im zLAS-Format komprimiert.
String

Abgeleitete Ausgabe

NameErklärungDatentyp
out_folder

Der Ordner, in den die LAS-Dateien geschrieben werden.

Ordner

Codebeispiel

ExtractLas – Beispiel 1 (Python-Fenster)

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

import arcpy
from arcpy import env

env.workspace = 'C:/data'
arcpy.ddd.ExtractLas('test.lasd', 'c:/lidar/subset', boundary='study_area.shp',
                     name_suffix='subset', remove_vlr=True, 
                     rearrange_points='REARRANGE_POINTS', 
                     out_las_dataset='extracted_lidar.lasd')
ExtractLas – Beispiel 2 (eigenständiges Skript)

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

'''****************************************************************************
Name: Split Large LAS File
Description: Divides a large LAS file whose point distribution covers the full
             XY extent of the data into smaller files to optimize performance
             when reading lidar data.
****************************************************************************'''
# Import system modules
import arcpy
import tempfile
import math

in_las_file = arcpy.GetParameterAsText(0)
tile_width = arcpy.GetParameter(1) # double in LAS file's XY linear unit
tile_height = arcpy.GetParameter(2) # double in LAS file's XY linear unit
out_folder = arcpy.GetParameterAsText(3) # folder for LAS files
out_name_suffix = arcpy.GetParameterAsText(4) # basename for output files
out_lasd = arcpy.GetParameterAsText(5) # output LAS dataset


try:
    temp_lasd = arcpy.CreateUniqueName('temp.lasd', tempfile.gettempdir())
    arcpy.management.CreateLasDataset(in_las_file, temp_lasd, 
                                      compute_stats='COMPUTE_STATS')
    desc = arcpy.Describe(temp_lasd)
    total_columns = int(math.ceil(desc.extent.width/tile_width))
    total_rows = int(math.ceil(desc.extent.height/tile_height))
    digits = int(math.log10(max(cols, rows))) + 1
    for row in range(1, total_rows+1):
        yMin = desc.extent.YMin + tile_height*(row-1)
        yMax = desc.extent.YMin + tile_height*(row)
        for col in range (1, total_columns+1):
            xMin = desc.extent.XMin + tile_width*(col-1)
            xMax = desc.extent.XMax + tile_width*(col)
            name_suffix = '_{0}_{1}x{2}'.format(out_name_suffix, 
                                                str(row).zfill(digits), 
                                                str(col).zfill(digits))
            arcpy.ddd.ExtractLas(temp_lasd, out_folder, 
                                 arcpy.Extent(xMin, yMin, xMax, yMax),
                                 name_suffix=name_suffix, 
                                 rearrange_points='REARRANGE_POINTS',
                                 compute_stats='COMPUTE_STATS')
    arcpy.env.workspace = out_folder
    arcpy.management.CreateLasDataset(arcpy.ListFiles('*{0}*.las'.format(out_name_suffix)),
                                      out_lasd, compute_stats='COMPUTE_STATS',
                                      relative_paths='RELATIVE_PATHS')
except arcpy.ExecuteError:
    print(arcpy.GetMessages())

Lizenzinformationen

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

Verwandte Themen