Zusammenfassung
Klassifiziert LAS-Punkte aus überlappenden Scans von LIDAR-Luftbildvermessungen.
Abbildung
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.ddd.ClassifyLasOverlap(in_las_dataset, sample_distance, {extent}, {process_entire_files}, {compute_stats})
Parameter | Erklärung | Datentyp |
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. | Extent |
process_entire_files (optional) | Legt fest, wie die Verarbeitungsausdehnung angewendet werden soll.
| 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.
| Boolean |
Abgeleitete Ausgabe
Name | Erklärung | Datentyp |
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())
Umgebungen
Lizenzinformationen
- Basic: Erfordert 3D Analyst
- Standard: Erfordert 3D Analyst
- Advanced: Erfordert 3D Analyst