根据时间戳选择数据后,无法使用地理数据框几何调用 LineString来自匀称

问题描述

我试图找到在特定时间范围内行驶的距离。 为此,我想我会使用 Linestring:

mylength =Linestring(gdf_local.geometry).length

如果我立即在我的地理数据框上使用它,这确实有效。但是,如果我根据时间戳选择一些数据,它就不再起作用了。

gdf_local=gdf_local[(gdf_local['Timestamp'] > dtt.datetime.strptime(Start_time,'%d/%m/%Y %H:%M:%s')) &
                        (gdf_local['Timestamp'] < dtt.datetime.strptime(End_time,'%d/%m/%Y %H:%M:%s'))]

经过一些尝试和测试,我能够将问题减少到这个程度,但我仍然完全不明白为什么它不起作用。我可能可以创建一个解决方法,但我认为这是最好的,如果我理解它为什么不起作用,那么我将来可以使用它。

所以我的代码是这样的:

from shapely.geometry import Linestring
import pandas as pd
import datetime as dtt
import geopandas

#crs = 2056 (swiss)
df= {'Timestamp': ['2019-07-24 08:02:38','2019-07-24 08:02:39','2019-07-24 08:08:46'],'Latitude': [2613496,2613495,2613498],'Longitude': [1265201,1265205,1265207]}

gdf_local= geopandas.GeoDataFrame(
    df,geometry=geopandas.points_from_xy(df.Latitude,df.Longitude))
gdf_local=gdf_local.set_crs(epsg=2056)

print(Linestring(gdf_local.geometry).length)

Start_time ='2019-07-24 08:02:38'
End_time= '2019-07-24 08:02:39'

gdf_local=gdf_local[(gdf_local['Timestamp'] > dtt.datetime.strptime(Start_time,'%d/%m/%Y %H:%M:%s'))]

print(Linestring(gdf_local.geometry).length)

第一次可以打印长度,第二次不行。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)