パッケージには「費やした時間」関数がありtrip
ます (私は作成者です)。基本的なトラック プロセスを経時的に理解するトラック データからオブジェクトを作成し、修正間の直線セグメントを仮定してポイントを処理することができます。「ホーム」が最大値ピクセルの場所である場合、つまり、期間に基づいてすべてのセグメントを分割し、それらをセルに合計すると、簡単に見つけることができます。tripGrid
関数からの「滞在時間」グリッドはSpatialGridDataFrame
、標準のsp
パッケージ クラスであり、トリップ オブジェクトは 1 つまたは複数のトラックで構成できます。
を使用rgdal
すると、経度/緯度が範囲に適していない場合、座標を適切な地図投影に簡単に変換できますが、線分のグリッド/所要時間の計算には違いがありません。
speedfilter
動きが速すぎることを暗示する修正を削除するのは簡単ですが、それは非常に単純化されており、新しい問題を引き起こす可能性があります。(私の経験では、グリッド化に費やされた基本的な時間は、新しい複雑さを開く多くの洗練されたモデルと同じくらい正確な見積もりを取得します)。フィルタはデカルト座標または経度/緯度座標で機能し、ツールを使用しsp
て距離を計算します (経度/緯度は信頼できますが、地図投影法を適切に選択しないと問題が発生する可能性があります。陸上の人間のように短い距離では、おそらく大したことではありません)。
(関数tripGrid
は を使用して直線セグメントの正確なコンポーネントを計算しますpixellate.psp
が、その詳細は実装では隠されています)。
データの準備に関しては、trip
は合理的な時間の順序について厳密であり、データに重複がある場合や順序が正しくない場合などは、オブジェクトを作成できなくなります。 にテキスト ファイルからデータを読み取る例があります?trip
。 (本当に)ダミーデータを使用した非常に単純な例は次のとおりです。
library(trip)
d <- data.frame(x = 1:10, y = rnorm(10), tms = Sys.time() + 1:10, id = gl(1, 5))
coordinates(d) <- ~x+y
tr <- trip(d, c("tms", "id"))
g <- tripGrid(tr)
pt <- coordinates(g)[which.max(g$z), ]
image(g, col = c("transparent", heat.colors(16)))
lines(tr, col = "black")
points(pt[1], pt[2], pch = "+", cex = 2)
そのダミー トラックには重なり合う領域はありませんが、「費やされた時間」の最大ポイントを見つけるのは簡単であることを示しています。