GPSデータから最大速度を計算する


10

トラックの未加工のGPS位置があり、最大速度を取得する必要があります。単純な方法(2点間の速度を計算し、最大を取る)では、GPSが不正確なため、意味のない大きな数値が得られます。これを解決するための優れた既製のアルゴリズムを提案できますか?


ポイントが飛び交っている場合、1つの場所に複数のポイントがあると言いますか?質問の大部分は、(正確さのために)後処理ではなくリアルタイムデータの表示に関心があるかのように聞こえます。
Brad Nesom、2011年

「生の」GPS位置がある場合は、必ず、NMEA RMC文字列の標準要素であるノット単位の地上速度を使用する必要があります。
nagytech 2012

回答:


13

もちろん、スピードを出すには時間が必要です。したがって、時間を増やすことにより、列{Time、X、Y}を使用して、スプレッドシートのような方法で時間順にポイントを並べ替えることができます。

以下は、GPSユニットが反時計回りの回路をほぼ完成した例です。

旅行の地図

これらのポイントは、一定の時間間隔で取得されませんでした。 したがって、マップだけから速度を推定することは不可能です。 (ただし、この旅行を視覚化するために、ほぼ等間隔でgps値を収集しました。これにより、旅行が2つの中間点と最後で速く始まり、遅くなったことがわかります。)

速度に関心があるため、連続する行間の距離と時間差を計算します。 距離を時間差で割ると、瞬時の速度推定が得られます。 これですべてです。時間に対するこれらの推定のプロットを見てみましょう。

速度対時間のプロット

赤い点は速度をプロットしていますが、灰色の曲線は目を単にガイドするための粗い滑らかなものです。GISでスプレッドシートまたは単純なデータサマリー関数を使用している場合、最大速度の時間と最大速度自体はプロットから明確になり、これまでのデータから簡単に取得できます。ただし、gpsポイントには明らかに測定誤差があるためこれらの速度推定は疑わしいものです。

測定誤差に対処する1つの方法は、複数の期間間の距離累積し、それらを使用して時間を推定することです。たとえば、以前に計算された{時差、距離}データが

d(Time) Distance
0.90        0.17
0.90        0.53
1.00        0.45
1.10        0.29
0.80        0.11

次に、連続する行の各ペアを追加することにより、2つの期間の経過時間と合計距離が取得されます。

d(Time) Distance
1.80        0.70
1.90        0.98
2.10        0.74
1.90        0.40

累積された時間と距離の速度を再計算します。

この計算はいくつでも実行でき、速度の推定値を長期間にわたって平均化する代わりに、よりスムーズで信頼性の高いプロットを実現できます。以下は、それぞれ3期間と5期間について計算された同じデータのプロットです。

速度対時間のプロット、3つの間隔の計算

速度対時間のプロット、5間隔計算

最大速度がスムージングの量に応じて減少することに注意してください。これは常に起こります。 一意の正解はありません。 どの程度滑らかにするかは、測定値のばらつきと、速度を推定する期間に依存します。この例では、最高速度を(連続したGPSポイントに基づいて)2.5まで報告できますが、GPS位置のエラーのため、ある程度の信頼性はありません。5周期スムーズに基づいて、最大速度を2.1と報告できます。


これは簡単な方法ですが、必ずしも最善とは限りません。 GPS位置エラーをパスに沿ったコンポーネントパスに垂直な別のコンポーネントに分解すると、パスに沿ったコンポーネントが通過した合計距離の推定に影響を与えないことがわかります(パスが十分にサンプリングされている場合): 「コーナーをカット」しないでください)。パスに垂直なコンポーネントが増加します見かけの距離。これにより、推定値が上方にバイアスされる可能性があります。ただし、GPSの読み取り値間の一般的な距離が一般的な距離誤差と比較して大きい場合、バイアスは小さく、おそらくGPSシーケンスによってキャプチャされないパス内の小さな小刻みが補償されます(つまり、いくつかのコーナーカットが常に行われます)。したがって、GPSサンプリング周波数が、パスが「揺らぐ」周波数またはGPS測定誤差が大きい周波数と比較して非常に低い場合を除いて、これらの固有のバイアスに対処するより高度な推定器を開発する価値はおそらくありません。

これらはシミュレートされたデータであるため、レコードについては、真の正しい結果を表示できます。

時間に対する真の速度のプロット

これを前のプロットと比較すると、この特定のケースでは、生の速度の最大値が真の最大値を過大評価していたのに対し、5周期の速度の最大値が低すぎたことがわかります。

一般に、GPSポイントが高い頻度で収集される場合、最大の未加工速度は高すぎる可能性が高く、真の最大値を過大評価する傾向があります。実際のインスタンスでこれ以上のことを言うには、GPSエラーの性質とサイズ、GPS収集頻度、および基礎となるパスの曲がり具合の完全な統計分析が必要になります。


2

これは既製のスクリプトやアルゴリズムではありません。下の画像で私がしたことは、平均速度(時速)を示しています。

  1. GPXファイルでgpsbabelフィルターを直接実行します。
  2. GPXファイルをGRASSのラスターポイントに変換します。
  3. r.neighbors指定したラスターウィンドウの平均速度を取得するために実行します。

私の平均サイクリング速度


場所のシーケンスのラスター表現から速度を得ることがどのように可能かを明確にできますか?
whuber

gpsbabelを使用して、GPXのトラックポイントから速度情報を合成できます。 gpsbabel.org/htmldoc-development/filter_track.html。次に、このデータをベクトルポイントとしてインポートし、GRASSでラスターに変換します。このイメージで複数のGPXを使用しました。を使用してr.neighbors、平均速度を取得します。
11年

説明してくれてありがとう。しかし、gpsbabelが速度を計算した場合、なぜr.neighborsを使用するのですか?あるルートに沿った速度と、グリッド上で十分に近い他のルートに沿った速度とが混在する可能性はありませんか?また、GPS収集時刻の間隔が不均一である場合、速度の平均化に偏りがあります。たとえば、60秒で60メートル移動した場合、1秒あたり1メートル移動しましたが、1秒で10メートル、59秒で50メートルに分割された場合(中点での+9 mの位置誤差のため)、平均速度は5.4 m / sと計算され、全体として過大評価されます。
whuber

@whuber、あなたは正しいです。このマップでは、個々の速度ではなく、時間全体の速度を探しています。すべてのトラックは1秒間隔です。
2011年

創造的な解決策のための+1。(私は明らかにベクトルの問題のラスターソリューションを見つけるのが好きですが、それらの制限を知っておくのは良いことです。)
whuber

1

GPSデータは不正確であるため、最大速度を推定することしかできません。

セグメントではなく、ポリライン(平均速度)で速度を計算して計算し、不正確さの影響を最小限に抑えることができます。

最も関連性の高いポイントのみを保持するために、最初にデータ(たとえばDouglas-Peucker)をクリーニングしてみましたか?


1
Douglas-Peuckerは実際にはデータをクリーンアップしません。元の形状を維持しようとするときにポイントを削除するだけなので、実際にはエラーをさらに悪化させる可能性さえあります。
JaakL 2011年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.