属性错误浮点对象没有属性'append'
Attribute error float object has no attribute 'append'
我尝试对打开 LAS 文件的代码进行更改,然后将结果保存在新的 LAS 文件中。 las 文件包含具有坐标(X 和 Y)和值(如 Z 表示高程)的点。不幸的是,如果我不将保存部分放入其中,代码就可以工作,但是当我像下面这样操作时,出现以下错误:
Traceback (most recent call last):
File "C:\Users\Geri\Desktop\Sync\pythonlas\envisecond.py", line 33, in <module>
listx1=p.append(listx1, float[newx])
AttributeError: 'float' object has no attribute 'append'
enter code here
到目前为止,我知道我需要一个数组来将值保存到代码末尾的 las 文件中:
import laspy
import laspy.file
import numpy as p
header = laspy.header.Header()
inFile2 = laspy.file.File("C:\Users\Geri\Desktop\Sync\pythonlas\mapperclip\2clip.las", mode = "r")
inFile3 = laspy.file.File("C:\Users\Geri\Desktop\Sync\pythonlas\mapperclip\3clip.las", mode = "r")
point_records = inFile2.points
point_records = inFile3.points
t=0
listx1=p.array([], dtype=float)
listy1=p.array([], dtype=float)
listz1=p.array([], dtype=float)
while t < 415:
z=0
q=0
p=0.1
while z==0:
xmin=inFile3.x[t]-p
ymin=inFile3.y[t]-p
xmax=inFile3.x[t]+p
ymax=inFile3.y[t]+p
n=0
for points in inFile2.points:
ax=inFile2.x[n]
ay=inFile2.y[n]
if ax > xmin and ax < xmax and ay < ymax and ay > ymin:
newx = [inFile3.x[t]-((inFile3.x[t]-inFile2.x[n])/2)]
newy = [inFile3.y[t]-((inFile3.y[t]-inFile2.y[n])/2)]
newz = [inFile3.z[t]-((inFile3.z[t]-inFile2.z[n])/2)]
listx1=p.append(listx1, float[newx])
listy1=p.append(listy1, float[newy])
listz1=p.append(listz1, float[newz])
print listx1
print n
n+=1
q+=1
t+=1
else:
n+=1
if q>0:
z+=1
else:
p+=0.1
outfile = laspy.file.File("C:\Users\Geri\Desktop\Sync\pythonlas\mapperclip\output2.las", mode="w", header=header)
outfile.X = [listx1]
outfile.Y = [listy1]
outfile.Z = [listz1]
outfile.close()
您在外部 while
循环的开头将 p
设置为 float
:
p=0.1
在顶部屏蔽 numpy
导入:
import numpy as p
所以在 while
循环中 p
不再是模块,它是一个 float
对象并且调用 p.append()
调用将失败。
为模块或 float
值使用不同的名称。
我尝试对打开 LAS 文件的代码进行更改,然后将结果保存在新的 LAS 文件中。 las 文件包含具有坐标(X 和 Y)和值(如 Z 表示高程)的点。不幸的是,如果我不将保存部分放入其中,代码就可以工作,但是当我像下面这样操作时,出现以下错误:
Traceback (most recent call last):
File "C:\Users\Geri\Desktop\Sync\pythonlas\envisecond.py", line 33, in <module>
listx1=p.append(listx1, float[newx])
AttributeError: 'float' object has no attribute 'append'
enter code here
到目前为止,我知道我需要一个数组来将值保存到代码末尾的 las 文件中:
import laspy
import laspy.file
import numpy as p
header = laspy.header.Header()
inFile2 = laspy.file.File("C:\Users\Geri\Desktop\Sync\pythonlas\mapperclip\2clip.las", mode = "r")
inFile3 = laspy.file.File("C:\Users\Geri\Desktop\Sync\pythonlas\mapperclip\3clip.las", mode = "r")
point_records = inFile2.points
point_records = inFile3.points
t=0
listx1=p.array([], dtype=float)
listy1=p.array([], dtype=float)
listz1=p.array([], dtype=float)
while t < 415:
z=0
q=0
p=0.1
while z==0:
xmin=inFile3.x[t]-p
ymin=inFile3.y[t]-p
xmax=inFile3.x[t]+p
ymax=inFile3.y[t]+p
n=0
for points in inFile2.points:
ax=inFile2.x[n]
ay=inFile2.y[n]
if ax > xmin and ax < xmax and ay < ymax and ay > ymin:
newx = [inFile3.x[t]-((inFile3.x[t]-inFile2.x[n])/2)]
newy = [inFile3.y[t]-((inFile3.y[t]-inFile2.y[n])/2)]
newz = [inFile3.z[t]-((inFile3.z[t]-inFile2.z[n])/2)]
listx1=p.append(listx1, float[newx])
listy1=p.append(listy1, float[newy])
listz1=p.append(listz1, float[newz])
print listx1
print n
n+=1
q+=1
t+=1
else:
n+=1
if q>0:
z+=1
else:
p+=0.1
outfile = laspy.file.File("C:\Users\Geri\Desktop\Sync\pythonlas\mapperclip\output2.las", mode="w", header=header)
outfile.X = [listx1]
outfile.Y = [listy1]
outfile.Z = [listz1]
outfile.close()
您在外部 while
循环的开头将 p
设置为 float
:
p=0.1
在顶部屏蔽 numpy
导入:
import numpy as p
所以在 while
循环中 p
不再是模块,它是一个 float
对象并且调用 p.append()
调用将失败。
为模块或 float
值使用不同的名称。