3

私は緯度と経度のセットを持っているので、これは時間の経過とともに移動する動物のデータです。私がやりたいのは、回転角度、つまり、すべての動きの間にどの角度で回転するかを計算することです。つまり、ポイント1、ポイント2、ポイント3があり、各ポイントに対応する緯度と経度の値があり(動物はポイント1からポイント2、ポイント3などに移動します)、これらの3つのポイント間の角度を計算したいとします。 2点が中間地点。私は何をすべきか?私のOSはWindowsで、分析にはRを使用しています。

ここに私のサンプルデータがあります:

longitude                       latitude
36.89379547                0.290166977
36.89384037                0.290194109
36.88999724                0.286821044
36.88708721                0.288339411
36.88650313                0.29010232
36.88563203                0.289939416
36.88545224                0.290924863

それらは10進度です

4

2 に答える 2

12

で関数を使用trackAzimuthするmaptools:

library(maptools)

trackAngle <- function(xy) {
    angles <- abs(c(trackAzimuth(xy), 0) -
                  c(0, rev(trackAzimuth(xy[nrow(xy):1, ]))))
    angles <- ifelse(angles > 180, 360 - angles, angles)
    angles[is.na(angles)] <- 180
    angles[-c(1, length(angles))]
}

このtrackAzimuth関数は、 の単純なループ ラッパーgzAzimuthです。?gzAzimuth球の方向を計算する方法については、 を参照してください。

データの使用:

x <- read.table(text = "longitude                       latitude
36.89379547                0.290166977
36.89384037                0.290194109
36.88999724                0.286821044
36.88708721                0.288339411
36.88650313                0.29010232
36.88563203                0.289939416
36.88545224                0.290924863", header = TRUE)

trackAngle(as.matrix(x))
[1]  10.12946 111.17211 135.88514  97.73801  89.74684

編集:関数から最初/最後の角度を削除する必要がありました。これは、後でこの関数を他の場所で使用していたことです。今すぐすべきです。:)

また、パッケージadehabitatLTargosfilterには、トラックの方向と角度を計算する関数が含まれています。

于 2012-06-25T07:51:33.863 に答える
0

データ ポイントは狭い範囲でしか変化しません。地球の表面の 1 つの小さなパッチを見て、それが平らな 2 次元であると見なすことができます。緯度 1 度、経度 1 度に対応するキロメートル、メートル、マイルなど、好きな単位が何であれ、スケールを計算する必要があります。後者は緯度に依存します。赤道付近では緯度の目盛りと同じになりますが、北極から腕の長さ以内に立っている場合、1 歩で 50 度になります。x=0 が経度 36.88000、y=0 が緯度 0.29000 である x,y 座標を設定します。

これで一連の (x,y) ポイントができました。P2-P1、P3-P2 など、各点から次の点への差を取ります。これらは「変位ベクトル」と呼ばれますが、他の用語は、出身地以外の分野で使用される場合があります。それらを V1、V2 などと呼びます。内積とノルムを使用します: dot(V1,V2) = マグニチュード(V1)*マグニチュード(V2)*cos(a) ここで、a は V2 が V1 の方向から逸脱する角度です。V3 と V2 などについて繰り返します。

R にはこれを行うためのすべてのツールがありますが、例を示すのに十分な R の構文を知りません。

于 2012-06-25T06:54:10.590 に答える