Abstract

I don’t usually use GPS in my walks but last year I used my phone with Mytracks app in two of them and this is the result.

  1. Tonelagee and a Heart Shaped Lake.
  2. Saint Jean Pied de Port-Roncesvalles.

Datasets on Github

## Warning: package 'maptools' was built under R version 3.1.3
## Loading required package: sp
## Warning: package 'sp' was built under R version 3.1.3
## Checking rgeos availability: TRUE
## Warning: package 'ggplot2' was built under R version 3.1.3
## Loading required package: wavethresh
## Loading required package: MASS
## Warning: package 'MASS' was built under R version 3.1.3
## WaveThresh: R wavelet software, release 4.6.6, installed
## 
## Copyright Guy Nason and others 1993-2013
## 
## Note: nlevels has been renamed to nlevelsWT
## 
## 
## Attaching package: 'wavethresh'
## 
## The following object is masked from 'package:sp':
## 
##     makegrid
## 
## Loading required package: adlift
## Loading required package: EbayesThresh
## 
##  **********************************************
##  adlift: a package to perform wavelet lifting schemes
## 
##  --- Written by Matt Nunes and Marina Knight ---
##    Current package version:  1.3-2  ( 01/11/2012 ) 
## 
##              -+ packaged by MAN +-           
##  **********************************************
##  
##  adlift 1.3-2 loaded
## 
## 
## Attaching package: 'adlift'
## 
## The following object is masked from 'package:EbayesThresh':
## 
##     postmean.cauchy
## 
## 
##  **********************************************
##  binhf: Haar-Fisz functions for binomial data
## 
##  --- Written by Matt Nunes ---
##    Current package version:  1.0-1  ( 24/04/2014 ) 
## 
##  
##  **********************************************
##  
##  binhf 1.0-1 loaded
## 
## 
## Attaching package: 'binhf'
## 
## The following objects are masked from 'package:EbayesThresh':
## 
##     ebayesthresh.wavelet.wd, negloglik.laplace, wandafromx
## 
## The following object is masked from 'package:wavethresh':
## 
##     madmad
## 
## The following object is masked from 'package:base':
## 
##     norm
## Warning: package 'ggmap' was built under R version 3.1.3
  1. Route from Lyhnams to Laragh through Tonelagee mountain. Date: 28-06-2015 Distance: 13.65 Km Duration: 5.08 hrs Location: Co. Wicklow, Ireland
#Load csv file and clean Data
df1 <- read.csv("tonelagee.csv",header = TRUE, sep = ",",stringsAsFactors=FALSE, quote="",skip=21)
df1=as.data.frame(sapply(df1, function(x) gsub("\"", "", x)))
colnames(df1)<-c('segment','point','lat','lon','ele','bearing','accuracy','speed','time','power', 'cadence','heat')
df1<-df1[,1:9]
df1$time <- as.POSIXct(df1$time, format = "%Y-%m-%dT%H:%M:%OSZ", tz="GMT")
head(df1)
##   segment point       lat       lon               ele bearing accuracy
## 1       1     1   53.0666 -6.339382 419.0225524902344     2.0       16
## 2       1     2   53.0666 -6.339526 408.4454040527344                8
## 3       1     3 53.066592 -6.339535 408.5710754394531               12
## 4       1     4  53.06653 -6.339635 409.2102966308594                6
## 5       1     5 53.066525 -6.339641 409.2961730957031                6
## 6       1     6 53.066453 -6.339715   409.73291015625                8
##    speed                time
## 1 0.2209 2015-06-28 10:18:12
## 2 0.8842 2015-06-28 10:20:02
## 3 0.8764 2015-06-28 10:20:03
## 4 0.4265 2015-06-28 10:20:11
## 5 0.5144 2015-06-28 10:20:12
## 6      0 2015-06-28 10:20:23
#Total Time
difftime(df1$time[nrow(df1)],df1$time[1], unit="hours")
## Time difference of 5.082586 hours
df1$lat<-as.numeric(levels(df1$lat))[df1$lat]
df1$lon<-as.numeric(levels(df1$lon))[df1$lon]
df1$ele<-as.numeric(levels(df1$ele))[df1$ele]
df1$speed<-as.numeric(levels(df1$speed))[df1$speed]
coordinates(df1) <- ~ lon + lat
proj4string(df1) <- CRS("+proj=longlat +datum=WGS84")
dist<-sapply(seq_along(df1[-1, ]), function(i)
       spDistsN1(pts = df1[i, ], pt = df1[i+1, ], longlat = TRUE))
dist[nrow(df1)]<-0       
#Convert a metres
df1$dist<-dist*1000
#Add column with cumulative distance
df1$cumdist<-cumsum(df1$dist)
#Total Distance in Km
sum(dist)
## [1] 13.64869
#Elevation profile
plot(df1$cumdist,df1$ele, main='Tonelagee route: elevation profile', xlab = 'Distance (m)', ylab = 'Elevation (m)', type = 'l',col='blue',panel.first = grid())

#Map of the route  
wick_map <- get_map(location =c(-6.384722,53.051389), zoom = 12)
## Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=53.051389,-6.384722&zoom=12&size=640x640&scale=2&maptype=terrain&language=en-EN&sensor=false
ggmap(wick_map) + geom_path(data = as.data.frame(df1), aes(x=lon, y=lat), color="red", size=1)+
ggtitle("Route from Lyhnams to Laragh through Tonelagee")

