从纬度和经度计算角度

Mad*_*ddy 2 r angle latitude-longitude

我有一套纬度和经度,所以这是动物及时移动的数据.我想要做的是计算转弯角度,即它在每次运动之间转动的角度.所以说我有点1,点2和点3,纬度和经度值对应每个点(动物从点1移动到点2到点3,依此类推),我想计算这3点之间的角度,点2是中间点.我该怎么办?我的操作系统是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
Run Code Online (Sandbox Code Playgroud)

它们是十进制度

mds*_*ner 9

使用功能trackAzimuthmaptools:

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))]
}
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

编辑:我不得不从函数中删除第一个/最后一个角度,这是我在其他地方使用此函数后所做的事情.应该是现在.:)

此外,包adehabitatLTargosfilter包含计算轨道方向和角度的功能.