本文所用数据示例参考👉详见👈
1.读取序列oxts数据并存储为csv文件
输入:选择oxts序列数据文件夹
输出:csv文件数据
from tkinter import filedialog
import pandas as pd
import numpy as np
import os
def read_oxts(path): # 读取oxts数据
df = pd.read_csv(path, header=None, sep=' ')
return df
def openFile(): # oxts文件夹路径
filename = filedialog.askdirectory(title="Select oxts file folder")
return filename
IMU_COLUMN_NAMES = ['lat', 'lon', 'alt', 'roll', 'pith', 'yaw', 'vn', 've', 'vf', 'vl', 'vu', 'ax', 'ay', 'az', 'af',
'al', 'au', 'wx', 'wy', 'wz', 'wf', 'wl', 'wu', 'posacc', 'velacc', 'navstat', 'numsats', 'posmode',
'velomde', 'orimode'] # 字段名称
results = []
results.append(IMU_COLUMN_NAMES)
paths = openFile()
for filepath, dirnames, filenames in os.walk(paths):
for i in range(len(filenames)):
path = os.path.join(filepath, filenames[i])
file = read_oxts(path)
results.append(file.values.tolist()[0])
results = np.array(results)
pd.DataFrame(results).to_csv("D:\Data\output.csv", header=None, index=None)
2.使用oxts序列数据计算距离
输入:选择oxts序列数据文件夹
输出:gps/imu计算的距离图
import matplotlib.pylab as plt
from tkinter import filedialog
import pandas as pd
import numpy as np
import os
def read_sequence_oxts(): # 读取序列oxts数据
def read_oxts(path):
df = pd.read_csv(path, header=None, sep=' ')
return df
def openFile(): # oxts文件夹路径
filename = filedialog.askdirectory(title="Select oxts file folder")
return filename
IMU_COLUMN_NAMES = ['lat', 'lon', 'alt', 'roll', 'pith', 'yaw', 'vn', 've', 'vf', 'vl', 'vu', 'ax', 'ay', 'az',
'af', 'al', 'au', 'wx', 'wy', 'wz', 'wf', 'wl', 'wu', 'posacc', 'velacc', 'navstat', 'numsats',
'posmode', 'velomde', 'orimode'] # 字段名称
results = []
results.append(IMU_COLUMN_NAMES)
paths = openFile()
for filepath, dirnames, filenames in os.walk(paths):
for i in range(len(filenames)):
path = os.path.join(filepath, filenames[i])
file = read_oxts(path)
results.append(file.values.tolist()[0])
return np.array(results)
def cal_gps_distances(data): # 用GPS计算距离
distances = []
# 使用经纬度计算两个经纬度之间的大圆距离meter
def compute_great_circle_distance(lat1, lon1