#Speed
df1$id<-seq(1:nrow(df1))
qplot(id,speed, data = as.data.frame(df1), geom = c("point", "smooth"))+xlab("") + ylab("Speed (m/s)")+ggtitle("Speed")

#Calculate Elevation Delta, Cumulative Gain, Max and Min Elevation.
elevs=shift(df1$ele,1,dir='left')
elevs[length(elevs)]<-df1$ele[nrow(df1)]
df1$elevs<-elevs
df1$eledelta<-df1$elevs-df1$ele
#Elevation Gain (m)
sum(df1$eledelta[df1$eledelta > 0])
## [1] 592.7806
#Max Elevation (m)
max(df1$ele)
## [1] 871.9155
#Min Elevation (m)
min(df1$ele)
## [1] 193.8322
  1. Route from Saint Jean Pied de Port to Roncesvalles. Date:03/07/2015 Distance: 23,83 Km Duration: 6.58 hrs Location: French-Spanish border
#Load csv file and clean Data
df2 <- read.csv("stage1_cs.csv",header = TRUE, sep = ",",stringsAsFactors=FALSE, quote="",skip=10)
df2=as.data.frame(sapply(df2, function(x) gsub("\"", "", x)))
colnames(df2)<-c('segment','point','lat','lon','ele','bearing','accuracy','speed','time','power', 'cadence','heat')
df2<-df2[,1:9]
df2$time <- as.POSIXct(df2$time, format = "%Y-%m-%dT%H:%M:%OSZ", tz="GMT")
head(df2)
##   segment point       lat       lon                ele bearing accuracy
## 1       1     1 43.160463 -1.238276  241.7983856201172   207.0       12
## 2       1     2 43.160375 -1.238304  235.8614501953125   199.0       12
## 3       1     3 43.160356 -1.238298 235.17507934570313   186.0       12
## 4       1     4 43.160275 -1.238338 232.10433959960938   187.0       12
## 5       1     5 43.160272 -1.238348  231.8917694091797   219.0       12
## 6       1     6 43.160192 -1.238402 231.10385131835938   220.0       12
##    speed                time
## 1      0 2015-07-03 05:11:35
## 2 1.3788 2015-07-03 05:16:35
## 3 1.6142 2015-07-03 05:16:36
## 4 1.4556 2015-07-03 05:16:46
## 5 1.4644 2015-07-03 05:16:47
## 6 2.2223 2015-07-03 05:16:54
#Total Time
difftime(df2$time[nrow(df2)],df2$time[1], unit="hour")
## Time difference of 6.972391 hours
df2$lat<-as.numeric(levels(df2$lat))[df2$lat]
df2$lon<-as.numeric(levels(df2$lon))[df2$lon]
df2$ele<-as.numeric(levels(df2$ele))[df2$ele]
df2$speed<-as.numeric(levels(df2$speed))[df2$speed]
coordinates(df2) <- ~ lon + lat
proj4string(df2) <- CRS("+proj=longlat +datum=WGS84")
dist<-sapply(seq_along(df2[-1, ]), function(i)
       spDistsN1(pts = df2[i, ], pt = df2[i+1, ], longlat = TRUE))
dist[nrow(df2)]<-0       
#Convert a metres
df2$dist<-dist*1000
#Add column with cumulative distance
df2$cumdist<-cumsum(df2$dist)
#Total Distance in Km
sum(dist)
## [1] 24.72017
#Elevation profile
plot(df2$cumdist,df2$ele, main='First Stage, Camino de Santiago: elevation profile', xlab = 'Distance (m)', ylab = 'Elevation (m)', type = 'l',col='blue',panel.first = grid())

#Map of the route  
cs_map <- get_map(location =c(-1.237497,43.1119), zoom = 11)
## Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=43.1119,-1.237497&zoom=11&size=640x640&scale=2&maptype=terrain&language=en-EN&sensor=false
ggmap(cs_map) + geom_path(data = as.data.frame(df2), aes(x=lon, y=lat), color="red", size=1)+
ggtitle("First Stage, Camino de Santiago")

#Speed
df2$id<-seq(1:nrow(df2))
qplot(id,speed, data = as.data.frame(df2), geom = c("point", "smooth"))+xlab("") + ylab("Speed (m/s)")+ggtitle("Speed")
## Warning in loop_apply(n, do.ply): Removed 3 rows containing missing values
## (stat_smooth).
## Warning in loop_apply(n, do.ply): Removed 3 rows containing missing values
## (geom_point).

#Calculate Elevation Delta, Cumulative Gain, Max and Min Elevation.
elevs=shift(df2$ele,1,dir='left')
elevs[length(elevs)]<-df2$ele[nrow(df2)]
df2$elevs<-elevs
df2$eledelta<-df2$elevs-df2$ele
#Elevation Gain (m)
sum(df2$eledelta[df2$eledelta > 0])
## [1] 1619.452
#Max Elevation (m)
max(df2$ele)
## [1] 1481.465
#Min Elevation (m)
min(df2$ele)
## [1] 230.7951