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

原文地址:https://www.cnblogs.com/waterbbro/p/14039222.html