library(RPostgreSQL)
## Loading required package: DBI
library(reshape2)
library(ggmap)
## Warning: package 'ggmap' was built under R version 3.4.3
## Loading required package: ggplot2
library(ggplot2)
# Set working directory
setwd("c:\\Users\\Hammo\\Documents\\smoke emissions project\\repo")
# Database login details (not in GitHub repo)
load("access.Rda")
# Connect to database
p <- dbDriver("PostgreSQL")
con <- dbConnect(p,
user=access$user,
password=access$pwd,
host='penap-data.dyndns.org',
dbname='cona',
port=5432)
locs <- dbGetQuery(con,"SELECT fs.id,
ST_X(ST_TRANSFORM(fs.geom::geometry,4326)) as lon,
ST_Y(ST_TRANSFORM(fs.geom::geometry,4326)) as lat
FROM admin.fixedsites as fs
ORDER BY fs.id;")
for (i in 1:nrow(locs)) {
locs[i,'str'] <- paste0(locs[i,'lon'],'E, ',-locs[i,'lat'],'S')
}
locs[,'id'] <- as.character(locs[,'id'])
locs
## id lon lat str
## 1 1 172.6053 -43.30952 172.605284E, 43.309524S
## 2 2 172.5742 -43.31359 172.57421E, 43.313593S
## 3 3 172.5995 -43.29968 172.599541E, 43.299683S
## 4 4 172.5948 -43.31419 172.594795E, 43.314193S
## 5 5 172.6490 -43.31359 172.64904E, 43.313589S
## 6 6 172.5906 -43.30965 172.590573E, 43.309652S
## 7 7 172.3151 -43.36616 172.315086E, 43.366162S
## 8 8 172.5778 -43.29445 172.577819E, 43.294454S
## 9 9 172.5911 -43.30065 172.591124E, 43.300646S
## 10 10 172.5907 -43.31509 172.590738E, 43.315095S
## 11 11 172.5954 -43.29726 172.595377E, 43.297256S
## 12 12 172.5969 -43.31373 172.596891E, 43.313731S
## 13 13 172.5794 -43.29892 172.579389E, 43.298921S
## 14 14 172.5688 -43.29909 172.5688E, 43.299086S
## 15 15 172.5654 -43.31063 172.565379E, 43.310626S
## 16 16 172.6046 -43.29752 172.604574E, 43.297522S
## 17 17 172.5692 -43.29135 172.569245E, 43.291354S
## 18 18 172.5953 -43.30752 172.595317E, 43.307517S
## 19 19 172.6112 -43.32696 172.611194E, 43.32696S
## 20 27 172.5953 -43.30752 172.595317E, 43.307517S
## 21 28 172.5836 -43.30670 172.583590918011E, 43.3067023731761S
## 22 29 172.5839 -43.29754 172.583934184952E, 43.2975446787469S
## 23 30 172.5961 -43.32248 172.59607544068E, 43.3224842123003S
## 24 31 172.6118 -43.31628 172.611792679447E, 43.3162759946766S
## 25 32 172.6127 -43.30244 172.612727456717E, 43.3024350703913S
Note that both site 18 and site 27 denote the ECan instrument location.
for (z in c(10,12,13,14)) {
map <- get_map(location = c(mean(locs$lon),mean(locs$lat)),zoom = z)
m <- ggmap(map) +
geom_point(data=locs,aes(x=lon,y=lat),col="red",size=1) +
geom_text(data=locs,aes(label=id),hjust=0,vjust=0)
print(m)
}
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_text).
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_text).
## Warning: Removed 5 rows containing missing values (geom_point).
## Warning: Removed 5 rows containing missing values (geom_text).
# only take samples at noon (or midnight in NZT)
odin.raw <- dbGetQuery(con," SELECT d.recordtime AT TIME ZONE 'NZT' AS date,
i.serialn as serial, d.siteid as site
FROM data.fixed_data as d,
admin.sensor as s, admin.instrument as i
WHERE s.id = d.sensorid
AND s.instrumentid = i.id
AND i.name = 'ODIN-SD-3'
AND s.name = 'PM2.5'
AND (d.recordtime BETWEEN '2016-01-01 00:00 NZT'
AND '2018-01-01 00:00 NZT')
AND (date_part('hour',d.recordtime) BETWEEN 0 AND 0.1)
AND (date_part('minute',d.recordtime) BETWEEN 0 AND 0.9)
ORDER BY date, serial;")
odin <- odin.raw
odin$date <- trunc(odin$date,'day') # get rid of the seconds
odin$date <- as.POSIXct(odin$date)
first <- function(x){x[1]}
odin.wide <- dcast(odin,date~serial,value.var='site',fun.aggregate=first)
odin.2016.plot <- subset(odin,as.POSIXlt(date)$year+1900==2016)
ggplot(odin.2016.plot) +
geom_point(aes(x=date,y=serial,colour=factor(site))) +
ggtitle("2016 ODIN Sites")
nice.print <- function(data) {
# 6 ODINs per table for readability
i <- 2
while (i<ncol(data)) {
upto <- min(ncol(data),i+5)
print( data[,c(1,i:upto)] )
i <- i + 6
print('')
}
}
odin.2016 <- subset(odin.wide,as.POSIXlt(date)$year+1900==2016)
nice.print( odin.2016 )
## date ODIN-100 ODIN-101 ODIN-102 ODIN-103 ODIN-104 ODIN-105
## 1 2016-07-09 12 NA NA NA NA NA
## 2 2016-07-10 12 NA NA NA NA NA
## 3 2016-07-11 12 NA NA NA NA NA
## 4 2016-07-12 12 NA 18 18 27 27
## 5 2016-07-13 12 NA 18 18 13 18
## 6 2016-07-14 12 NA 18 18 13 18
## 7 2016-07-15 12 NA 18 18 13 18
## 8 2016-07-16 12 NA 18 18 13 18
## 9 2016-07-17 12 NA 18 18 13 18
## 10 2016-07-18 12 NA 18 18 13 18
## 11 2016-07-19 12 NA 18 18 13 18
## 12 2016-07-20 12 NA 18 18 13 18
## 13 2016-07-21 12 NA 18 18 13 18
## 14 2016-07-22 12 NA 18 18 13 18
## 15 2016-07-23 12 NA 18 18 13 18
## 16 2016-07-24 12 NA 18 18 13 18
## 17 2016-07-25 12 NA NA 17 13 NA
## 18 2016-07-26 12 NA 10 17 13 1
## 19 2016-07-27 12 NA 10 17 13 1
## 20 2016-07-28 12 NA 10 17 13 1
## 21 2016-07-29 12 NA 10 17 NA 1
## 22 2016-07-30 12 NA 10 17 13 1
## 23 2016-07-31 12 NA 10 17 13 1
## 24 2016-08-01 12 NA 10 17 13 1
## 25 2016-08-02 12 NA 10 17 13 1
## 26 2016-08-03 12 NA 10 17 13 1
## 27 2016-08-04 12 NA 10 17 13 1
## 28 2016-08-05 12 11 10 17 13 1
## 29 2016-08-06 12 11 10 17 13 1
## 30 2016-08-07 12 11 10 17 13 1
## 31 2016-08-08 12 11 10 17 13 1
## 32 2016-08-09 12 11 10 17 13 1
## 33 2016-08-10 12 11 10 17 13 1
## 34 2016-08-11 12 11 10 17 13 1
## 35 2016-08-12 12 11 10 17 13 1
## 36 2016-08-13 12 11 10 17 13 1
## 37 2016-08-14 12 11 10 17 13 1
## 38 2016-08-15 12 11 10 17 13 1
## 39 2016-08-16 12 11 10 17 13 1
## 40 2016-08-17 12 11 10 17 13 1
## 41 2016-08-18 12 11 10 17 13 1
## 42 2016-08-19 12 11 10 17 13 1
## 43 2016-08-20 12 11 10 17 13 1
## 44 2016-08-21 12 11 10 17 13 1
## 45 2016-08-22 12 11 10 17 13 1
## 46 2016-08-23 12 11 10 17 13 1
## 47 2016-08-24 12 11 10 17 13 1
## 48 2016-08-25 12 11 10 17 13 1
## 49 2016-08-26 12 11 10 17 13 1
## 50 2016-08-27 12 11 10 17 13 1
## 51 2016-08-28 12 11 10 17 13 1
## 52 2016-08-29 12 11 10 17 13 1
## 53 2016-08-30 12 11 10 17 13 1
## 54 2016-08-31 12 11 10 17 13 1
## 55 2016-09-01 12 11 10 17 13 1
## 56 2016-09-02 12 11 10 17 13 1
## 57 2016-09-03 12 11 10 17 13 1
## 58 2016-09-04 12 11 10 17 13 1
## 59 2016-09-05 12 11 10 17 13 1
## 60 2016-09-06 12 11 10 17 13 1
## 61 2016-09-07 12 11 10 17 13 1
## 62 2016-09-08 12 11 10 17 13 1
## 63 2016-09-09 12 11 10 17 NA 1
## 64 2016-09-10 12 11 10 17 13 1
## 65 2016-09-11 12 11 10 17 13 1
## 66 2016-09-12 12 11 10 17 13 1
## 67 2016-09-13 12 11 10 17 13 1
## 68 2016-09-14 12 11 10 17 13 1
## 69 2016-09-15 NA 11 10 17 13 1
## 70 2016-09-16 12 11 10 17 13 1
## 71 2016-09-17 12 11 10 17 13 1
## 72 2016-09-18 12 11 10 17 13 1
## 73 2016-09-19 12 11 10 17 13 1
## 74 2016-09-20 12 11 10 17 13 1
## 75 2016-09-21 12 11 10 17 13 1
## 76 2016-09-22 12 11 10 17 13 1
## 77 2016-09-23 12 11 10 17 13 1
## 78 2016-09-24 12 11 10 17 13 1
## 79 2016-09-25 12 11 10 17 13 1
## 80 2016-09-26 12 11 10 17 13 1
## 81 2016-09-27 12 11 10 17 13 1
## 82 2016-09-28 12 11 10 17 13 1
## 83 2016-09-29 12 11 10 17 13 1
## 84 2016-09-30 12 11 10 17 13 27
## 85 2016-10-01 12 18 18 17 13 18
## 86 2016-10-02 12 18 18 17 13 18
## 87 2016-10-03 12 18 18 17 27 18
## 88 2016-10-04 12 18 18 17 18 18
## 89 2016-10-05 12 18 18 NA 18 18
## 90 2016-10-06 12 18 18 NA 18 18
## 91 2016-10-07 12 18 18 NA 18 18
## 92 2016-10-08 12 18 18 NA 18 18
## 93 2016-10-09 12 18 18 NA 18 18
## 94 2016-10-10 12 18 18 NA 18 18
## 95 2016-10-11 12 18 18 NA 18 18
## 96 2016-10-12 12 18 18 NA 18 18
## 97 2016-10-13 12 18 18 NA 18 18
## 98 2016-10-14 12 18 18 NA 18 18
## 99 2016-10-15 12 18 18 NA 18 18
## 100 2016-10-16 12 18 18 NA 18 18
## 101 2016-10-17 NA 18 18 NA 18 18
## 102 2016-10-18 18 18 18 NA 18 18
## 103 2016-10-19 18 18 18 NA 18 18
## 104 2016-10-20 18 18 18 NA 18 18
## 105 2016-10-21 18 18 18 NA 18 18
## 106 2016-10-22 18 18 18 NA 18 18
## 107 2016-10-23 18 18 18 NA 18 18
## 108 2016-10-24 18 18 18 NA 18 18
## 109 2016-10-25 18 18 18 NA 18 18
## 110 2016-10-26 18 18 18 NA 18 18
## 111 2016-10-27 18 18 18 NA 18 18
## 112 2016-10-28 18 18 18 NA 18 18
## 113 2016-10-29 18 18 18 NA 18 18
## 114 2016-10-30 18 18 18 NA 18 18
## 115 2016-10-31 18 18 18 NA 18 18
## 116 2016-11-01 18 18 18 NA 18 18
## 117 2016-11-02 18 18 18 NA 18 18
## 118 2016-11-03 18 18 18 NA 18 18
## 119 2016-11-04 27 27 27 NA 27 27
## [1] ""
## date ODIN-106 ODIN-107 ODIN-108 ODIN-109 ODIN-110 ODIN-111
## 1 2016-07-09 NA NA NA NA NA NA
## 2 2016-07-10 NA NA NA NA NA NA
## 3 2016-07-11 NA NA NA NA NA NA
## 4 2016-07-12 NA 27 27 27 NA 27
## 5 2016-07-13 NA 18 18 18 NA 18
## 6 2016-07-14 NA 18 18 18 NA 18
## 7 2016-07-15 NA 18 18 18 NA 18
## 8 2016-07-16 NA 18 18 18 NA 18
## 9 2016-07-17 NA 18 18 18 NA 18
## 10 2016-07-18 NA 18 18 18 NA 18
## 11 2016-07-19 NA 18 18 18 NA 18
## 12 2016-07-20 NA 18 18 18 NA 18
## 13 2016-07-21 NA 18 18 18 NA 18
## 14 2016-07-22 NA 18 18 18 NA 18
## 15 2016-07-23 NA 18 18 18 NA NA
## 16 2016-07-24 NA 18 18 18 NA NA
## 17 2016-07-25 NA 27 27 18 NA NA
## 18 2016-07-26 NA 15 16 18 NA NA
## 19 2016-07-27 NA 15 16 18 NA NA
## 20 2016-07-28 NA 15 16 18 NA NA
## 21 2016-07-29 NA 15 16 18 NA NA
## 22 2016-07-30 NA 15 16 18 NA NA
## 23 2016-07-31 NA 15 16 18 NA NA
## 24 2016-08-01 NA 15 16 18 NA NA
## 25 2016-08-02 NA 15 16 18 NA NA
## 26 2016-08-03 NA 15 16 18 NA NA
## 27 2016-08-04 NA 15 16 18 NA NA
## 28 2016-08-05 NA 15 16 18 NA NA
## 29 2016-08-06 NA 15 16 18 NA NA
## 30 2016-08-07 NA 15 16 18 NA NA
## 31 2016-08-08 NA 15 16 18 NA NA
## 32 2016-08-09 NA 15 16 18 NA NA
## 33 2016-08-10 NA 15 16 18 NA NA
## 34 2016-08-11 NA 15 16 18 NA NA
## 35 2016-08-12 27 15 16 NA NA NA
## 36 2016-08-13 6 15 16 18 14 NA
## 37 2016-08-14 6 15 16 18 14 NA
## 38 2016-08-15 6 15 16 18 14 NA
## 39 2016-08-16 6 15 16 18 14 NA
## 40 2016-08-17 6 15 16 18 14 NA
## 41 2016-08-18 6 15 16 18 14 NA
## 42 2016-08-19 6 15 16 18 14 NA
## 43 2016-08-20 6 15 16 18 14 NA
## 44 2016-08-21 6 15 16 18 14 NA
## 45 2016-08-22 6 15 16 18 14 NA
## 46 2016-08-23 6 15 16 18 14 NA
## 47 2016-08-24 6 15 16 18 14 NA
## 48 2016-08-25 6 15 16 18 14 NA
## 49 2016-08-26 6 15 16 18 14 NA
## 50 2016-08-27 6 15 16 18 14 NA
## 51 2016-08-28 6 15 16 18 14 NA
## 52 2016-08-29 6 15 16 18 14 NA
## 53 2016-08-30 6 15 16 18 14 NA
## 54 2016-08-31 6 15 16 18 14 3
## 55 2016-09-01 6 15 16 18 14 3
## 56 2016-09-02 6 15 16 18 14 3
## 57 2016-09-03 6 15 16 18 14 3
## 58 2016-09-04 6 15 16 18 14 3
## 59 2016-09-05 6 15 16 18 14 3
## 60 2016-09-06 6 15 16 18 14 3
## 61 2016-09-07 6 15 16 NA 14 3
## 62 2016-09-08 6 15 16 18 14 3
## 63 2016-09-09 6 15 16 18 14 3
## 64 2016-09-10 6 15 16 18 14 3
## 65 2016-09-11 6 15 16 18 14 3
## 66 2016-09-12 6 15 16 18 14 3
## 67 2016-09-13 6 NA 16 18 14 3
## 68 2016-09-14 6 15 16 18 14 3
## 69 2016-09-15 6 15 16 18 14 3
## 70 2016-09-16 6 15 16 18 14 NA
## 71 2016-09-17 6 15 16 18 14 NA
## 72 2016-09-18 6 15 16 18 14 NA
## 73 2016-09-19 6 15 16 18 14 NA
## 74 2016-09-20 6 15 16 18 14 NA
## 75 2016-09-21 6 15 16 18 14 NA
## 76 2016-09-22 6 15 16 18 14 NA
## 77 2016-09-23 6 15 16 18 14 NA
## 78 2016-09-24 6 15 16 18 14 NA
## 79 2016-09-25 6 15 16 18 14 NA
## 80 2016-09-26 6 15 16 18 14 NA
## 81 2016-09-27 6 15 16 18 14 NA
## 82 2016-09-28 6 15 16 18 14 NA
## 83 2016-09-29 6 15 16 18 14 NA
## 84 2016-09-30 27 15 16 18 27 NA
## 85 2016-10-01 18 15 16 18 18 NA
## 86 2016-10-02 18 15 16 18 18 NA
## 87 2016-10-03 18 15 27 18 18 NA
## 88 2016-10-04 18 18 18 18 18 NA
## 89 2016-10-05 18 18 18 18 18 NA
## 90 2016-10-06 18 18 18 18 18 NA
## 91 2016-10-07 18 18 18 18 18 NA
## 92 2016-10-08 18 18 18 18 18 NA
## 93 2016-10-09 18 18 18 18 18 NA
## 94 2016-10-10 18 18 18 18 18 NA
## 95 2016-10-11 18 18 18 18 18 NA
## 96 2016-10-12 18 18 18 18 18 NA
## 97 2016-10-13 18 18 18 18 18 NA
## 98 2016-10-14 18 18 18 18 18 NA
## 99 2016-10-15 18 18 18 18 18 NA
## 100 2016-10-16 18 18 18 18 18 NA
## 101 2016-10-17 NA 18 NA 18 18 NA
## 102 2016-10-18 12 18 12 18 18 NA
## 103 2016-10-19 12 18 12 18 18 NA
## 104 2016-10-20 12 18 12 18 18 NA
## 105 2016-10-21 12 18 12 18 18 NA
## 106 2016-10-22 12 18 12 18 18 NA
## 107 2016-10-23 12 18 12 18 18 NA
## 108 2016-10-24 12 18 12 18 18 NA
## 109 2016-10-25 12 18 12 18 18 NA
## 110 2016-10-26 12 18 12 18 18 NA
## 111 2016-10-27 12 18 12 18 18 NA
## 112 2016-10-28 12 18 12 18 18 NA
## 113 2016-10-29 12 18 12 18 18 NA
## 114 2016-10-30 12 18 12 18 18 NA
## 115 2016-10-31 12 18 12 18 18 NA
## 116 2016-11-01 12 18 12 18 18 NA
## 117 2016-11-02 12 18 12 18 18 NA
## 118 2016-11-03 27 18 27 18 18 NA
## 119 2016-11-04 NA 27 NA 27 27 NA
## [1] ""
## date ODIN-112 ODIN-113 ODIN-114 ODIN-115 ODIN-116 ODIN-117
## 1 2016-07-09 NA NA NA NA NA NA
## 2 2016-07-10 NA NA NA NA NA NA
## 3 2016-07-11 NA NA NA NA NA NA
## 4 2016-07-12 NA 27 27 27 NA NA
## 5 2016-07-13 NA 18 18 18 NA NA
## 6 2016-07-14 27 18 18 18 NA NA
## 7 2016-07-15 4 18 18 18 NA NA
## 8 2016-07-16 4 18 18 18 NA NA
## 9 2016-07-17 4 18 18 18 NA NA
## 10 2016-07-18 4 18 18 18 NA NA
## 11 2016-07-19 4 18 18 18 NA NA
## 12 2016-07-20 4 18 18 18 NA NA
## 13 2016-07-21 4 18 18 18 NA NA
## 14 2016-07-22 4 18 18 18 NA NA
## 15 2016-07-23 4 18 18 18 NA NA
## 16 2016-07-24 4 18 NA NA NA NA
## 17 2016-07-25 4 27 NA NA NA NA
## 18 2016-07-26 4 9 NA NA NA NA
## 19 2016-07-27 4 9 NA NA NA NA
## 20 2016-07-28 4 9 NA NA NA NA
## 21 2016-07-29 4 9 NA NA NA NA
## 22 2016-07-30 4 9 NA NA NA NA
## 23 2016-07-31 4 9 NA NA NA NA
## 24 2016-08-01 4 9 NA NA NA NA
## 25 2016-08-02 4 9 8 NA NA NA
## 26 2016-08-03 4 9 8 NA NA NA
## 27 2016-08-04 4 9 8 NA NA NA
## 28 2016-08-05 4 9 8 NA NA NA
## 29 2016-08-06 4 9 8 NA NA NA
## 30 2016-08-07 4 9 8 NA NA NA
## 31 2016-08-08 4 9 8 NA NA NA
## 32 2016-08-09 4 9 8 NA NA NA
## 33 2016-08-10 4 9 8 NA NA NA
## 34 2016-08-11 4 9 8 NA NA NA
## 35 2016-08-12 4 9 8 NA NA NA
## 36 2016-08-13 4 9 8 2 NA NA
## 37 2016-08-14 4 9 8 2 NA NA
## 38 2016-08-15 4 9 8 2 NA NA
## 39 2016-08-16 4 9 8 2 NA NA
## 40 2016-08-17 4 9 8 2 NA NA
## 41 2016-08-18 4 9 8 2 NA NA
## 42 2016-08-19 4 9 8 2 NA NA
## 43 2016-08-20 4 9 8 2 NA NA
## 44 2016-08-21 4 9 8 2 NA NA
## 45 2016-08-22 4 9 8 2 NA NA
## 46 2016-08-23 4 9 8 2 NA NA
## 47 2016-08-24 4 9 8 2 5 7
## 48 2016-08-25 4 9 8 2 5 7
## 49 2016-08-26 4 9 8 2 5 7
## 50 2016-08-27 4 9 8 2 5 7
## 51 2016-08-28 4 9 8 2 5 7
## 52 2016-08-29 4 9 8 2 5 7
## 53 2016-08-30 4 9 8 2 5 7
## 54 2016-08-31 NA 9 8 2 5 7
## 55 2016-09-01 NA 9 8 2 5 7
## 56 2016-09-02 NA 9 8 2 5 7
## 57 2016-09-03 NA 9 8 2 5 7
## 58 2016-09-04 NA 9 8 2 5 7
## 59 2016-09-05 NA 9 8 2 5 7
## 60 2016-09-06 NA 9 8 2 5 7
## 61 2016-09-07 18 9 8 2 5 7
## 62 2016-09-08 18 9 8 2 5 7
## 63 2016-09-09 18 9 8 2 5 7
## 64 2016-09-10 18 9 8 2 5 7
## 65 2016-09-11 18 9 8 2 5 7
## 66 2016-09-12 18 9 8 2 5 7
## 67 2016-09-13 18 9 8 2 5 NA
## 68 2016-09-14 18 9 8 2 5 7
## 69 2016-09-15 18 9 8 2 5 7
## 70 2016-09-16 18 9 8 2 5 7
## 71 2016-09-17 18 9 8 2 5 7
## 72 2016-09-18 18 9 8 2 5 7
## 73 2016-09-19 18 9 8 2 5 7
## 74 2016-09-20 18 9 8 2 5 7
## 75 2016-09-21 18 9 8 2 5 7
## 76 2016-09-22 18 9 8 2 5 7
## 77 2016-09-23 18 9 8 2 5 7
## 78 2016-09-24 18 9 8 2 5 7
## 79 2016-09-25 18 9 8 2 5 7
## 80 2016-09-26 18 9 8 2 5 7
## 81 2016-09-27 18 9 8 2 5 7
## 82 2016-09-28 18 9 8 2 5 7
## 83 2016-09-29 18 9 8 2 5 7
## 84 2016-09-30 18 27 8 18 NA 27
## 85 2016-10-01 18 18 8 18 NA 18
## 86 2016-10-02 18 18 8 18 NA 18
## 87 2016-10-03 18 18 8 18 NA 18
## 88 2016-10-04 18 18 8 18 NA 18
## 89 2016-10-05 18 18 8 18 NA 18
## 90 2016-10-06 18 18 8 18 NA 18
## 91 2016-10-07 18 18 8 18 NA 18
## 92 2016-10-08 18 18 8 18 NA 18
## 93 2016-10-09 18 18 8 18 NA 18
## 94 2016-10-10 18 18 8 18 NA 18
## 95 2016-10-11 18 18 8 18 NA 18
## 96 2016-10-12 18 18 8 18 NA 18
## 97 2016-10-13 18 18 8 18 NA 18
## 98 2016-10-14 18 18 8 18 NA 18
## 99 2016-10-15 18 18 8 18 NA 18
## 100 2016-10-16 18 18 8 18 NA 18
## 101 2016-10-17 18 18 NA 18 NA 18
## 102 2016-10-18 18 18 18 18 NA 18
## 103 2016-10-19 18 18 18 18 NA 18
## 104 2016-10-20 18 18 18 18 NA 18
## 105 2016-10-21 18 18 18 18 NA 18
## 106 2016-10-22 18 18 18 18 NA 18
## 107 2016-10-23 18 18 18 18 NA 18
## 108 2016-10-24 18 18 18 18 NA 18
## 109 2016-10-25 18 18 18 18 NA 18
## 110 2016-10-26 18 18 18 18 NA 18
## 111 2016-10-27 18 18 18 18 NA 18
## 112 2016-10-28 18 18 NA 18 NA 18
## 113 2016-10-29 18 18 NA 18 NA 18
## 114 2016-10-30 18 18 NA 18 NA 18
## 115 2016-10-31 18 18 NA 18 NA 18
## 116 2016-11-01 18 18 NA 18 NA 18
## 117 2016-11-02 18 18 NA 18 NA 18
## 118 2016-11-03 18 18 NA 18 NA 18
## 119 2016-11-04 27 27 NA 27 NA 27
## [1] ""
## date ODIN-120 ODIN-121 ODIN-122 ODIN-123
## 1 2016-07-09 NA NA NA NA
## 2 2016-07-10 NA NA NA NA
## 3 2016-07-11 NA NA NA NA
## 4 2016-07-12 NA NA NA NA
## 5 2016-07-13 NA NA NA NA
## 6 2016-07-14 NA NA NA NA
## 7 2016-07-15 NA NA NA NA
## 8 2016-07-16 NA NA NA NA
## 9 2016-07-17 NA NA NA NA
## 10 2016-07-18 NA NA NA NA
## 11 2016-07-19 NA NA NA NA
## 12 2016-07-20 NA NA NA NA
## 13 2016-07-21 NA NA NA NA
## 14 2016-07-22 NA NA NA NA
## 15 2016-07-23 NA NA NA NA
## 16 2016-07-24 NA NA NA NA
## 17 2016-07-25 NA NA NA NA
## 18 2016-07-26 NA NA NA NA
## 19 2016-07-27 NA NA NA NA
## 20 2016-07-28 NA NA NA NA
## 21 2016-07-29 NA NA NA NA
## 22 2016-07-30 NA NA NA NA
## 23 2016-07-31 NA NA NA NA
## 24 2016-08-01 NA NA NA NA
## 25 2016-08-02 NA NA NA NA
## 26 2016-08-03 NA NA NA NA
## 27 2016-08-04 NA NA NA NA
## 28 2016-08-05 NA NA NA NA
## 29 2016-08-06 NA NA NA NA
## 30 2016-08-07 NA NA NA NA
## 31 2016-08-08 NA NA NA NA
## 32 2016-08-09 NA NA NA NA
## 33 2016-08-10 NA NA NA NA
## 34 2016-08-11 NA NA NA NA
## 35 2016-08-12 NA NA NA NA
## 36 2016-08-13 NA NA NA NA
## 37 2016-08-14 NA NA NA NA
## 38 2016-08-15 NA NA NA NA
## 39 2016-08-16 NA NA NA NA
## 40 2016-08-17 NA NA NA NA
## 41 2016-08-18 NA NA NA NA
## 42 2016-08-19 NA NA NA NA
## 43 2016-08-20 NA NA NA NA
## 44 2016-08-21 NA NA NA NA
## 45 2016-08-22 NA NA NA NA
## 46 2016-08-23 NA NA NA NA
## 47 2016-08-24 NA NA NA NA
## 48 2016-08-25 NA NA NA NA
## 49 2016-08-26 NA NA NA NA
## 50 2016-08-27 NA NA NA NA
## 51 2016-08-28 NA NA NA NA
## 52 2016-08-29 NA NA NA NA
## 53 2016-08-30 NA NA NA NA
## 54 2016-08-31 NA NA NA NA
## 55 2016-09-01 NA NA NA NA
## 56 2016-09-02 NA NA NA NA
## 57 2016-09-03 NA NA NA NA
## 58 2016-09-04 NA NA NA NA
## 59 2016-09-05 NA NA NA NA
## 60 2016-09-06 NA NA NA NA
## 61 2016-09-07 NA NA NA NA
## 62 2016-09-08 NA NA NA NA
## 63 2016-09-09 NA NA NA NA
## 64 2016-09-10 NA NA NA NA
## 65 2016-09-11 NA NA NA NA
## 66 2016-09-12 NA NA NA NA
## 67 2016-09-13 NA NA NA NA
## 68 2016-09-14 NA NA NA NA
## 69 2016-09-15 NA NA NA NA
## 70 2016-09-16 NA NA NA NA
## 71 2016-09-17 NA NA NA NA
## 72 2016-09-18 NA NA NA NA
## 73 2016-09-19 NA NA NA NA
## 74 2016-09-20 NA NA NA NA
## 75 2016-09-21 NA NA NA NA
## 76 2016-09-22 NA NA NA NA
## 77 2016-09-23 NA NA NA NA
## 78 2016-09-24 NA NA NA NA
## 79 2016-09-25 NA NA NA NA
## 80 2016-09-26 NA NA NA NA
## 81 2016-09-27 NA NA NA NA
## 82 2016-09-28 NA NA NA NA
## 83 2016-09-29 NA NA NA NA
## 84 2016-09-30 NA NA NA NA
## 85 2016-10-01 NA NA NA NA
## 86 2016-10-02 NA NA NA NA
## 87 2016-10-03 NA NA NA NA
## 88 2016-10-04 NA NA NA NA
## 89 2016-10-05 NA NA NA NA
## 90 2016-10-06 NA NA NA NA
## 91 2016-10-07 NA NA NA NA
## 92 2016-10-08 NA NA NA NA
## 93 2016-10-09 NA NA NA NA
## 94 2016-10-10 NA NA NA NA
## 95 2016-10-11 NA NA NA NA
## 96 2016-10-12 NA NA NA NA
## 97 2016-10-13 NA NA NA NA
## 98 2016-10-14 NA NA NA NA
## 99 2016-10-15 NA NA NA NA
## 100 2016-10-16 NA NA NA NA
## 101 2016-10-17 NA NA NA NA
## 102 2016-10-18 NA NA NA NA
## 103 2016-10-19 NA NA NA NA
## 104 2016-10-20 NA NA NA NA
## 105 2016-10-21 NA NA NA NA
## 106 2016-10-22 NA NA NA NA
## 107 2016-10-23 NA NA NA NA
## 108 2016-10-24 NA NA NA NA
## 109 2016-10-25 NA NA NA NA
## 110 2016-10-26 NA NA NA NA
## 111 2016-10-27 NA NA NA NA
## 112 2016-10-28 NA NA NA NA
## 113 2016-10-29 NA NA NA NA
## 114 2016-10-30 NA NA NA NA
## 115 2016-10-31 NA NA NA NA
## 116 2016-11-01 NA NA NA NA
## 117 2016-11-02 NA NA NA NA
## 118 2016-11-03 NA NA NA NA
## 119 2016-11-04 NA NA NA NA
## [1] ""
odin.2017.plot <- subset(odin,as.POSIXlt(date)$year+1900==2017)
ggplot(odin.2017.plot) +
geom_point(aes(x=date,y=serial,colour=factor(site))) +
ggtitle("2017 ODIN Sites")
odin.2017 <- subset(odin.wide,as.POSIXlt(date)$year+1900==2017)
nice.print( odin.2017 )
## date ODIN-100 ODIN-101 ODIN-102 ODIN-103 ODIN-104 ODIN-105
## 120 2017-06-07 18 18 18 NA NA NA
## 121 2017-06-08 18 18 18 NA NA NA
## 122 2017-06-09 18 18 18 NA NA NA
## 123 2017-06-10 18 18 18 NA NA NA
## 124 2017-06-11 18 18 18 NA NA NA
## 125 2017-06-12 18 18 18 NA NA NA
## 126 2017-06-13 18 18 18 NA NA NA
## 127 2017-06-14 18 18 18 NA NA NA
## 128 2017-06-15 18 18 18 NA NA NA
## 129 2017-06-16 18 18 18 NA NA NA
## 130 2017-06-17 18 18 18 NA NA NA
## 131 2017-06-18 18 18 18 NA NA NA
## 132 2017-06-19 18 18 18 NA NA NA
## 133 2017-06-20 27 NA NA NA NA NA
## 134 2017-06-21 32 17 18 NA NA NA
## 135 2017-06-22 32 17 18 NA NA NA
## 136 2017-06-23 32 17 18 NA NA NA
## 137 2017-06-24 32 17 18 NA NA NA
## 138 2017-06-25 32 17 18 NA NA NA
## 139 2017-06-26 32 17 18 NA NA NA
## 140 2017-06-27 32 17 18 NA NA NA
## 141 2017-06-28 32 17 18 NA NA NA
## 142 2017-06-29 32 17 18 NA NA NA
## 143 2017-06-30 32 17 18 NA NA NA
## 144 2017-07-01 32 17 18 NA NA NA
## 145 2017-07-02 32 17 18 NA NA NA
## 146 2017-07-03 32 17 18 NA NA NA
## 147 2017-07-04 32 17 18 NA NA NA
## 148 2017-07-05 32 17 18 NA NA NA
## 149 2017-07-06 32 17 18 NA NA NA
## 150 2017-07-07 32 17 18 NA NA NA
## 151 2017-07-08 32 17 18 NA NA NA
## 152 2017-07-09 32 17 18 NA NA NA
## 153 2017-07-10 32 17 18 NA NA NA
## 154 2017-07-11 32 17 18 NA NA NA
## 155 2017-07-12 32 17 18 NA NA NA
## 156 2017-07-13 32 17 18 NA NA NA
## 157 2017-07-14 32 17 18 NA NA NA
## 158 2017-07-15 32 17 18 NA NA NA
## 159 2017-07-16 32 17 18 NA NA NA
## 160 2017-07-17 32 17 18 NA NA NA
## 161 2017-07-18 NA 17 18 NA NA NA
## [1] ""
## date ODIN-106 ODIN-107 ODIN-108 ODIN-109 ODIN-110 ODIN-111
## 120 2017-06-07 18 18 NA NA NA NA
## 121 2017-06-08 18 18 NA 18 NA NA
## 122 2017-06-09 18 18 NA 18 NA NA
## 123 2017-06-10 18 18 NA 18 NA NA
## 124 2017-06-11 18 18 NA 18 NA NA
## 125 2017-06-12 18 18 NA 18 NA NA
## 126 2017-06-13 18 18 NA 18 NA NA
## 127 2017-06-14 18 18 NA 18 NA NA
## 128 2017-06-15 18 18 NA 18 NA NA
## 129 2017-06-16 18 18 NA NA NA NA
## 130 2017-06-17 18 18 NA NA NA NA
## 131 2017-06-18 18 18 NA NA NA NA
## 132 2017-06-19 18 18 NA NA NA NA
## 133 2017-06-20 27 NA NA NA NA NA
## 134 2017-06-21 29 28 NA NA NA NA
## 135 2017-06-22 29 28 NA NA NA NA
## 136 2017-06-23 29 28 NA NA NA NA
## 137 2017-06-24 29 28 NA NA NA NA
## 138 2017-06-25 29 28 NA NA NA NA
## 139 2017-06-26 29 28 NA NA NA NA
## 140 2017-06-27 29 28 NA NA NA NA
## 141 2017-06-28 29 28 NA NA NA NA
## 142 2017-06-29 29 28 NA NA NA NA
## 143 2017-06-30 29 28 NA NA NA NA
## 144 2017-07-01 29 28 NA NA NA NA
## 145 2017-07-02 29 28 NA NA NA NA
## 146 2017-07-03 29 28 NA NA NA NA
## 147 2017-07-04 29 28 NA NA NA NA
## 148 2017-07-05 29 28 NA NA NA NA
## 149 2017-07-06 29 28 NA NA NA NA
## 150 2017-07-07 29 28 NA NA NA NA
## 151 2017-07-08 29 28 NA NA NA NA
## 152 2017-07-09 29 28 NA NA NA NA
## 153 2017-07-10 29 28 NA NA NA NA
## 154 2017-07-11 29 28 NA NA NA NA
## 155 2017-07-12 29 28 NA NA NA NA
## 156 2017-07-13 29 28 NA NA NA NA
## 157 2017-07-14 29 28 NA NA NA NA
## 158 2017-07-15 29 28 NA NA NA NA
## 159 2017-07-16 29 28 NA NA NA NA
## 160 2017-07-17 29 28 NA NA NA NA
## 161 2017-07-18 29 28 NA NA NA NA
## [1] ""
## date ODIN-112 ODIN-113 ODIN-114 ODIN-115 ODIN-116 ODIN-117
## 120 2017-06-07 NA NA NA 18 18 NA
## 121 2017-06-08 NA NA NA 18 18 NA
## 122 2017-06-09 NA NA NA 18 18 NA
## 123 2017-06-10 NA NA NA 18 18 NA
## 124 2017-06-11 NA NA NA 18 18 NA
## 125 2017-06-12 NA NA NA 18 18 NA
## 126 2017-06-13 NA NA NA 18 18 NA
## 127 2017-06-14 NA NA NA 18 18 NA
## 128 2017-06-15 NA NA NA 18 18 NA
## 129 2017-06-16 NA NA NA 18 18 NA
## 130 2017-06-17 NA NA NA 18 18 NA
## 131 2017-06-18 NA NA NA 18 18 NA
## 132 2017-06-19 NA NA NA 18 18 NA
## 133 2017-06-20 NA NA NA NA NA NA
## 134 2017-06-21 NA NA NA 16 1 NA
## 135 2017-06-22 NA NA NA 16 1 NA
## 136 2017-06-23 NA NA NA 16 1 NA
## 137 2017-06-24 NA NA NA 16 1 NA
## 138 2017-06-25 NA NA NA 16 1 NA
## 139 2017-06-26 NA NA NA 16 1 NA
## 140 2017-06-27 NA NA NA 16 1 NA
## 141 2017-06-28 NA NA NA 16 1 NA
## 142 2017-06-29 NA NA NA 16 1 NA
## 143 2017-06-30 NA NA NA 16 1 NA
## 144 2017-07-01 NA NA NA 16 1 NA
## 145 2017-07-02 NA NA NA 16 1 NA
## 146 2017-07-03 NA NA NA 16 1 NA
## 147 2017-07-04 NA NA NA 16 1 NA
## 148 2017-07-05 NA NA NA 16 1 NA
## 149 2017-07-06 NA NA NA 16 1 NA
## 150 2017-07-07 NA NA NA 16 1 NA
## 151 2017-07-08 NA NA NA 16 1 NA
## 152 2017-07-09 NA NA NA 16 1 NA
## 153 2017-07-10 NA NA NA 16 1 NA
## 154 2017-07-11 NA NA NA 16 1 NA
## 155 2017-07-12 NA NA NA 16 1 NA
## 156 2017-07-13 NA NA NA 16 1 NA
## 157 2017-07-14 NA NA NA 16 1 NA
## 158 2017-07-15 NA NA NA 16 1 NA
## 159 2017-07-16 NA NA NA 16 1 NA
## 160 2017-07-17 NA NA NA 16 1 NA
## 161 2017-07-18 NA NA NA NA NA NA
## [1] ""
## date ODIN-120 ODIN-121 ODIN-122 ODIN-123
## 120 2017-06-07 18 18 18 18
## 121 2017-06-08 18 18 18 18
## 122 2017-06-09 18 18 18 18
## 123 2017-06-10 18 18 18 18
## 124 2017-06-11 18 18 18 18
## 125 2017-06-12 18 18 NA 18
## 126 2017-06-13 18 18 NA 18
## 127 2017-06-14 18 18 NA 18
## 128 2017-06-15 18 18 NA 18
## 129 2017-06-16 18 18 NA 18
## 130 2017-06-17 18 18 NA 18
## 131 2017-06-18 18 18 NA 18
## 132 2017-06-19 18 18 NA 18
## 133 2017-06-20 27 27 27 NA
## 134 2017-06-21 14 2 30 10
## 135 2017-06-22 14 2 30 10
## 136 2017-06-23 14 2 30 10
## 137 2017-06-24 14 2 30 10
## 138 2017-06-25 14 2 30 10
## 139 2017-06-26 14 2 30 10
## 140 2017-06-27 14 2 30 10
## 141 2017-06-28 14 2 30 10
## 142 2017-06-29 14 2 30 10
## 143 2017-06-30 14 2 30 10
## 144 2017-07-01 14 2 30 10
## 145 2017-07-02 14 2 30 10
## 146 2017-07-03 14 2 30 10
## 147 2017-07-04 14 2 30 10
## 148 2017-07-05 14 2 30 10
## 149 2017-07-06 14 2 30 10
## 150 2017-07-07 14 2 30 10
## 151 2017-07-08 14 2 NA 10
## 152 2017-07-09 14 2 NA 10
## 153 2017-07-10 14 2 NA 10
## 154 2017-07-11 14 2 NA 10
## 155 2017-07-12 14 2 NA 10
## 156 2017-07-13 14 2 NA 10
## 157 2017-07-14 14 2 NA 10
## 158 2017-07-15 14 2 NA 10
## 159 2017-07-16 14 2 NA 10
## 160 2017-07-17 14 2 NA 10
## 161 2017-07-18 14 2 NA 10
## [1] ""
draw.map <- function(data.row,zoom=14) {
coord.table <- data.frame(id=NA,site.id=NA,lat=NA,lon=NA)
j <- 1
several <- ""
for (i in 2:ncol(data.row)) {
if (!is.na(data.row[1,i])) {
id <- substr(names(data.row)[i],6,8)
site.id <- data.row[1,i]
if (site.id==27)
site.id <- 18 # these are the same site
# if there is already a ODIN with that site id
x <- which(coord.table$site.id==site.id)
if (length(x)>0) {
if (several=="") {
several <- paste0('several = ',coord.table[x[1],'id'])
coord.table[x[1],'id'] <- "several"
}
several <- paste0(several,', ',id)
} else {
coord.table[j,] <- c(id,site.id,locs[locs$id==site.id,c(3,2)])
j <- j+1
}
}
}
map <- get_map(location = c(mean(locs$lon),mean(locs$lat)),zoom = zoom)
m <- ggmap(map) +
geom_point(data=coord.table,aes(x=lon,y=lat),col="red",size=1) +
geom_text(data=coord.table,aes(label=id),hjust=0,vjust=0) +
ggtitle(data.row[1,'date'])
if (several != "")
print(several)
print(m)
}
draw.map(odin.2016[50,])
## Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=-43.309301,172.582313&zoom=14&size=640x640&scale=2&maptype=terrain&language=en-EN&sensor=false
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_text).
draw.map(odin.2016[50,],12)
## Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=-43.309301,172.582313&zoom=12&size=640x640&scale=2&maptype=terrain&language=en-EN&sensor=false
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_text).
draw.map(odin.2016[50,],10)
## Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=-43.309301,172.582313&zoom=10&size=640x640&scale=2&maptype=terrain&language=en-EN&sensor=false
draw.map(odin.2016[60,])
## Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=-43.309301,172.582313&zoom=14&size=640x640&scale=2&maptype=terrain&language=en-EN&sensor=false
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_text).
draw.map(odin.2016[110,])
## Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=-43.309301,172.582313&zoom=14&size=640x640&scale=2&maptype=terrain&language=en-EN&sensor=false
## [1] "several = 100, 101, 102, 104, 105, 107, 108, 109, 110, 112, 113, 114, 115, 117"