我試圖解決一個奇怪的問題。也許你們知道一些處理這個問題的算法。如何從一組GPS點中獲取「最快里程」列表
我有一個貨運卡車的數據,並希望提取一些數據。假設我已經獲得了從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)
我仍然在做一些非常低效的計算。
你到底需要什麼幫助?首先對英里時間列表進行排序? (可能不是!)計算緯度/長度對之間的英里距離? –
速度=距離/時間,當然這就是你需要的全部?計算兩個經緯度之間的距離非常簡單,可以在很多網站上找到,計算時間差也很容易。排序真的取決於你將要排序的項目數量。 –
假設直線,我會去與畢達哥拉斯的定理和速度= dist /時間。使用'time.strptime'和'calendar.timegm'來獲得時間到一個標準格式,讓你玩 – inspectorG4dget