J'ai commencé à apprendre à manipuler les données LAS en python et je voulais voir comment les autres gèrent les fichiers LAS. Je voudrais lire les points (j'utilise un tableau numpy) et filtrer les classes 1 et 2 (non classifiées et au sol) dans un tableau séparé. J'ai le code suivant mais je n'arrive pas à filtrer les points.
# 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
J'ai vu arcpy.da.featureClassToNumpyArray, mais je ne voulais pas importer arcpy ni convertir en fichier de formes.
Sinon, comment filtrer / lire les données LAS dans un tableau numpy?
Réponses:
Votre
PointsXYZIC
est maintenant un tableau numpy. Ce qui signifie que vous pouvez utiliser l' indexation numpy pour filtrer les données qui vous intéressent. Par exemple, vous pouvez utiliser un index de booléens pour déterminer les points à saisir.Vous devriez maintenant avoir un tableau numpy avec toutes les valeurs où les données sont non classifiées ou rectifiées. Pour obtenir les valeurs qui ont été classées, vous pouvez utiliser:
la source
Utilisez laspy pour lire les fichiers LAS et renvoyer facilement les données sous forme de tableaux numpy avec lesquels vous pouvez interagir. laspy est pur python, est presque aussi rapide que libLAS, a plus de fonctionnalités que les liaisons libLAS Python et est beaucoup plus facile à déployer.
la source
Je m'excuse si vous le savez déjà, mais LASTools est un fantastique outil Open Source qui s'intègre désormais à la fois avec ArcGIS et QGIS 2.0 - Il a des options pour filtrer les données de la manière que vous regardez.
la source