laspy读取laz点云文件--TypeError: a bytes-like object is required, not 'FakeMmap'
1.缘由
在使用python结合laspy读取laz格式的点云的时候,突然发现之前正常运行的代码出现了错误。搜索后发现此问题,解答甚少,仅在GitHub对应laspy的issues下有解答,故而记录之。
2.问题描述
在运行下面代码时出错,具体错误为TypeError: a bytes-like object is required, not 'FakeMmap'。看大家的解释是说不适应numpy 1.17版本,可适应numpy 1.16,改后可行。
inFile = File('C:/data/lidar.laz', mode='r')
3.解决办法
查看numpy版本,发现为1.17.4。
import numpy
numpy.__version__
将numpy版本降到1.16.1。
pip3 uninstall numpy
pip3 install numpy==1.16.1
正文已完!
看Github上说,可修改报错指向的base.py的部分代码也可以实现,我试后均未成功(同样的改动方式,修改地方不同)。
1)第一种改动
143 _pmap = np.frombuffer(self._mmap, self.pointfmt,
to
143 _pmap = np.frombuffer(self._mmap.__buffer__, self.pointfmt,
2)第二种改动
163 _pmap = np.frombuffer(self._mmap, self.pointfmt,
to
163 _pmap = np.frombuffer(self._mmap.__buffer__, self.pointfmt,
4.解决办法
参考链接:https://github.com/laspy/laspy/issues/112