library(tidyverse)
library(rgdal)
library(sf)
read_shape <- function(folder_path,
tidy_vars = TRUE, # select and rename key variables
include_aus = FALSE, # include aus_code_2021 and aus_name_2021 variables
add_vars = NULL, # vars to add
add_centroids = TRUE,
compress_level = 0.1) {
# Set variables to keep
select_vars <- c(
"sa1_code_2021" = "SA1_CODE21",
"sa2_code_2021" = "SA2_CODE21",
"sa2_name_2021" = "SA2_NAME21",
"sa3_code_2021" = "SA3_CODE21",
"sa3_name_2021" = "SA3_NAME21",
"sa4_code_2021" = "SA4_CODE21",
"sa4_name_2021" = "SA4_NAME21",
"gcc_code_2021" = "GCC_CODE21",
"gcc_name_2021" = "GCC_NAME21",
"suburb_name_2021" = "SAL_NAME21",
"suburb_code_2021" = "SAL_CODE21",
"suburb_name_2016" = "SSC_NAME16",
"suburb_code_2016" = "SSC_CODE16",
"postcode_2021" = "POA_NAME21",
"sed_code_2021" = "SED_CODE21",
"sed_name_2021" = "SED_NAME21",
"sed_code_2022" = "SED_CODE22",
"sed_name_2022" = "SED_NAME22",
"ced_code_2021" = "CED_CODE21",
"ced_name_2021" = "CED_NAME21",
"lga_code_2021" = "LGA_CODE21",
"lga_name_2021" = "LGA_NAME21",
"lga_code_2022" = "LGA_CODE22",
"lga_name_2022" = "LGA_NAME22",
"tourism_code_2021" = "TR_CODE21",
"tourism_name_2021" = "TR_NAME21",
"postcode_num_2021" = "POA_CODE21",
"dz_code_2021" = "DZN_CODE21",
"ucl_code_2021" = "UCL_CODE21",
"ucl_name_2021" = "UCL_NAME21",
"ssr_code_2021" = "SSR_CODE21",
"ssr_name_2021" = "SSR_NAME21",
"sos_code_2021" = "SOS_CODE21",
"sos_name_2021" = "SOS_NAME21",
"sua_code_2021" = "SUA_CODE21",
"sua_name_2021" = "SUA_NAME21",
"ilo_code_2021" = "ILO_CODE21",
"ilo_name_2021" = "ILO_NAME21",
"iar_code_2021" = "IAR_CODE21",
"iar_name_2021" = "IAR_NAME21",
"ire_code_2021" = "IRE_CODE21",
"ire_name_2021" = "IRE_NAME21",
"rda_code_2016" = "RDA_Code",
"rda_name_2016" = "RDA",
"state_code_2021" = "STE_CODE21",
"state_name_2021" = "STE_NAME21",
"state_code_2016" = "STE_CODE16",
"state_name_2016" = "STE_NAME16",
"areasqkm_2021" = "AREASQKM21",
"areasqkm_2016" = "AREASQKM16",
"cent_lat", "cent_long"
)
if (include_aus) {
select_vars <- c(select_vars,
"aus_code_2021" = "AUS_CODE21",
"aus_name_2021" = "AUS_NAME21"
)
}
if (!is.null(add_vars)) {
select_vars <- c(select_vars, add_vars)
}
path <- gsub("\\.zip", "", folder_path)
# If the file is zipped, unzip it
if (grepl("\\.zip$", folder_path)) {
unzip(zipfile = folder_path, exdir = path)
}
# Import sf object at correct CRS
sf_object <- sf::read_sf(path) %>%
sf::st_transform(4326)
if (grepl("\\.zip$", folder_path)) {
walk(list.files(path, full.names = TRUE), file.remove)
file.remove(path)
}
# Add centroids
if (add_centroids) {
sf_object <- cbind(
sf_object,
sf::st_coordinates(sf::st_centroid(sf_object))
) %>%
rename(cent_lat = Y,
cent_long = X)
}
# Compress
compressed <- rmapshaper::ms_simplify(sf_object,
keep = compress_level,
keep_shapes = TRUE)
# Tidy
tidy <- compressed %>%
mutate(across(
c(-starts_with("cent_"),
-starts_with("areasqkm"),
-geometry),
as.character))
if (!is.null(tidy_vars)) tidy <- tidy %>% select(any_of(select_vars))
return(tidy)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.