千呼万唤始出来,上一篇文章讲了LAS的文件结构,那这篇就讲一下Matlab是怎么读取文件对应位置的数据的。
说出来你们可能不信,整个读取过程只涉及三个函数,fopen、fread、fseek。
首先是fopen,对于此函数的用法,我们仅挑选对处理点云最有用、最简单的方式:
fid
此处返回值为大于等于3的正整数,通常情况下是3,后续在不使用fclose的情况下,每调用一次fopen函数,fid的值加1。其他参数不填,使用默认值。
其次是fread,这个函数用于读取文件中的数据,在读取las文件时选择如下调用方式:
Value
Value存储所读取的值,该值的类型由参数precision决定,变量所占存储空间由参数size决定。
最后时fseek,这个函数在处理las文件时的调用方式为:
fseek
此函数其实就是为了移动标识符到指定位置,标识符就是告诉电脑:我们要处理这个文件的***位置了,我把标志放在这了。
offset就是我要移动的字节数,origin就是我从哪开始算移动的字节数(从文件开头算就是‘bof’,当前位置开始算就是‘cof’,结尾开始算就是‘eof’)。
理论讲完了我们具体操作一个实例:
根据上一篇文章我们看到每个las文件是由对应版本号的,那我们就读取一个las文件的主、副版本号吧。
function
根据前一篇文章中的文件结构表,我们发现版本号存储位置开始于距离文件开头的第24个字节(4+2+2+4+2+2+8=24),于是使用fseek将标识符移动到指定位置:
fseek
之后我们使用fread函数读取该位置的数据:
version1
查表得主版本号的数据类型为‘uchar’,占用1储存空间。
最后看一下输出版本编号算法的结果
>>
成功啦!这样我们就完成了对于las文件的数据读取,大家可以试着读取一下自己的las数据中的数据。
随缘更新,有事留言。
ball ball大家看完点个赞同吧!码字不易啊!T.T