Below is the code to download data for a series of years:
NOAA_BulkDownload <- function(Year, Dir){ URL <- paste0("ftp://ftp.ncdc.noaa.gov/pub/data/gsod/",Year,"/gsod_",Year,".tar") download.file(URL, destfile=paste0(Dir,"/gsod_",Year,".tar"), method="auto",mode="wb") if(dir.exists(paste0(Dir,"/NOAA Data"))==FALSE){dir.create(paste0(Dir,"/NOAA Data"))} untar(paste0(Dir,"/gsod_",Year,".tar"), exdir=paste0(Dir,"/NOAA Data")) }
An example on how to use this function is below:
Date <- 1980:2019 lapply(Date, NOAA_BulkDownload, Dir="C:/Users/fabio.veronesi/Desktop/New folder")
Theoretically, the process can be parallelized using parLappy, but I have not tested it.
Once we have all the file in one folder we can create the Shiny app to query these data.
The app will have a dashboard look with two tabs: one with a Leaflet map showing the location of the weather stations (markers are shown only at a certain zoom level to decrease loading time and RAM usage), below:
The other tab will allow the creation of the time-series (each file represents only 1 year, so we need to bind several files together to get the full period we are interested in) and it will also do some basic data cleaning, e.g. turn T from F to C, or snow depth from inches to mm. Finally, from this tab users can view the final product and download a cleaned csv.
The code for ui and server scripts is on my GitHub:
https://github.com/fveronesi/NOAA_ShinyApp
Thanks. Your link just popped up in my feed. Can't wait to try it out.
ReplyDelete