将多个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\t", i); /*while (lasreader.ReadNextPoint())*/ // 错误 for (int ii = 0; ii < srcPointNum; ii++) { lasreader.ReadNextPoint(); pt = lasreader.GetPoint();
分析后发现,可能是las库再读完文件后,再次尝试获取点的时候,报的错误。既然是处理现有的las文件,那么点数是已知的,就没必要使用while,直接根据点数使用for来处理,改为for之后,就没有错误了。