1 Geolife数据集介绍
https://blog.csdn.net/qq_40206371/article/details/132720965?spm=1001.2014.3001.5501
2 数据预处理
参考博客https://blog.csdn.net/qq_40206371/article/details/132733842
在此博客的基础上计算速度值,使用原则排除异常速度值,即轨迹的异常点,处理完成后将原来的.plt文件保存为.csv文件,以便进行后续的展示和处理。
下面代码以用户003轨迹数据为例
# 定义文件夹路径
import os
import pandas as pd
from geopy import distance
folder_path = 'data/003/Trajectory' # 替换为实际的文件夹路径
output_folder = 'processed_data/003' # 替换为保存 CSV 文件的文件夹路径
# 遍历文件夹中的所有 .plt 文件
for file_name in os.listdir(folder_path):
if file_name.endswith('.plt'): # 只处理 .plt 文件
file_path = os.path.join(folder_path, file_name)
data = pd.read_csv(file_path, skiprows=6, header=None)
data.columns = ['Latitude', 'Longitude', 'Not_Important1', 'Altitude', 'Not_Important2', 'Date', 'Time']
data = data[['Latitude', 'Longitude', 'Altitude', 'Date', 'Time']]
data['Datetime'] = pd.to_datetime(data['Date'] + ' ' + data['Time'])
# to_datetime将这一列转换成时间
data = data[['Latitude', 'Longitude', 'Altitude', 'Datetime']]
data['Time_Difference'] = data['Datetime'].diff()
data['Time_Difference'] = data['Datetime'].diff().dt.total_seconds()
distances = [None]
for i in range(1, len(data)):
point1 = [data.at[i - 1, 'Latitude'], data.at[i - 1, 'Longitude']]
point2 = [data.at[i, 'Latitude'], data.at[i, 'Longitude']]
dis = distance.distance(point1, point2).meters
# 相邻两个点的距离(以米结算)
distances.append(dis)
data['distance'] = distances
velocity = [None]
for i in range(1, len(data)):
v = data.at[i, 'distance'] / data.at[i, 'Time_Difference']
velocity.append(v)
data['velocity'] = velocity
desc = data['velocity'].describe()
# 将 mean 和 std 分别赋给不同的变量
mean_velocity = desc['mean']
std_velocity = desc['std']
r = mean_velocity+3*std_velocity
data = data[(data['velocity'] <= r)]
data = data[['Latitude', 'Longitude', 'Datetime','Time_Difference','distance']]
# 创建新的 CSV 文件名
output_file_name = file_name.replace('.plt', '.csv')
output_file_path = os.path.join(output_folder, output_file_name)
# 将处理后的数据保存为 CSV 文件
data.to_csv(output_file_path, index=False)
每个.csv文件为一条轨迹,后续将介绍如何从每条轨迹中提取停留点以及停留点位置、开始时间以及停留时间相关信息。