使用Geolife数据集提取轨迹停留点(1)

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

在此博客的基础上计算速度值,使用3\sigma原则排除异常速度值,即轨迹的异常点,处理完成后将原来的.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文件为一条轨迹,后续将介绍如何从每条轨迹中提取停留点以及停留点位置、开始时间以及停留时间相关信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值