Nothing
## ----setup, include=FALSE-----------------------------------------------------
library(knitr)
knitr::opts_chunk$set(fig.width=5, fig.height = 4)
## ----load---------------------------------------------------------------------
require(moveWindSpeed)
data("storks")
plot(
storks,
xlab = "Longitude",
ylab = "Latitude",
main = "Stork data" ,
pch = 19,
cex = .3
)
## ----subset-------------------------------------------------------------------
storksSub <-
storks[strftime(timestamps(storks), format = "%H%M", tz="UTC") %in% c("1303", "1304"), ]
storksWind <- getWindEstimates(storksSub)
# Use evolution status 2 to avoid using rgdal (set using sp)
set_evolution_status(2L)
storksWind <- spTransform(storksWind, center = T)
indiv1 <- storksWind[[1]]
indiv1
## ----freq---------------------------------------------------------------------
unique(as.numeric(diff(timestamps(indiv1)), units='secs'))
## ----plotExample--------------------------------------------------------------
plot(
indiv1,
type = 'l',
xlim = c(-150, 150),
main = row.names(idData(indiv1))
)
s <- as.numeric(timestamps(indiv1)) %% 10 == 0
expansion <- 3
arrows(
coordinates(indiv1)[s, 1],
coordinates(indiv1)[s, 2],
coordinates(indiv1)[s, 1] + indiv1$windX[s] * expansion,
coordinates(indiv1)[s, 2] + indiv1$windY[s] * expansion,
col = 'red',
length = .1
)
## ----arrows-------------------------------------------------------------------
indivSub <- indiv1[45:72,]
plot(indivSub, pch = 19)
arrows(
coordinates(indivSub)[-n.locs(indivSub), 1],
coordinates(indivSub)[-n.locs(indivSub), 2],
coordinates(indivSub)[-1, 1],
coordinates(indivSub)[-1, 2],
length = .1
)
arrows(
coordinates(indivSub)[-n.locs(indivSub), 1],
coordinates(indivSub)[-n.locs(indivSub), 2],
coordinates(indivSub)[-n.locs(indivSub), 1] + head(indivSub$windX,-1),
coordinates(indivSub)[-n.locs(indivSub), 2] + head(indivSub$windY,-1),
col = "red",
length = .1
)
arrows(
coordinates(indivSub)[-n.locs(indivSub), 1] + head(indivSub$windX,-1),
coordinates(indivSub)[-n.locs(indivSub), 2] + head(indivSub$windY,-1),
coordinates(indivSub)[-1, 1],
coordinates(indivSub)[-1, 2],
col = "green",
length = .1
)
legend(
"topright",
legend = c("Ground speed", "Wind Speed", "Air Speed"),
bty = "n",
col = c("black", "red", "green"),
lty = 1
)
## ----airVector----------------------------------------------------------------
s <- !is.na(indiv1$windX)
x <- cumsum(diff(coordinates(indiv1)[, 1])[s] - indiv1$windX[s])
y <- cumsum(diff(coordinates(indiv1)[, 2])[s] - indiv1$windY[s])
plot(x, y, type = 'l', main = "Wind corrected trajectory")
## ----group--------------------------------------------------------------------
storksSub <- getWindEstimates(storksSub, windowSize = 31)
plot(
storksSub$windX,
storksSub$windY,
col = trackId(storksSub),
pch = 19,
xlim = range(na.omit(c(0, storksSub$windX))),
ylim = range(na.omit(c(0, storksSub$windY))),
asp = 1,
main = "Distribution of wind speed estimates"
)
## ----verticalProfile----------------------------------------------------------
windData <- getWindEstimates(storks)
windData <- windData[strftime(timestamps(windData), format = "%H", tz="UTC") == "12" &
!is.na(windData$windX), ]
plot(
sqrt(windData$windX ^ 2 + windData$windY ^ 2),
windData$height_above_ellipsoid,
main = "Vertical wind profile",
xlab = "Wind speed",
ylab = "Altitude",
col = trackId(windData),
pch = 19
)
## ----rotations----------------------------------------------------------------
indivSub <- storks[[1]]
quater <-
getWindEstimates(indivSub, isThermallingFunction = getDefaultIsThermallingFunction(90))
half <-
getWindEstimates(indivSub, isThermallingFunction = getDefaultIsThermallingFunction(180))
full <-
getWindEstimates(indivSub, isThermallingFunction = getDefaultIsThermallingFunction(360))
two <-
getWindEstimates(indivSub, isThermallingFunction = getDefaultIsThermallingFunction(720))
sum(!is.na(quater$windX))
sum(!is.na(half$windX))
sum(!is.na(full$windX))
sum(!is.na(two$windX))
## ----wl-----------------------------------------------------------------------
short <-
getWindEstimates(indivSub,
isThermallingFunction = getDefaultIsThermallingFunction(720),
windowSize = 29)
long <-
getWindEstimates(indivSub,
isThermallingFunction = getDefaultIsThermallingFunction(720),
windowSize = 41)
sum(!is.na(short$windX))
sum(!is.na(long$windX))
## ----speedup------------------------------------------------------------------
system.time(getWindEstimates(
indivSub,
isFocalPoint = function(i, ts) {
T
}
))
system.time(getWindEstimates(
indivSub,
isFocalPoint = function(i, ts) {
(i %% 5) == 0
}
))
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.