Ich habe angefangen zu lernen, wie man LAS-Daten in Python manipuliert und wollte sehen, wie andere mit LAS-Dateien umgehen. Ich möchte die Punkte lesen (ich verwende ein Numpy-Array) und die Klassen 1 und 2 (nicht klassifiziert und geerdet) in einem separaten Array herausfiltern. Ich habe den folgenden Code, kann die Punkte jedoch nicht filtern.
# Import modules
from liblas import file
import numpy as np
if __name__=="__main__":
'''Read LAS file and create an array to hold X, Y, Z values'''
# Get file
las_file = r"E:\Testing\ground_filtered.las"
# Read file
f = file.File(las_file, mode='r')
# Get number of points from header
num_points = int(f.__len__())
# Create empty numpy array
PointsXYZIC = np.empty(shape=(num_points, 5))
# Load all LAS points into numpy array
counter = 0
for p in f:
newrow = [p.x, p.y, p.z, p.intensity, p.classification]
PointsXYZIC[counter] = newrow
counter += 1
Ich habe arcpy.da.featureClassToNumpyArray gesehen, wollte aber weder arcpy importieren noch in Shapefile konvertieren.
Wie kann ich LAS-Daten in ein Numpy-Array filtern / lesen?
Antworten:
Ihr
PointsXYZIC
ist jetzt ein numpy Array. Dies bedeutet, dass Sie die gewünschten Daten mithilfe der Numpy-Indizierung filtern können. Beispielsweise können Sie mithilfe eines Index von Booleschen Werten bestimmen, welche Punkte erfasst werden sollen.Sie sollten jetzt ein numpy-Array mit allen Werten haben, bei denen die Daten nicht klassifiziert oder geerdet sind. Um die klassifizierten Werte zu erhalten, können Sie Folgendes verwenden:
quelle
Verwenden Sie laspy , um LAS-Dateien zu lesen und die Daten einfach als Numpy-Arrays zurückzugeben, mit denen Sie interagieren können. laspy ist reines Python, ist fast so schnell wie libLAS, hat mehr Funktionen als die libLAS-Python-Bindungen und ist viel einfacher zu implementieren.
quelle
Ich entschuldige mich, wenn Sie dies bereits wissen, aber LASTools ist ein fantastisches Open Source-Tool, das jetzt sowohl in ArcGIS als auch in QGIS 2.0 integriert ist.
quelle