2016-02-17 9 views
1

У меня есть данные GPS, и я пытаюсь рассчитать подшипник до самой дальней части поездки. Мои данные выглядит следующим образом:Подсчитайте подшипники к самой дальней точке поездки

Time Lat Long 18:11:25 -38.621449 142.931061 18:13:25 -38.62212 142.929871 18:15:33 -38.623333 142.92868 ... 23:16:26 -38.793068 142.827881 23:18:54 -38.795414 142.838516 23:23:02 -38.795803 142.839066 ... 09:59:49 -38.621532 142.930786

Я пытаюсь вычислить азимут между начальной точкой (-38,621449 142.931061) и самой дальней точке (-38.793068,142.827881).

Я был в состоянии сделать это вручную извлекая 2 место из таблицы и расчет подшипника с помощью моего сценария:

` bearing <- function(lat1,lon1,lat2,lon2){ 
lat1 <- angledim(lat1,"degrees","radians") 
lon1 <- angledim(lon1,"degrees","radians") 
lat2 <- angledim(lat2,"degrees","radians") 
lon2 <- angledim(lon2,"degrees","radians") 

dlon <- lon1 - lon2 


theta <- atan2(cos(lat2)*sin(dlon),cos(lat1)*sin(lat2)-sin(lat1)*cos(lat2)*cos(dlon)) 
theta <- angledim(theta,"radians","degrees") 
theta <- (theta+360) %% 360 
theta 
}` 

Есть ли более простой способ вычислить это, не проходя через бесконечные таблицы?

(Извиняюсь заранее, если вещи не отформатирован должным образом, это мой первый вопрос!)

Спасибо!

ответ

1

Я использую функцию earth.bear из ископаемого пакета здесь, но вы можете использовать свой собственный написанный на заказ.

earth.bear(mydata$Long[1],mydata$Lat[1], 
     tail(mydata$Long, n=1),tail(mydata$Lat, n=1))