读取las文件,错误std::out_of_range错误分析

将多个las文件合并为一个,代码全无错误,在程序没读完一个文件后,会报一个错误:std::out_of_range

以下是代码:

            liblas::Reader lasreader(inLas);
            liblas::Header lasheader = lasreader.GetHeader();
            liblas::Point pt(&lasheader);
            unsigned int srcPointNum = lasheader.GetPointRecordsCount();

            printf("%d	", i);

            /*while (lasreader.ReadNextPoint())*/    // 错误
            for (int ii = 0; ii < srcPointNum; ii++)
            {
                lasreader.ReadNextPoint();
                pt = lasreader.GetPoint();

分析后发现,可能是las库再读完文件后,再次尝试获取点的时候,报的错误。既然是处理现有的las文件,那么点数是已知的,就没必要使用while,直接根据点数使用for来处理,改为for之后,就没有错误了。

原文地址:https://www.cnblogs.com/xingzhensun/p/7008541.html