当前位置: 首页 > 工具软件 > libLAS > 使用案例 >

Python 下使用libLAS

呼延辰龙
2023-12-01

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_idTimeColor
0
1X
2X
3XX

无论哪种数据格式都具有的属性

dataformat_id
x
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()
posted on 2018-12-24 16:05  编程行路者 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/bcxlz/p/10169148.html

 类似资料: