Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用liblas模块填充liblas.point.point对象?_Python_Lidar_Liblas - Fatal编程技术网

Python 如何使用liblas模块填充liblas.point.point对象?

Python 如何使用liblas模块填充liblas.point.point对象?,python,lidar,liblas,Python,Lidar,Liblas,我使用Python来读取、操作和编写一种特殊的点格式*.las。我有一根绳子 s = "309437.95 6959999.84 118.98 16 1 1 0 0 1 0 112.992 5.9881" 其中第一个元素是X,第二个元素是Y,第三个元素是Z等 使用Liblas,我创建了一个空的Liblas.point.point对象 >>> pt = liblas.point.Point() >>> pt <liblas.point.Point obj

我使用Python来读取、操作和编写一种特殊的点格式
*.las
。我有一根绳子

s = "309437.95 6959999.84 118.98 16 1 1 0 0 1 0 112.992 5.9881"
其中第一个元素是
X
,第二个元素是
Y
,第三个元素是
Z

使用Liblas,我创建了一个空的
Liblas.point.point
对象

>>> pt = liblas.point.Point()
>>> pt
<liblas.point.Point object at 0x0000000005194470>
可能用

>>> pt.get_x
<bound method Point.get_x of <liblas.point.Point object at 0x0000000005194470>>

点对象上有
raw_x
raw_y
raw_z
属性;只需设置以下各项:

pt.raw_x = 309437.95
pt.raw_y = 6959999.84
pt.raw_z = 118.98
还有
x
y
z
属性;从源代码中还不清楚这两种类型之间的区别:

pt.x = 309437.95
pt.y = 6959999.84
pt.z = 118.98
但是库可以直接从.las文件为您生成这些对象,不是吗?以前遇到问题的
文件
类肯定已经返回了这些对象

由于您已更新以显示一些代码,下面是一个更可读的版本:

pt = liblas.point.Point()
s = map(float, s.split())
pt.x, pt.y, pt.z = s[0], s[1], s[11]
pt.intensity, pt.return_number = s[3], s[4]
pt.number_of_returns, pt.scan_direction = s[5], s[6]
pt.flightline_edge, pt.classification = s[7], s[8]
pt.scan_angle = s[9]

点对象上有
raw_x
raw_y
raw_z
属性;只需设置以下各项:

pt.raw_x = 309437.95
pt.raw_y = 6959999.84
pt.raw_z = 118.98
还有
x
y
z
属性;从源代码中还不清楚这两种类型之间的区别:

pt.x = 309437.95
pt.y = 6959999.84
pt.z = 118.98
但是库可以直接从.las文件为您生成这些对象,不是吗?以前遇到问题的
文件
类肯定已经返回了这些对象

由于您已更新以显示一些代码,下面是一个更可读的版本:

pt = liblas.point.Point()
s = map(float, s.split())
pt.x, pt.y, pt.z = s[0], s[1], s[11]
pt.intensity, pt.return_number = s[3], s[4]
pt.number_of_returns, pt.scan_direction = s[5], s[6]
pt.flightline_edge, pt.classification = s[7], s[8]
pt.scan_angle = s[9]

看看这个类,它看起来好像是要与C库接口的,而不是直接使用的..也许你需要得到这样的点pt.get_x()@IshikawaYoshi:the
get_x
set_x
方法是由
x
属性使用的
pt.x=something
将调用
set\ux
print pt.x
将调用
get\ux
。不需要直接给他们打电话。:-)是的,我已经理解了我的错误)看看这个类,它看起来好像是为了与C库接口,而不是直接使用..也许你需要像这样得到点pt.get_x()@IshikawaYoshi:the
get_x
set_x
方法由
x
属性使用
pt.x=something
将调用
set\ux
print pt.x
将调用
get\ux
。不需要直接给他们打电话。:-)是的,我已经理解了我的错误)是的,它起作用了。也许这不是我用这种方式编写的优雅代码(见上图)@Gianni:x属性使用的方法;例如,它是在访问
pt.x
时调用的函数。如果我希望创建一个新字段(字段x、y、z和h)。我能做到这一点吗?@Gianni:当然,但我怀疑你想先学习更多Python.:-)请参阅,了解这个特殊技巧是如何工作的。sry,了解中断您的讨论,但我认为在liblas模块中,我们已经有了这样解析字符串的方法是的,它可以工作。也许这不是我用这种方式编写的优雅代码(见上图)@Gianni:x属性使用的方法;例如,它是在访问
pt.x
时调用的函数。如果我希望创建一个新字段(字段x、y、z和h)。我能做到这一点吗?@Gianni:当然,但我怀疑你想先学习更多Python.:-)请参阅以了解该技巧是如何工作的。sry可中断您的讨论,但我认为在liblas模块中,我们已经有了这样解析字符串的方法