## -----------------------------------------------------------------------------
knitr::opts_chunk$set(eval = FALSE)

## ----message=FALSE, warning=FALSE---------------------------------------------
# # Load packages
# library(pct)
# library(tmap)

## ----message=FALSE, warning=FALSE---------------------------------------------
# #Get road network for preselected regin
# rnet = pct::get_pct_rnet(region = "oxfordshire")
# #Calculate road length
# rnet$segment_length = as.numeric(sf::st_length(rnet))
# #Calculate daily km's cycled
# rnet$m_cycled_per_working_day = rnet$segment_length * rnet$bicycle

## ----message=FALSE, warning=FALSE---------------------------------------------
# # Get road network for preselected regin
# zones = pct::get_pct_zones(region = "oxfordshire")
# summary(sf::st_is_valid(zones))
# zones = sf::st_make_valid(zones)
# summary(sf::st_is_valid(zones))
# cycled_m_per_zone = aggregate(rnet["m_cycled_per_working_day"], zones, FUN = sum)

## ----message=FALSE, warning=FALSE---------------------------------------------
# zones$mkm_cycled_for_commuting_per_year_estimated = cycled_m_per_zone$m_cycled_per_working_day *
#   2 * 200 / # estimate of trips days per year, morning and afternoon
#   1e9

## ----message=FALSE, warning=FALSE, fig.align="center", fig.width = 7, fig.height = 6----
#   tm_shape(zones) +
#     tm_fill(
#       col = "mkm_cycled_for_commuting_per_year_estimated",
#       style = "quantile",
#       palette = "plasma",
#       title = "Yearly distance cycled by commuters per day\n(2011 Census Data)",
#       legend.size.is.portrait = TRUE
#     ) +
#     tm_layout(
#       title = "OXFORDSHIRE",
#       title.position = c("left", "top"),
#       bg.color = "honeydew3",
#       outer.bg.color = "honeydew",
#       legend.stack = "horizontal",
#       legend.outside = TRUE,
#       legend.outside.position = "left",
#       frame.lwd = 5
#     )

## ----message=FALSE, warning=FALSE---------------------------------------------
# pct_zones_rnet_current = function(region_name) {
#   # Get road network for preselected regin
#   rnet = pct::get_pct_rnet(region = region_name)
#   # Calculate road length
#   rnet$segment_length = as.numeric(sf::st_length(rnet))
#   # Calculate daily km cycled
#   rnet$m_cycled_per_working_day = rnet$segment_length * rnet$bicycle
#   # Convert to centroids to avoid double counting flows that cross zones
#   rnet_centroids = sf::st_centroid(rnet)
#   # Get LSOA spatial data
#   zones = sf::st_make_valid(pct::get_pct_zones(region = region_name))
#   # Calculate cyced miles per zone
#   cycled_m_per_zone = aggregate(rnet_centroids["m_cycled_per_working_day"], zones, FUN = sum)
#   # Calculate miles cycled per year from commuting
#   zones$mkm_cycled_for_commuting_per_year_estimated = cycled_m_per_zone$m_cycled_per_working_day *
#     2 * 200 / # estimate of trips days per year, morning and afternoon
#     1e9
#   # Plot results
#   tmap_mode("plot")
#   tm_shape(zones) +
#     tm_fill(
#       col = "mkm_cycled_for_commuting_per_year_estimated",
#       style = "quantile",
#       palette = "plasma",
#       title = "Million km's cycled by commuters per year\n(2011 Census Data)",
#       legend.size.is.portrait = TRUE
#     ) +
#     tm_layout(
#       title = toupper(region_name),
#       title.position = c("left", "top"),
#       bg.color = "honeydew3",
#       outer.bg.color = "honeydew",
#       legend.stack = "horizontal",
#       legend.outside = TRUE,
#       legend.outside.position = "bottom",
#       frame.lwd = 5
#     )
# 
# }

## ----message=FALSE, warning=FALSE, fig.align="center", fig.width = 7, fig.height = 6----
# oxfordshire_results = pct_zones_rnet_current(region_name = "oxfordshire")
# cambrideshire_results = pct_zones_rnet_current(region_name = "cambridgeshire")
# tmap_arrange(oxfordshire_results, cambrideshire_results, ncol = 2)

## ----message=FALSE, warning=FALSE, fig.align="center", fig.width = 7, fig.height = 6----
# london_results = pct_zones_rnet_current(region_name = "london")
# gm_results = pct_zones_rnet_current(region_name = "greater-manchester")
# #tmap_mode("view")
# tmap_arrange(london_results, gm_results, ncol = 2)

## ----message=FALSE, warning=FALSE---------------------------------------------
# pct_zones_rnet_ebikes <- function(region_name) {
#   # Get road network for pre-selected region
#   rnet = pct::get_pct_rnet(region = region_name)
#   # Calculate road length
#   rnet$segment_length = as.numeric(sf::st_length(rnet))
#   # Calculate daily miles cycled
#   rnet$m_cycled_per_working_day = rnet$segment_length * rnet$ebike_slc
#   # Convert to centroids to avoid double counting flows that cross zones
#   rnet_centroids = sf::st_centroid(rnet)
#   # Get LSOA spatial data
#   zones = sf::st_make_valid(pct::get_pct_zones(region = region_name))
#   # Calculate cycled miles per zone
#   cycled_m_per_zone = aggregate(rnet_centroids["m_cycled_per_working_day"], zones, FUN = sum)
#   # Calculate km cycled per year from commuting
#   zones$mkm_cycled_for_commuting_per_year_estimated = cycled_m_per_zone$m_cycled_per_working_day *
#     2 * 200 / # estimate of trips days per year, morning and afternoon
#     1e9
#   #Plot results
#   tmap_mode("plot")
#   tm_shape(zones) +
#     tm_fill(
#       col = "mkm_cycled_for_commuting_per_year_estimated",
#       style = "quantile",
#       palette = "plasma",
#       title = "Million km's cycled by commuters per year\n(E-Bike model)",
#       legend.size.is.portrait = TRUE
#     ) +
#     tm_layout(
#       title = toupper(region_name),
#       title.position = c("left", "top"),
#       bg.color = "honeydew3",
#       outer.bg.color = "honeydew",
#       legend.stack = "horizontal",
#       legend.outside = TRUE,
#       legend.outside.position = "bottom",
#       frame.lwd = 5
#     )
# }

## ----message=FALSE, warning=FALSE, fig.align="center", fig.width = 7, fig.height = 6----
# london_results_ebikes = pct_zones_rnet_ebikes(region_name = "london")
# gm_results_ebikes = pct_zones_rnet_ebikes(region_name = "greater-manchester")
# #tmap_mode("view")
# tmap_arrange(london_results_ebikes, gm_results_ebikes, ncol = 2)