1.数据读取
使用liblas中的file类读取las文件,可以生成las文件的迭代器。
from liblas import file
f = file.File('file.las', mode='r')
for p in f:
print('X,Y,Z='+str(p.x)+','+str(p.y)+','+str(p.z))
2.文件版本和格式
LAS文件格式,提供了3种不同的文件格式(1.0,1.1和1.2)和4种不同的点格式(0,1,2,3)。
点格式版本和属性
dataformat_id
Time
Color0
1
X
2
X
3
X
X
无论哪种数据格式都具有的属性
dataformat_idx
y
z
intensity
return_number
number_of_returns
scan_direction
flightline_edge
classification
scan_angle
user_data
3.头部(Header)
获取las文件的头部信息
from liblas import file
f = file.File('LiForest.las', mode='r')
header = f.header
print('主版本号:' + str(header.major_version))
print('副版本号:' + str(header.minor_version))
print('最小值:%f,%f,%f' % (header.min[0],header.min[1],header.min[2]))
print('最大值:%f,%f,%f' % (header.max[0],header.max[1],header.max[2]))
print('比例:%f,%f,%f' % (header.scale[0],header.scale[1],header.scale[2]))
print('偏移量:%f,%f,%f' % (header.offset[0],header.offset[1],header.offset[2]))
print('点云数量:%d' % (header.point_records_count))
点云坐标计算
x = (x_int * x_scale) + x_offset
y = (y_int * y_scale) + y_offset
z = (z_int * z_scale) + z_offset
4.点对象(Point)
from liblas import file
f = file.File('LiForest.las', mode='r')
point = f[0]
print('X=%f,Y=%f,Z=%f' % (point.x,point.y,point.z))
print('scan_angle=%f' % point.scan_angle)
print('scan_direction=%f' % point.scan_direction)
print('return_number=%f' % point.return_number)
print('number_of_returns=%f' % point.number_of_returns)
print('flightline_edge=%f' % point.flightline_edge)
print('classification=%f' % point.classification)
print('time=%s' % str(point.time))
print('intensity=%f' % point.intensity)
print('red=%f' % point.color.red)
print('green=%f' % point.color.green)
print('blue=%f' % point.color.blue)
5.写文件(Writing)
要新建一个las文件,首先需要有一个头信息。头对象会有一些默认值,但是设置dataformat_id和version_minor是十分重要的。
import liblas
from liblas import file
from liblas import header
las_header = header.Header()
las_header.dataformat_id = 1
las_header.minor_version = 1
f = file.File('new.las', mode='w', header=las_header)
pt = liblas.point.Point()
pt.x = 118.0
pt.y = 32.0
pt.z = 12.0
f.write(pt)
f.close()
来源:https://www.cnblogs.com/bcxlz/p/10169148.html