将上面程序可视化,并打印结果
时间: 2023-08-16 22:08:17 浏览: 81
好的,我可以为您编写一个带有图形界面的可视化程序,并将计算结果打印出来。以下是程序代码:
```python
import os
import nmea
from geopy import distance
import tkinter as tk
from tkinter import filedialog
# 定义函数,用于读取和解析 nmea 数据
def read_nmea_file(file_path):
nmea_data = []
with open(file_path, 'r') as f:
for line in f.readlines():
# 将每一行数据解析为 nmea 对象
nmea_obj = nmea.NMEA(line.strip())
if nmea_obj.valid:
nmea_data.append(nmea_obj)
return nmea_data
# 定义函数,用于计算两个经纬度之间的距离
def calculate_distance(lat1, lon1, lat2, lon2):
point1 = (lat1, lon1)
point2 = (lat2, lon2)
return distance.distance(point1, point2).m
# 定义函数,用于比较两个本地 nmea 数据的精度误差
def compare_nmea_files(file1, file2, output_file):
# 读取并解析两个 nmea 数据文件
nmea_data1 = read_nmea_file(file1)
nmea_data2 = read_nmea_file(file2)
# 比较两个文件中相同位置的经纬度信息之间的距离,计算精度误差
errors = []
for i in range(min(len(nmea_data1), len(nmea_data2))):
lat1, lon1 = nmea_data1[i].latitude, nmea_data1[i].longitude
lat2, lon2 = nmea_data2[i].latitude, nmea_data2[i].longitude
error = calculate_distance(lat1, lon1, lat2, lon2)
errors.append(error)
# 将精度误差输出到文件中
with open(output_file, 'w') as f:
for error in errors:
f.write('{}\n'.format(error))
# 返回计算结果
return errors
# 定义函数,用于选择要比较的 nmea 数据文件
def choose_files():
file1 = filedialog.askopenfilename(title='选择第一个 nmea 数据文件', filetypes=[('NMEA', '*.log')])
file2 = filedialog.askopenfilename(title='选择第二个 nmea 数据文件', filetypes=[('NMEA', '*.txt')])
output_file = filedialog.asksaveasfilename(title='选择输出文件', filetypes=[('Text', '*.txt')], defaultextension='.txt')
if file1 and file2 and output_file:
# 计算精度误差,并打印结果
errors = compare_nmea_files(file1, file2, output_file)
print('计算完成,结果如下:')
print('平均误差:{} m'.format(sum(errors) / len(errors)))
print('最大误差:{} m'.format(max(errors)))
print('最小误差:{} m'.format(min(errors)))
# 创建窗口和控件
window = tk.Tk()
window.title('nmea 数据比较器')
window.geometry('300x150')
label = tk.Label(window, text='选择要比较的 nmea 数据文件:')
label.pack(pady=10)
button = tk.Button(window, text='选择文件', command=choose_files)
button.pack(pady=10)
window.mainloop()
```
运行该程序后,会弹出一个窗口,其中包含一个“选择文件”的按钮。单击该按钮后,会弹出文件对话框,您可以在其中选择要比较的两个 nmea 数据文件和输出文件的路径。选择完成后,程序会自动计算精度误差,并将结果打印出来。
注意:由于精度误差的计算需要比较两个文件中相同位置的经纬度信息之间的距离,因此要求两个数据文件中的数据点数量必须相同,否则会出现错误。
阅读全文