## code to prepare `od_data_df` dataset goes here
library(sf)
library(tidyverse)
library(stplanr)
od = pct::get_od()
centroids_ew_all = pct::get_centroids_ew() # todo: add centroids dataset based on this
zones_leeds = ukboundaries::msoa2011_lds
centroids_leeds = centroids_ew_all %>%
filter(msoa11cd %in% zones_leeds$geo_code)
od_data_df_medium = od %>%
filter(geo_code1 %in% centroids_leeds$msoa11cd) %>%
filter(geo_code2 %in% centroids_leeds$msoa11cd) %>%
# filter(geo_code1 != geo_code2) %>%
select(geo_code1, geo_code2, all, train, bus, taxi, car_driver, car_passenger, bicycle, foot)
od_data_df_medium
class(od_data_df_medium)
od_data_df_medium = as.data.frame(od_data_df_medium)
class(od_data_df_medium)
file.size("data/od_data_df_medium.rda") / 1e6
usethis::use_data(od_data_df_medium, overwrite = TRUE)
file.size("data/od_data_df_medium.rda") / 1e6
od_data_df = od_data_df_medium %>%
select(geo_code1, geo_code2, all, train, bus, taxi, car_driver, car_passenger, bicycle, foot) %>%
top_n(n = 4, foot) %>%
as.data.frame(stringsAsFactors = FALSE)
od_data_df2 = od_data_df_medium %>%
filter(geo_code2 != "E02006875") %>%
filter(geo_code2 != geo_code1) %>%
select(geo_code1, geo_code2, all, train, bus, taxi, car_driver, car_passenger, bicycle, foot) %>%
top_n(n = 2, foot) %>%
as.data.frame(stringsAsFactors = FALSE)
od_data_df3 = od_data_df_medium %>%
filter(geo_code1 == "E02002392" & geo_code2 == "E02006875") %>%
select(geo_code1, geo_code2, all, train, bus, taxi, car_driver, car_passenger, bicycle, foot) %>%
as.data.frame(stringsAsFactors = FALSE)
od_data_df = rbind(od_data_df, od_data_df2, od_data_df3)
od_data_df
usethis::use_data(od_data_df, overwrite = TRUE)
zones_leeds = ukboundaries::msoa2011_lds
class(zones_leeds)
sf::st_crs(zones_leeds) = 4326
zones_leeds = zones_leeds %>%
transmute(geo_code = as.character(geo_code))
summary(zones_leeds)
zones_leeds_cents = st_centroid(zones_leeds)
zones_uk = ukboundaries::msoa2011_vsimple
sf::st_crs(zones_uk)
sf::st_crs(zones_uk) = 4326
sf::st_crs(zones_uk)
zones_leeds_simple = zones_uk[zones_leeds_cents, ]
zones_leeds_simple = zones_leeds_simple %>%
select(msoa11cd, msoa11nm) %>%
transmute(geo_code = as.character(msoa11cd))
object.size(zones_leeds)
object.size(zones_leeds_simple) # 1/3rd size
object.size(zones_leeds_cents)
od_data_zones = zones_leeds_simple
class(od_data_zones)
od_data_centroids = zones_leeds_cents %>%
select(geo_code)
class(od_data_centroids)
identical(sf::st_crs(od_data_centroids), sf::st_crs(od_data_zones))
od_data_coordinates = cbind(
sf::st_drop_geometry(od_data_centroids),
sf::st_coordinates(od_data_centroids)
)
class(od_data_centroids)
usethis::use_data(od_data_zones, overwrite = TRUE)
usethis::use_data(od_data_centroids, overwrite = TRUE)
usethis::use_data(od_data_coordinates, overwrite = TRUE)
l = stplanr::od2line(od_data_df, zones_leeds)
mapview::mapview(l)
l = stplanr::od2line(od_data_df_all, zones_leeds)
plot(l[1:1000, ]) # slow, messy
l
# Study region and centre -------------------------------------------------
od_data_region = ukboundaries::leeds
plot(od_data_region)
od_data_centroid = st_centroid(od_data_region)
central_zone = od_data_zones[od_data_centroid, ]
od_data_centre = st_centroid(central_zone)
od_data_centre_projected = st_transform(od_data_centre, 27700)
od_data_region_projected = st_transform(od_data_region, 27700)
z = zonebuilder::zb_zone(x = od_data_region_projected, point = od_data_centre_projected, n_circles = 5)
plot(z)
od_data_csa_zones = z %>% st_transform(4326)
usethis::use_data(od_data_csa_zones, overwrite = TRUE)
od_data_df = od_data_df %>%
filter(geo_code1 %in% od_data_zones$msoa11cd)
l = od_data_df %>% od2line(od_data_zones)
plot(l)
mapview::mapview(l) + mapview::mapview(od_data_csa_zones) # interesting plot showing importance of region centre
od_agg = od_aggregate(flow = od_data_df, od_data_zones, od_data_csa_zones) # fail!
plot(od_agg)
# get network for leeds ---------------------------------------------------
library(geofabrik)
route_network_west_yorkshire = osmextract::oe_get("west yorkshire")
route_network_leeds = route_network_west_yorkshire[od_data_zones, ]
summary(as.factor(route_network_leeds$highway))
# could save this at some point:
od_data_zones_min = od_data_zones %>%
filter(geo_code %in% c(od_data_df$geo_code1, od_data_df$geo_code2))
mapview::mapview(od_data_zones_min)
od_data_region_buffer = stplanr::geo_buffer(od_data_zones_min, dist = 100)
route_network_min = route_network_west_yorkshire[od_data_region_buffer, , op = sf::st_within]
mapview::mapview(route_network_min)
od_data_network = route_network_min %>%
filter(str_detect(highway, "cycleway|primary|second|tert|trunk"))
mapview::mapview(od_data_network) +
mapview::mapview(od_data_zones_min)
usethis::use_data(od_data_network, overwrite = TRUE)
usethis::use_data(od_data_zones_min, overwrite = TRUE)
# get od_aggregate working ------------------------------------------------
zones_lsoa_leeds = pct::get_pct_zones(region = "west-yorkshire")
centroids_lsoa_leeds = pct::get_pct_centroids(region = "west-yorkshire")
nrow(zones_lsoa_leeds)
nrow(centroids_lsoa_leeds)
centroids_in_zones_min = centroids_lsoa_leeds[od::od_data_zones_min, ]
mapview::mapview(centroids_in_zones_min)
od_data_zones_small = zones_lsoa_leeds %>%
filter(geo_code %in% centroids_in_zones_min$geo_code) %>%
select(geo_code, all, foot, bicycle)
mapview::mapview(od_data_zones_small)
usethis::use_data(od_data_zones_small, overwrite = TRUE)
# get buildings for Leeds -------------------------------------------------
library(dplyr)
library(od)
# od_data_buildings
building_types = c(
"office",
"industrial",
"commercial",
"retail",
"warehouse",
"civic",
"public"
)
leeds_osm = osmextract::oe_get(place = "leeds", layer = "multipolygons")
leeds_osm_buildigs = leeds_osm %>%
filter(building %in% building_types)
zones_of_interest = od_data_zones_min[od_data_zones_min$geo_code %in% c(od_data_df$geo_code1[1:2], od_data_df$geo_code2[1:2]), ]
mapview::mapview(zones_of_interest)
buildings_in_zones = leeds_osm_buildigs[zones_of_interest, , op = sf::st_within]
mapview::mapview(buildings_in_zones)
buildings_in_zones = buildings_in_zones %>%
filter(!is.na(osm_way_id)) %>%
select(osm_way_id, building)
od_data_buildings = buildings_in_zones
usethis::use_data(od_data_buildings, overwrite = TRUE)
file.size("data/od_data_buildings.rda") / 1000
# 40 to 26 kB...
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.