Sunday, September 20, 2015

Batch Downloading Zipped Shapefiles with R

Here's a function I use to download multiple zipped shapefiles from url and load them to the workspace:
URLs <- c("http://gis.tirol.gv.at/ogd/umwelt/wasser/wis_gew_pl.zip",
"http://gis.tirol.gv.at/ogd/umwelt/wasser/wis_tseepeicher_pl.zip")

url_shp_to_spdf <- function(URL) {

require(rgdal)

wd <- getwd()
td <- tempdir()
setwd(td)

temp <- tempfile(fileext = ".zip")
download.file(URL, temp)
unzip(temp)

shp <- dir(tempdir(), "*.shp$")
lyr <- sub(".shp$", "", shp)
y <- lapply(X = lyr, FUN = function(x) readOGR(dsn=shp, layer=lyr))
names(y) <- lyr

unlink(dir(td))
setwd(wd)
return(y)
}

y <- lapply(URLs, url_shp_to_spdf)
z <- unlist(unlist(y))

# finally use it:
plot(z[[1]])

No comments:

Post a Comment