目录
一、导入LasTools库
参考博客1:QT中配置LASLib实现.las格式点云文件读取
参考博客2:LAS点云的读写以及投影信息的读写(LASlib)
参考博客3:点云:LAStools / LASlib 读写点云
LAS文件格式描述PDF下载:官方下载PDF
下载好编译过的LasTools并解压
.pro
文件中添加
#导入LasTools库
INCLUDEPATH += D:\LAStools\include\LASlib //.cpp文件以及.h文件路径
LIBS += -LD:\LAStools\lib\LASlib\Release\ //.lib文件路径,我用的是release
-lLASlib //lib文件具体名字
+= 是不覆盖追加
-L是转译,后面是导入lib文件的文件夹路径
-l是转译,引入lib文件
- 在
.h
或者.cpp
文件中加入
#include <LASlib/lasreader.hpp>
#include <LASlib/laswriter.hpp>
二、LAS文件信息
1、LAS文件的头文件信息以及对应的意思
1.1、常用的读取与写入的信息
//打印头文件信息
// 初始化 header
LASheader lasHeader = lasreader->header;
//x,y,z三个方向的偏移值
F64 x_offset = lasHeader.x_offset;
F64 y_offset = lasHeader.y_offset;
F64 z_offset = lasHeader.z_offset;
//x,y,z三个方向的比例尺因子
F64 x_scale_factor = lasHeader.x_scale_factor;
F64 y_scale_factor = lasHeader.y_scale_factor;
F64 z_scale_factor = lasHeader.z_scale_factor;
//点云数据x,y,z三个方向的的最大、最小值
F64 min_x = lasHeader.min_x;
F64 max_x = lasHeader.max_x;
F64 min_y = lasHeader.min_y;
F64 max_y = lasHeader.max_y;
F64 min_z = lasHeader.min_z;
F64 max_z = lasHeader.max_z;
//点数据格式ID,说明点数据的存储格式,0-10具体看PDF
U8 point_data_format = lasHeader.point_data_format;
//点数据记录区长度 和point_data_format 有关,具体大小看LAS规定
U16 point_data_record_length = lasHeader.point_data_record_length;
//点云数据的具体数量
U32 number_of_point_records = lasHeader.number_of_point_records;
//每个返回的总点记录数组
U32 number_of_points_by_return[5];
memcpy(number_of_points_by_return, lasHeader.number_of_points_by_return, sizeof(U32)*5);
//读取.las文件的版本号
//主
U8 version_major = lasHeader.version_major;
//副
U8 version_minor = lasHeader.version_minor;
坐标 = 采集值×比例因子(
scale_factor
)+偏移值(offset
)。
1.2、写入需要注意的信息
写入时设置这个必须设置正确,下面为初始化的时候的大小,如有附加其他信息,如user_data_in_header
请及时修改header_size
和offset_to_point_data
//部分只有1.4版本有,请看LAS标准,或者LASheader 类
//las文件的头文件大小,LAS1.4版本为375, LAS1.3为235,LAS1.2为227
//LAS1.4比1.3多140,LAS1.3比1.2多8
lasHeader.header_size = 375;
//从文件开始到第一个点存储数据位置的字节数,一般和上面header_size一样
lasHeader.offset_to_point_data = lasHeader.header_size;
h e a d e r − s i z e = ( o r i g i n ) h e a d e r − s i z e + u s e r − d a t a − i n − h e a d e r − s i z e header_{-}size = (origin) header_{-}size +user_{-}data_{-}in_{-}header_{-}size header−size=(origin)header−size+