Skip to content

Instantly share code, notes, and snippets.

@alexsingleton
Created February 13, 2018 16:21
Show Gist options
  • Save alexsingleton/c8db2fc44091105bf12b903cd003f3fc to your computer and use it in GitHub Desktop.
Save alexsingleton/c8db2fc44091105bf12b903cd003f3fc to your computer and use it in GitHub Desktop.
#Set Working Directory and Options
setwd("~/Dropbox/Blocks")
options(scipen=999)
#Load Packages
packages <- c("R.utils","data.table","RCurl","bit64","maptools","rgdal","rgeos")
for (package in packages){
if(paste(package) %in% rownames(installed.packages()) == FALSE) {install.packages(paste(package))}
library(paste(package),character.only=TRUE)
}
##################
# Download blocks
##################
FIPS_USPS <- fread("FIPS_USPS_CODE.csv") #Lookup from: https://www.census.gov/geo/reference/ansi_statetables.html
#List of the states
state_list <- FIPS_USPS[,FIPS] #Get state numbers
#Download the block shapefiles - this is a bit crap in R; might be better to use an FTP client
for (i in 1:length(state_list)){
URL_file <- paste0("tl_2015_",state_list[i],"_tabblock10")
URL <- paste0("ftp://ftp2.census.gov/geo/tiger/TIGER2015/TABBLOCK/",URL_file,".zip")
download.file(URL,paste0(URL_file,".zip")) #Download
unzip (paste0(URL_file,".zip"), exdir = ".") #Unzip
file.remove(paste0(URL_file,".zip"))
}
#Create a US Block File from the states
#List files
files <- list.files(pattern=".shp$", recursive=TRUE,full.names=TRUE) #Generate list of shapefiles
system(paste0("ogr2ogr blocks.shp"," ",files[1]," -simplify 0.00009 -overwrite")) #Simplify and copy
#Loop to merge shapefiles / simplify
for (i in 2:length(files)){
system(paste0("ogr2ogr tmp.shp"," ",files[i]," -simplify 0.00009 -overwrite")) #Simplify and copy
system("ogr2ogr -f 'ESRI Shapefile' -update -append blocks.shp tmp.shp") #Merge blocks
file.remove(list.files(pattern="tmp"))
print(i)
}
#Remove unwanted columns
system("ogrinfo blocks.shp -sql 'ALTER TABLE blocks DROP COLUMN STATEFP10'")
system("ogrinfo blocks.shp -sql 'ALTER TABLE blocks DROP COLUMN COUNTYFP10'")
system("ogrinfo blocks.shp -sql 'ALTER TABLE blocks DROP COLUMN TRACTCE10'")
system("ogrinfo blocks.shp -sql 'ALTER TABLE blocks DROP COLUMN BLOCKCE10'")
system("ogrinfo blocks.shp -sql 'ALTER TABLE blocks DROP COLUMN NAME10'")
system("ogrinfo blocks.shp -sql 'ALTER TABLE blocks DROP COLUMN MTFCC10'")
system("ogrinfo blocks.shp -sql 'ALTER TABLE blocks DROP COLUMN UR10'")
system("ogrinfo blocks.shp -sql 'ALTER TABLE blocks DROP COLUMN UACE10'")
system("ogrinfo blocks.shp -sql 'ALTER TABLE blocks DROP COLUMN UATYPE'")
system("ogrinfo blocks.shp -sql 'ALTER TABLE blocks DROP COLUMN FUNCSTAT10'")
system("ogrinfo blocks.shp -sql 'ALTER TABLE blocks DROP COLUMN INTPTLAT10'")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment