我们现在有这样的一个dataframe,名字为dart
我们需要这样一个DataFrame,每一行有两列,一列是new_installation_id,表示这个轨迹的id;另一列就是这个new_installation_id的轨迹
dart_new = dart[['new_installation_id']]
dart_new
拼接经纬度
dart_new['longitude_latitude'] = dart[['longitude', 'latitude']].apply(lambda x: ' '.join(x.astype(str)), axis=1)
dart_new
每一个new_installation_id 拼接 dart_new
dart_new = dart_new.groupby('new_installation_id')['longitude_latitude'].apply(list).reset_index(name='trajectories')
dart_new
如果需要像FMM 笔记:FMM(colab上执行)【官方案例解读】-CSDN博客一样的输入格式,需要额外的一步操作
from shapely.geometry import LineString
def transfer_str_wkt(traj):
tmp_traj=traj.strip("[]").replace("'", "").split(', ')
points=[]
for p in tmp_traj:
lon,lat=p.split()
points.append((float(lon),float(lat)))
return(LineString(points))
gdf['geom']=gdf['trajectories'].apply(transfer_str_wkt)
gdf