in dbViewR/R/masterSpatialDB.R [16:110]
masterSpatialDB <- function(shape_level = 'census_tract', source = 'king_county_geojson', rm_files = TRUE){
validShapeLevels <- c("census_tract","cra_name","neighborhood_district_name","puma","city")
if (source == 'seattle_geojson' & shape_level %in% validShapeLevels){
validShapeFilenames<- c("2016_seattle_censusTracts.geojson","2016_seattle_cra.geojson","2016_seattle_neighborhoods.geojson","2016_seattle_pumas.geojson","2016_seattle_city.geojson")
filename<-validShapeFilenames[validShapeLevels %in% shape_level]
sourceURL <- paste('https://raw.githubusercontent.com/seattleflu/seattle-geojson/master/seattle_geojsons/',filename,sep='')
download.file(url = sourceURL, destfile = filename)
shp <- sf::st_as_sf(geojsonio::geojson_read(filename, what = "sp"))
} else if (source == 'wa_geojson' & shape_level %in% validShapeLevels[c(1,4)] ){
validShapeFilenames<- c("2016_wa_censusTracts.geojson","2016_wa_pumas.geojson")
filename<-validShapeFilenames[validShapeLevels[c(1,4)] %in% shape_level]
sourceURL <- paste('https://raw.githubusercontent.com/seattleflu/seattle-geojson/master/wa_geojsons/',filename,sep='')
download.file(url = sourceURL, destfile = filename)
shp <- sf::st_as_sf(geojsonio::geojson_read(filename, what = "sp"))
} else if (source == 'king_county_geojson' & shape_level %in% validShapeLevels[c(1,4)] ){
validShapeFilenames<- c("2016_king_county_censusTracts.geojson", "2016_king_county_pumas.geojson")
filename<-validShapeFilenames[validShapeLevels[c(1,4)] %in% shape_level]
sourceURL <- paste('https://raw.githubusercontent.com/seattleflu/seattle-geojson/master/king_county_geojsons/',filename,sep='')
download.file(url = sourceURL, destfile = filename)
shp <- sf::st_as_sf(geojsonio::geojson_read(filename, what = "sp"))
} else if(source == 'simulated_data' & shape_level == "census_tract"){
filename <- "2016_CensusTracts_KingCountyWa"
download.file(url = "https://github.com/seattleflu/simulated-data/raw/master/kingCountySpatialData/2016_CensusTracts_KingCountyWa.zip",
destfile = paste0(filename,'.zip'))
unzip(zipfile = paste0(filename,'.zip'))
shp <- sf::st_read(filename)
} else {
return('unknown source and shape_level combination!')
}
if (rm_files){
#unlink from the database
unlink(filename, recursive = TRUE)
unlink(paste0(filename,'.zip'), recursive = TRUE)
}
if(any(grepl("NEIGHBO",names(shp), ignore.case = TRUE))){
levels(shp$NEIGHBO)<-c(levels(shp$NEIGHBO),'NA')
shp$NEIGHBO[is.na(shp$NEIGHBO)]<-'NA'
}
if(any(grepl("CRA_NAM",names(shp), ignore.case = TRUE))){
levels(shp$CRA_NAM)<-c(levels(shp$CRA_NAM),'NA')
shp$CRA_NAM[is.na(shp$CRA_NAM)]<-'NA'
}
# harmonize shp names with database names for joins down the line
for( NAME in names(shp)){
if (grepl('CRA_NAM',NAME,ignore.case = TRUE)){
FIELDNAME <- names(shp)[grepl('CRA_NAM',names(shp),ignore.case = TRUE)]
shp$residence_cra_name <- as.character(shp[[FIELDNAME]])
shp$work_cra_name <- as.character(shp[[FIELDNAME]])
} else if (grepl('NEIGHBO',NAME,ignore.case = TRUE)){
FIELDNAME <- names(shp)[grepl('NEIGHBO',names(shp),ignore.case = TRUE)]
shp$residence_neighborhood_district_name <- as.character(shp[[FIELDNAME]])
shp$work_neighborhood_district_name <- as.character(shp[[FIELDNAME]])
} else if (grepl('PUMA',NAME,ignore.case = TRUE)){
FIELDNAME <- names(shp)[grepl('PUMA',names(shp),ignore.case = TRUE)]
shp$residence_puma <- as.character(shp[[FIELDNAME]])
shp$work_puma <- as.character(shp[[FIELDNAME]])
} else if (grepl('CITY',NAME,ignore.case = TRUE)){
FIELDNAME <- names(shp)[grepl('CITY',names(shp),ignore.case = TRUE)]
shp$residence_city <- as.character(shp[[FIELDNAME]])
shp$work_city <- as.character(shp[[FIELDNAME]])
} else if (grepl('GEOID',NAME,ignore.case = TRUE) & !grepl('AFF',NAME,ignore.case = TRUE)){
FIELDNAME <- names(shp)[grepl('GEOID',names(shp),ignore.case = TRUE) & !grepl('AFF',names(shp),ignore.case = TRUE)]
shp$residence_census_tract <- as.character(shp[[FIELDNAME]])
shp$work_census_tract <- as.character(shp[[FIELDNAME]])
}
}
# add spatial domain
shp$domain <- paste(source,shape_level,sep="_")
return(shp)
}