Я начал изучать, как манипулировать данными LAS в python, и хотел посмотреть, как другие обрабатывают файлы LAS. Я хотел бы прочитать точки (я использую массив NumPy) и отфильтровать классы 1 и 2 (неклассифицированные и заземленные) в отдельный массив. У меня есть следующий код, но я не могу отфильтровать очки.
# 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
Я видел arcpy.da.featureClassToNumpyArray, но я не хотел импортировать arcpy или преобразовывать его в шейп-файл.
Как еще я могу отфильтровать / прочитать данные LAS в массив Numpy?
Ответы:
Вы
PointsXYZIC
теперь NumPy массив. Это означает, что вы можете использовать индексирование NumPy для фильтрации данных, которые вас интересуют. Например, вы можете использовать индекс логических значений, чтобы определить, какие точки нужно захватить.Теперь у вас должен быть массив Numpy со всеми значениями, в которых данные не классифицированы или заземлены. Чтобы получить значения, которые были классифицированы, вы можете использовать:
источник
Используйте laspy для чтения файлов LAS и легко возвращайте данные в виде пустых массивов, с которыми вы можете взаимодействовать. laspy - это чистый Python, он почти такой же быстрый, как libLAS, имеет больше возможностей, чем привязки libLAS Python, и его гораздо проще развернуть.
источник
Я прошу прощения, если вы уже знаете об этом, но LASTools - это фантастический инструмент с открытым исходным кодом, который теперь интегрируется как с ArcGIS, так и с QGIS 2.0. У него есть опции для фильтрации данных так, как вы смотрите.
источник