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初学者在编程过程中也做了大量思考和尝试也从案例中学习不少知识,上述的方法不是唯一的思路,也不是最优代码,仅供参考。有更加简洁高效的思路欢迎大家讨论。