在实际的项目,有很多时候,我们会遇到一个巨大的las文件,比如7,8个G的大小。这时候,我们需要对这个大的las文件进行分块保存为多个小的las文件。可是按照点的个数进行保存,也可以按照内存的大小保存。实际上也就是对点云的读写过程。具体的代码如下所示:
void lasFileDivision()
{
LASreadOpener lasreadopener;
LASwriteOpener laswriteopener;
//laslib只允许'\\'格式的文件路径。
std::string lasFile("C:\\test\\test.las");
int num = 1;
//打开las文件
lasreadopener.set_file_name(lasFile.c_str());
LASreader* lasreader = lasreadopener.open();
size_t count = lasreader->header.number_of_point_records;
printf("%d", count);
//LASpoint *one_point = new LASpoint();
int loop_time = 0;
LASwriter* laswriter = nullptr;
while (lasreader->read_point()) //只让输出前 10 行坐标
{
//按照每889000个点一个las文件进行分割
if (loop_time % 889000 == 0)
{
//每打开一次文件都需要close();否则文件会一直占用。
if(laswriter != NULL)
{
laswriter->close();
}
stringstream ss;
ss

本文介绍了一种将大型las文件分割成多个较小las文件的方法,通过按点数分割并保持原有点云属性,适用于处理巨大点云数据集。
最低0.47元/天 解锁文章
3009

被折叠的 条评论
为什么被折叠?



