我正在尝试解决一个奇怪的问题。也许你们知道一些处理这个问题的算法。
我有一辆货运卡车的数据,想提取一些数据。假设我有一个从 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)
我还在做一些非常低效的计算。