Python将经纬度dd.mmssss格式转换为dd.dddddd格式

1. 概况

在实际测绘生产中,一般情况下GPS设备导出dd.mmssss格式经纬度信息,但某些软件需要到dd.dddddd格式的坐标数据,利用Python实现读取GPS手簿的实测数据直接进行坐标格式转换并保存为Excel格式文档,简单、快捷、准确。

2. 思路与实现

第一步骤,先读取目标文件.txt,并存储到列表data[ ]中,原始坐标数据是利用空格进行隔开,按照空格分列存储在excel格式的变量df中,方便后续进行计算与转换。

data = []
with open('input.txt', 'r') as file:
    for each in file:
        data.append(each.split())

df = pd.DataFrame(data)

此时输出df为:

     0        1            2         3
0    1  *.470367302  *.551190866  *.3569
1    2  *.472709341  *.545803830  *.0081
2    3  *.472703918  *.545821577  *.0894

第二步,选择第二列和第三列数据进行转换,并将转换后的数据增加在表格后边

column_index = 1
column_index2 = 2
#*********将经纬度dd.mmssss转换为dd,同时在excel末端增加经度纬度列*************
df['纬度'] = df[column_index].apply(lambda x:int(x[0:2]) + int(x[3:5])/60 + int(x[5:])/3600000000)
df['经度'] = df[column_index2].apply(lambda x:int(x[0:3]) + int(x[4:6])/60 + int(x[6:])/3600000000)

此时输出的df为:

     0        1            2        3       纬度       经度
0    1  *.470367302  *.551190866  *.3569  *.783435  *.916997
1    2  *.472709341  *.545803830  *.0081  *.784086  *.901612
2    3  *.472703918  *.545821577  *.0894  *.784084  *.901617

第三步,选择想要的列数据并保存。本案例选择了点号,经度,纬度和高程数据。

selected_columns = df[[0,"纬度", "经度",3]]  # 选择想要的列并按要求顺序放置
selected_columns.to_excel(output_path, index=False, header=False ,engine="openpyxl")  # header = false 不保存表头

3. 总结

程序成功运行,虽只有简单的几个步骤完成了坐标格式转换和输出,但作为一名Python初学者在编程过程中也做了大量思考和尝试也从案例中学习不少知识,上述的方法不是唯一的思路,也不是最优代码,仅供参考。有更加简洁高效的思路欢迎大家讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值