Skip to content
Snippets Groups Projects
Commit 067307cd authored by Ben Anderson's avatar Ben Anderson
Browse files

script to download and pre-save boundary data for the examples. NB: the very...

script to download and pre-save boundary data for the examples. NB: the very large MSOA 'all areas' file is not stored on the repo due to size
parent 93a414ba
No related branches found
No related tags found
No related merge requests found
# get some geo data and pre-save it
library(sf) # install first if needed
library(data.table)
library(here)
# Local Authority boundaries for the Solent region ----
# see https://medium.com/@traffordDataLab/pushing-the-boundaries-with-the-open-geography-portal-api-4d70637bddc3
geo_query <- "https://ons-inspire.esriuk.com/arcgis/rest/services/Administrative_Boundaries/Local_Authority_Districts_December_2018_Boundaries_UK_BGC/MapServer/0/query?where=lad18nm%20IN%20(%27Southampton%27,%27Portsmouth%27,%27Winchester%27,%27Eastleigh%27,%27Isle%20of%20Wight%27,%27Fareham%27,%27Gosport%27,%27Test%20Valley%27,%27East%20Hampshire%27,%27Havant%27,%27New%20Forest%27,%27Hart%27,%27Basingstoke%20and%20Deane%27)&outFields=lad18cd,lad18nm,long,lat&outSR=4326&f=geojson"
message("Loading LA geometry from ONS Open Geography API")
la_sf_data <- sf::st_read(geo_query)
head(la_sf_data)
outf <- path.expand(paste0(here::here("data", "boundaries", "la_solent.shp")))
sf::write_sf(la_sf_data, outf)
# MSOA boundaries for the Solent region ----
# middle-layer-super-output-areas-december-2011-boundaries-full-clipped-bfc-ew-v3
# manually downloaded for now
# load all MSOAs from file
# NB this 'all MSOAs' file has been removed from the repo due to size
# the code is included here for reference
inFile <- path.expand(paste0(here::here("data", "boundaries", "msoa_all",
"Middle_Layer_Super_Output_Areas__December_2011__Boundaries_Full_Clipped__BFC__EW_V3.shp")))
msoa_all_sf <- sf::read_sf(inFile)
# load the look up table so we can filter
lutFile <- here::here("data", "Output_Area_to_Lower_Layer_Super_Output_Area_to_Middle_Layer_Super_Output_Area_to_Local_Authority_District_(December_2011)_Lookup_in_England_and_Wales.csv")
oa_lut <- data.table::fread(lutFile)
# las_to_load <- c("Southampton","Portsmouth","Winchester",
# "Eastleigh","Isle of Wight","Fareham",
# "Gosport","Test Valley","East Hampshire",
# "Havant","New Forest","Hart","Basingstoke and Deane")
# select the OAs we want via LAs
oa_solentLut <- oa_lut[LAD11NM == "Southampton" |
LAD11NM == "Portsmouth" |
LAD11NM == "Winchester" |
LAD11NM == "Eastleigh" |
LAD11NM == "Isle of Wight" |
LAD11NM == "Fareham" |
LAD11NM == "Gosport" |
LAD11NM == "Test Valley" |
LAD11NM == "East Hampshire" |
LAD11NM == "Havant" |
LAD11NM == "New Forest" |
LAD11NM == "Hart" |
LAD11NM == "Basingstoke and Deane"]
oa_solentLut[, .(nOAs = .N), keyby = .(LAD11NM)]
# collapse the OA level file to an MSOA level file
msoa_solentLut <- oa_solentLut[, .(nOAs = .N),
keyby = .(MSOA11CD, MSOA11NM , LAD11CD, LAD11NM )]
msoa_solentLut[, .(nOAs = .N), keyby = .(LAD11NM)]
# merge the MSOA level file with the MSOA level shape file
msoa_solent <- merge(msoa_all_sf, msoa_solentLut)
# check
table(msoa_solent$LAD11NM)
# save it out for re-use
outf <- path.expand(paste0(here::here("data", "boundaries", "msoa_solent.shp")))
sf::write_sf(msoa_solent, outf)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment