Как заполнить объект liblas.point.Point с помощью модуля Liblas?
Я использую 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 object at 0x0000000005194470>
После этого мне нужно заполнить этот объект, потому что он пуст.
>>> pt.x, pt.y,pt.z
(0.0, 0.0, 0.0)
вероятно, используя
>>> pt.get_x
<bound method Point.get_x of <liblas.point.Point object at 0x0000000005194470>>
Я хотел бы сказать спасибо за помощь и предложение, мне действительно нужно решить этот шаг.
по предложению Мартина Питерса
s = "%s %s %s" % (s, value, nh)
>>> s
'309437.95 6959999.84 118.98 16 1 1 0 0 1 0 112.992 5.9881'
# create a liblas.point.Point
pt = liblas.point.Point()
pt.x = float(s.split()[0])
pt.y = float(s.split()[1])
pt.z = = float(s.split()[11]) # the new Z value
pt.intensity = = int(s.split()[3])
pt.return_number= int(s.split()[4])
pt.number_of_returns = int(s.split()[5])
pt.scan_direction = int(s.split()[6])
pt.flightline_edge = int(s.split()[7])
pt.classification = int(s.split()[8])
pt.scan_angle = int(s.split()[9])
1 ответ
Есть raw_x
, raw_y
а также raw_z
свойства объекта Point; просто установите те:
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 для вас, не так ли? File
класс, с которым у вас были проблемы, прежде чем, конечно, уже возвращает эти объекты
И так как вы обновились, чтобы показать некоторый код, вот более читаемая версия этого:
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]