我希望解决一个奇怪的问题,也许你们知道一些可以解决这个问题的算法。
我有一辆货运卡车的数据,并想要提取一些数据。假设我从GPS获取了排序后的点列表,那就是该卡车的路线:
[
{
"lng": "-111.5373066",
"lat": "40.7231711",
"time": "1970-01-01T00:00:04Z",
"elev": "1942.1789265256325"
},
{
"lng": "-111.5372056",
"lat": "40.7228762",
"time": "1970-01-01T00:00:07Z",
"elev": "1942.109892409177"
}
]
现在,我想要获取一个“最快里程”的列表。这里有一个例子:
给定以下点:
A, B, C, D, E, F
从A点到B点的距离是1英里,货物用了10分32秒。从B点到D点我另有一英里,货物用了10分钟,等等。因此,我需要按时间排序的列表。类似于:
B -> D: 10
A -> B: 10:32
D -> F: 11:02
你知道任何高效的算法可以让我计算这个吗?
谢谢大家。
PS:我正在使用Python。
编辑:
我已经得到了距离。我知道如何计算它,也有很多帖子可以做到这一点。我需要的是一种按英里进行分词并从中获取速度的算法。拥有距离函数还不够有用:
results = {}
for point in points:
aux_points = points.takeWhile(point>n) #This doesn't exist, just trying to be simple
for aux_point in aux_points:
d = distance(point, aux_point)
if d == 1_MILE:
time_elapsed = time(point, aux_point)
results[time_elapsed] = (point, aux_point)
我仍在做一些相当低效的计算。
time.strptime
和calendar.timegm
将时间转换为标准格式以便您处理。 - inspectorG4dget