使用liblas文件将数据存储为las却打不开问题的原因

Posted 尘世俗人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用liblas文件将数据存储为las却打不开问题的原因相关的知识,希望对你有一定的参考价值。

liblas是一个通用的las库,用来对las文件进行读写操作。今天使用时,明明数据写入的很正确很成功,但是使用多个点云浏览软件测试,都打开,最后发现了问题所在,再次Mark一下,以供参考。

主要代码如下:

     // 设置文件头,点数、格式、缩放因子、偏移量
        liblas::Header header;
        header.SetVersionMajor(1);
        header.SetVersionMinor(2);
        header.SetDataFormatId(liblas::PointFormatName::ePointFormat3);
        header.SetScale(0.001, 0.001, 0.001);
        header.SetOffset(int(tempPt.GetX()), int(tempPt.GetY()), 0);
     // 建立存储文件
        ofstream outPt(newOutPath.c_str(), ios::out | ios::binary);
        if (!outPt.is_open())
        {
            return 1;
        }

        liblas::Writer writer(outPt, header);
        liblas::Point point(&header);

        double minPt[3] = {9999999, 9999999, 9999999};
        double maxPt[3] = {0, 0, 0};
        double pt[3] = {0};
    
     // 中间是写入点云及记录点的个数      header.SetPointRecordsCount(point_count); header.SetPointRecordsByReturnCount(
0, point_count); header.SetMax(maxPt[0], maxPt[1], maxPt[2]); header.SetMin(minPt[0], minPt[1], minPt[2]); writer.SetHeader(header);
    
     // 注意此处有问题
     outPt.close();

这是很一般的写法,应该是没有问题的,实际上保存的las文件打不开。原因竟然是“outPt.close()”,在这里,将这句注释掉就对了,我暂时也不清楚为什么。

以上是关于使用liblas文件将数据存储为las却打不开问题的原因的主要内容,如果未能解决你的问题,请参考以下文章

在python中使用liblas和laspy读取las文件的问题

为啥我ps保存的源文件却打不开

为啥07的Excel能打开xls 却打不开xlsx的文件。

为啥我安装了mysql却打不开呢

修改hosts(ipv6)文件后,能ping通但却打不开网页,这是怎么回事?

vue-cli项目执行dev可以打开网站,直接点击文件或发布后却打不开的问题