首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libLAS Python API中的浮点舍入

libLAS Python API中的浮点舍入
EN

Stack Overflow用户
提问于 2014-03-13 11:57:47
回答 1查看 301关注 0票数 2

我正在尝试使用libLAS Python API将点数据集写入*.las文件。但是我遇到了一些浮点数取整的问题。

代码语言:javascript
复制
>>> from liblas import point
>>> pt=point.Point()
>>> pt.x=2.323
>>> pt.x
2.0
>>>

如果我设置pt.raw_x而不是pt.x,我看不到舍入问题,但没有写入las文件。

代码语言:javascript
复制
>>> pt.raw_x=2.323
>>> pt.raw_x
2.323

我不确定我错过了什么。如果有任何帮助,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2014-03-14 07:40:53

通过来自mloskot的一些指针,我找到了这个问题的解决方案。为了将来的参考和对其他libLAS新手的好处,我在下面发布了我编写的一小段测试代码。它使用来自libLAS website的示例las文件srs.las,修改z值并将其写出到一个新的las文件。

代码语言:javascript
复制
#!/usr/bin/python
import os,string,glob,re,gdal,sys
from liblas import file
from liblas import header
from liblas import point
from datetime import datetime

hout=header.Header()

# Define the las file name
infile="srs.las"

# Create the output las filename
inarr=infile.split('.')
outfil=inarr[0]+"_newnorm.las"

# Open the input las file
l=file.File(infile,mode='r')

# Get the header information
hin=l.header

# Now let's copy some of the header information from infile to outfile
hout.major_version = hin.major_version
hout.minor_version = hin.minor_version
hout.guid = hin.guid
hout.system_id = hin.system_id
hout.software_id = "libLAS Python API"
date = datetime(2014,03,17)
hout.date = date 
hout.offset = hin.offset
hout.scale = hin.scale
hout.compressed = hin.compressed
hout.count = hin.count
hout.data_format_id = hin.data_format_id
hout.dataformat_id = hin.dataformat_id
hout.data_offset = hin.data_offset
hout.point_return_count = hin.point_return_count
hout.srs = hin.srs
hout.version = hin.version
hout.min = hin.min
hout.max = hin.max

print "Number of points: "+str(len(l))

lout=file.File(outfil,mode='w',header=hout)
for p in l:
    x=float(p.x)
    y=float(p.y)
    z=float(p.z)

    # Modify z value
    znorm = z-1

    pt=point.Point()
    pt.set_header(hout)

    pt.x=float(p.x)
    pt.y=float(p.y)
    pt.z=float(znorm)

    pt.intensity = p.intensity
    pt.number_of_returns = pt.number_of_returns
    pt.point_source_id = p.point_source_id
    pt.raw_time = p.raw_time
    pt.return_number = p.return_number
    pt.scan_angle = p.scan_angle
    pt.scan_direction = p.scan_direction
    pt.scan_flags = p.scan_flags
    pt.classification = p.classification
    pt.color = p.color
    pt.flightline_edge = p.flightline_edge

    print "Writing  to output las file"
    lout.write(pt)

l.close()
lout.close()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22368781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档