Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

WATERBASE_locations

WATERBASE_parameters```

Code Block
#########################################

...


#Update Waterbase files

...

 
#Author: M.P. Weeber

...


#Company: Deltares

...


#########################################

...



rm(list = objects())

...



library("RCurl")

...


library("stringr")

...


library("reshape2")

...


library("tcltk")

...


library("downloader")

...


library("ncdf")

...


library("chron")

...



mainDir = getwd()

...


subDir = "DATA"

...


subDir2 = "dump"

...



setwd(mainDir)

...


destination_data = file.path(mainDir, subDir)

...


destination_dump = file.path(mainDir, subDir2)

...



#Create Cache folder + dump folder

...


# dir.create(file.path(mainDir,subDir))

...


# dir.create(file.path(mainDir,subDir2))

...



# open required locations HEADER???

...


WATERBASE_locations = read.csv("YOURLOCATIONS.csv", sep = ";", stringsAsFactor = FALSE)

...



# open required parameters

...


WATERBASE_parameters = read.csv("YOURPARAMETERS.csv", sep = ";", stringsAsFactor = FALSE)

...



#Parts URL

...


WATERBASE_1 = "http://live.waterbase.nl/wboutput.cfm?loc="

...


WATERBASE_2
 = 
"&byear=1700&bmonth=01&bday=01&eyear=2014&emonth=12&eday=31&output=Tekst&whichform=1"

...



log = c("")

...



# loop for locations

...


for(i in 1:length(WATERBASE_locations[,1])){

...


  for(j in 1:length(WATERBASE_parameters[,1])){

...


    # Clear old
    if(!(i == 1 & j == 1)){

...


      rm(list = c("WATERBASE_data","file","file2","REAL_WATERBASE_URL"))

...


    }
    # Naming for file name
    substantie_char = gsub("/","_",gsub(" ","_",WATERBASE_parameters[j,3]))

...


    get_id = gsub("%7C","",gsub("&wbwns=","",WATERBASE_parameters[j,4]))

...


    file_location = file.path(destination_data,paste("id",get_id,"-",WATERBASE_locations[i,],

...


                                                                            "-170001010000-201406140000.txt",sep = ""))

...


    
    file_location_dump = file.path(destination_dump, paste(WATERBASE_locations[i,],

...


                                                                                        "_",substantie_char,".txt", sep = ""))

...


      
    #Naming for URL
    locatie = WATERBASE_locations[i,4]

...


    substantie_code = WATERBASE_parameters[j,4]

...


    substantie = gsub("%","%25",gsub("/","%2F",gsub(" ","+",WATERBASE_parameters[j,3])))

...


      
    #Download
    #Get link to the files
    WATERBASE_data <- paste(WATERBASE_1,locatie,substantie_code,substantie,WATERBASE_2, sep ="")

...

 
        
    #Connect to repos to get substances
    file = getURI(WATERBASE_data)

...


    file2 = unlist(str_split(file, "window.location ="))

...


    REAL_WATERBASE_URL = unlist(str_split(file2[3],"'"))[2]

...


    
    # Check if data exists
    if(is.na(REAL_WATERBASE_URL)){

...


      #Report to Log
      log = c(log,paste("The combination ",locatie," : ",substantie_char," does not exist!", sep = ""))

...


    }else{

...


      #Download the data
      
      #manuele download
      #shell.exec(WATERBASE_data)

...


      #n <- readline(prompt="Enter anything to continue or Q to quit: ")

...


      #if(n == "Q"){

...


      #  stop(print("Quited execution"))

...


      #}
      download.file(REAL_WATERBASE_URL,destfile = file_location,mode = "w")

...


    }
  }
}

#check if file contains measurements else remove
setwd(destination_data)

...


files_to_check = list.files(destination_data)

...



for(k in 1:length(files_to_check)){

...


  file = readLines(files_to_check[k])

...


  if(length(file) == 5){

...


    # save files without data in log
    log = c(log,paste(files_to_check[k]," does not contain data!",sep = ""))

...


    # remove files without data
    file.remove(files_to_check[k])

...


  }else{}

...


}

...



files_to_bind = list.files(destination_data)

...


setwd(destination_data)

...



#test
 m = 10; data = read.csv(files_to_bind[m], sep = ";", na.strings = "NA", skip = 3)

...



for(m in 1:length(files_to_bind)){

...

  ##length(files_to_bind)

...


  data = read.csv(files_to_bind[m], sep = ";", na.strings = "NA", skip = 3)

...

 
  if((m == 1)){

...


    collected <- data

...


  }
  collected = rbind(data, collected)

...


}

...



write.csv2(collected, "collected-data.csv", row.names = F)

...



#Evaluate script

...


log

...


warnings()

...


print("Done.")

...