私は奇妙な問題を解決しようとしています。おそらく、これを処理するアルゴリズムを知っているでしょう。
貨物貨物トラックのデータがあり、いくつかのデータを抽出したいと考えています。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 まではもう 1 マイルあり、貨物には 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)
私はまだかなり非効率的な計算を行っています。