You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GPS时间转UTC遇ValueError:解包值不足(预期4个,实际3个)

解决GPS时间转UTC时的ValueError: not enough values to unpack错误

错误根源

  1. 输入数据由las2txt -parse xyt生成,每行仅包含x、y、GPS时间三个字段,但代码错误地尝试解包出4个变量(xvalue, yvalue, zvalue, timevalue),字段数量不匹配导致报错。
  2. 代码使用了Python2的print语法,在Python3环境下会触发语法错误;line.split(' ')的分割方式可能因多空格、换行符产生空元素,引发潜在问题。

修复步骤

1. 修正变量解包逻辑

匹配输入的3个字段,同时优化分割逻辑以避免空元素:

xvalue, yvalue, timevalue = line.strip().split()

2. 补充输出所需的z值

由于输入数据不含z坐标,可根据需求设置默认值(示例设为0);若实际LiDAR数据包含z坐标,需将输入命令改为las2txt -parse xyzt ...,再调整解包逻辑为4个变量。

3. 适配Python3的print语法

将Python2的语句改为函数形式:

print(xvalue, yvalue, z_value, datetimestr)

修正后的完整代码

import datetime
import fileinput

# Unix时间(1970-01-01)与GPS时间(1980-01-06)的秒数差
offset = 315964800


def countleaps(gpsTime):
    """计算已过去的闰秒数"""
    # 闰秒添加时对应的GPS时间点
    leaps = (
        46828800, 78364801, 109900802, 173059203, 252028804,
        315187205, 346723206, 393984007, 425520008, 457056009,
        504489610, 551750411, 599184012, 820108813, 914803214, 
        1025136015
    )

    nleaps = 0
    for leap in leaps:  
        if gpsTime >= leap:
            nleaps += 1
    
    return nleaps

if __name__ == '__main__':
    for line in fileinput.input(r'E:\LiDAR\Staging\GW_Workspace\Beaverhead_Reports\BH_0001.txt'):
        # 匹配输入的3个字段,优化分割逻辑
        xvalue, yvalue, timevalue = line.strip().split()
        gpstime = float(timevalue)
        gpstime += 1e9  # 转换为未调整的GPS时间
        unixtime = gpstime + offset - countleaps(gpstime)
        datetimestr = datetime.datetime.fromtimestamp(unixtime).strftime('%Y-%m-%d %H:%M:%S')
        
        # 补充z值(此处设为默认0,可根据需求修改)
        z_value = 0
        # 适配Python3的print语法
        print(xvalue, yvalue, z_value, datetimestr)

额外说明

  • 若实际需要从LiDAR数据中读取z坐标,只需将输入命令改为las2txt -parse xyzt ...,并将代码中的变量解包语句改为xvalue, yvalue, z_value, timevalue = line.strip().split()即可。
  • line.strip().split()会自动处理换行符、多个连续空格的情况,避免拆分出空字符串导致的解包错误。

内容的提问来源于stack exchange,提问作者Garret

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 18:40:17