记录一个BUG:KDTree在python 3中不能正常使用

在利用python对读取的点云数据构建KDTree索引时,可以利用Scipy函数库中的spatial库来构建kd树索引。
读取点云数据如下:

import laspy
import numpy as np
#las文件位置
lasfile = 'E:\las\Site1.las'
#打开las文件,‘r’表示以只读模式read
inFile = laspy.file.File(lasfile,mode = 'r')
#读取激光雷达点云的xyz坐标
x,y,z = inFile.x,inFile.y,inFile.z

读取的x,y,z点云数据均为等长的一维列表

构建KD树索引

from scipy import spatial
#封装x,y,z
lasdata = list(zip(x,y,z))
print(lasdata)
#构建kd树索引
tree = spatial.KDTree(lasdata)

运行错误显示:

Traceback (most recent call last):
  File "E:/pycharm/las_test/las_read.py", line 30, in <module>
    tree = spatial.KDTree(lasdata)
  File "C:\Programs\Python\Python38\lib\site-packages\scipy\spatial\kdtree.py", line 244, in __init__
    self.n, self.m = np.shape(self.data)
ValueError: not enough values to unpack (expected 2, got 0)

问题是在Python 3中,它zip返回一个迭代器,并且当KDTree代码np.asarray()使用其参数调用时,将创建一个具有单个元素的“对象”数组:

解决办法:

zip()更改为list(zip()),以便它也可以在Python 3中工作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值