我有一堆线串的geopandas数据框,其中的一些数据与每个顶点/点相关:
Point_x = (Lat, Lon, Time, ID, Data1, Data2, Data3)
这些点将根据ID转换为线串,并按时间排序。
我想在满足某些条件的地方断开线串。此时,点之间的距离大于某个值。将来,数据字段的功能可能会有所价值。例如,当Speed超过5 kph时拆分线串。
当前的问题是,某些轨道是由具有重复ID的点形成的,因此线串在很长的距离上来回跳跃,我希望有一个阈值来打破这些线。
关于构建此方法的正确方法或可能有用的库/方法的任何想法?
该数据帧有超过15万条磁道,每个磁道中有许多点,因此效率会很高。
这是轨道DF的示例:
ID geometry
204235000 LINESTRING (37.62001 -28.99535, 37.62015 -28.9...
205400000 LINESTRING (3.807816666666666 -18.083181666666...
207138000 LINESTRING (22.73206 -34.97915833333333, 22.73...
209016000 LINESTRING (8.447673333333331 -23.522783333333...
这是DF点的示例。共有18列,包括日期时间,时间点(经度,纬度),速度,大小等:
Index Heading Latitude Longitude ID
20 92.8 -35.946802 13.089695 210725000
21 93.5 -35.946912 13.091808 210725000
22 95.4 -35.965520 13.497698 210725000
23 94.7 -35.965803 13.501898 210725000
24 94.9 -35.965987 13.504573 210725000
编辑:试图更加清晰。
编辑显示
—
首相
我过去曾使用GeoPy(geopy.distance.vincenty)做类似的事情。我需要连接点,但是如果它们长于我确定的阈值,则不希望它们连接。我通过函数发送了每对坐标,并且仅在它们小于我的阈值时才连接它们。geopy.readthedocs.io/en/1.10.0/#geopy.distance.vincenty
—
JohnR
重复ID功能的主键/排序条件是什么:时间与ID或ID与时间?
—
huckfinn
不太确定您的意思。这些点按ID分组,然后按时间排序,然后按顺序用于创建线串。该ID有时在对象之间重复。示例:城市A中有一辆ID ='123'的汽车。它正在传递其位置和时间。在城市B中也有一辆ID ='123'的汽车,它也在传输其位置,并且时间交错。由这些点构成的线将在A和B之间跳跃
—
-RedM
gd.head()
将受到欢迎。