python lib head_Python 下使用libLAS

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值