las数据的读写及注意事项总结

  • 关于las数据的数据规范

从本质上来说,LAS格式是一种二进制文件格式。其目的是提供一种开放的格式标准,允许不同的硬件和软件提供商输出可互操作的统一格式。现在LAS格式文件已成为LiDAR数据的工业标准格式。

 

LAS文件按每条扫描线排列方式存放数据,包括激光点的三维坐标、多次回波信息、强度信息、扫描角度、分类信息、飞行航带信息、飞行姿态信息、项目信息、GPS信息、数据点颜色信息等。LAS格式定义中用到的数据类型遵循1999年ANSI(American National Standards Institute,美国国家标准化协会)C语言标准。

 

一个符合LAS标准的LIDAR文件分为三个部分:公用文件头块(PUBLIC HEADER BLOCK)、变量长度记录(VARIABLE LENGTH RECORDS)和点数据记录(POINT DATA RECORD)。

a、PUBLIC HEADER BLOCK介绍

其中文件记录了点云的版本号(1.1,1.2,1.3等)记录在version Minor字段中,Point Data Record Length决定了每一个点云的长度。 Point Data Format ID 不相同,Point Data Record Length的值也不相同,点云的点的属性也不相同。

 

注:(二进制文件流的长度-Offset to point data)/ Point Data Record Length=点云的个数即头文件中的Number of Point Records

b、POINT DATA RECORD介绍

C--class(所属类)
F一flight(航线号)
T一time(GPS时间)
I一intensity(回波强度)
R一return(第几次回波)
N一number of return(回波次数)
A一scan angle(扫描角)
RGB一red green blue(RGB颜色值)

其中头文件中的Point Data Format ID 不相同,Point Data Record Length的值也不相同,点云的点的属性也不相同。上图是比较常用的,还有一些其他的字段属性UserData、BitMask等此时的Point Data Format ID与上图的Point Data Format ID就不是同一种类型了。

 

  • 常用的开源的las文件的读写库

提到常用的开源库,就会用到市面上比较常用的两个开源库如laslib与liblas。刚开始的时候会傻傻分不清两者的关系。

liblas和laslib是两个不一样的库,laslib是lastools这个工具编译出来的库,是一个教授维护的库,liblas是一个工程师维护的库。在竞争抗衡的过程中因为一些问题后面liblas库没有继续更新了维护了,然后liblas库的开发者推出了一个新的库来对抗lastools 就是pdal,准备继续与lastools竞争。

现在市面上常用的基本都是lastools编译出来的laslib库,C++可以直接引用使用该库对las文件进行读写。

Github上也有一些其他的版本的如C#版本的,Python版本的等

LASTools下载地址

https://github.com/LAStools/LAStools

C#使用laslib或liblas读写las数据

https://github.com/wren11/AtlassLASLib

Python使用laspy或pylas读写las数据

https://github.com/tmontaigu/pylas

https://github.com/laspy/laspy

  • las数据读写中存在的问题

las数据的要依据las属性的类型进行存储,譬如强度值没有小数位,xyz都是int32类型等。

las头文件中的 XYZ scale是可以对xyz的值进行缩放的,设置xyz的缩放比。

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值