计算两个以上数据点之间的方位
Calculate the bearing between more than two data points
我有一些跟踪数据,我想计算 bearing 在整个跟踪过程中。对于两点,我们可以使用 fossil
包中的函数:
# earth.bear(long1, lat1, long2, lat2)
earth.bear(-10.54427, 52.11112, -10.55493, 52.10944)
# 255.6118
但是,这对超过两个点不起作用。这是一些示例数据:
tracks <- read.table(text =
"latitude, longitude
52.111122, -10.544271
52.10944, -10.554933
52.108898, -10.558025
52.108871, -10.560946
52.113991, -10.582005
52.157223, -10.626506
52.194977, -10.652878
52.240215, -10.678817
52.26421, -10.720366
52.264015, -10.720642", header = TRUE, sep = ",")
试试这个:
sum(
sapply(1:(nrow(tracks) - 1), function(i){
earth.bear(tracks$longitude[i], tracks$latitude[i],
tracks$longitude[i+1], tracks$latitude[i+1] )
})
)
# 2609.871
我有一些跟踪数据,我想计算 bearing 在整个跟踪过程中。对于两点,我们可以使用 fossil
包中的函数:
# earth.bear(long1, lat1, long2, lat2)
earth.bear(-10.54427, 52.11112, -10.55493, 52.10944)
# 255.6118
但是,这对超过两个点不起作用。这是一些示例数据:
tracks <- read.table(text =
"latitude, longitude
52.111122, -10.544271
52.10944, -10.554933
52.108898, -10.558025
52.108871, -10.560946
52.113991, -10.582005
52.157223, -10.626506
52.194977, -10.652878
52.240215, -10.678817
52.26421, -10.720366
52.264015, -10.720642", header = TRUE, sep = ",")
试试这个:
sum(
sapply(1:(nrow(tracks) - 1), function(i){
earth.bear(tracks$longitude[i], tracks$latitude[i],
tracks$longitude[i+1], tracks$latitude[i+1] )
})
)
# 2609.871