R/getSynergie.R

Defines functions getSynergie

Documented in getSynergie

##' @include forecast.R
NULL

##' Recuperation des grilles de previsions Synergie
##' 
##' Récupére les grilles de prévisions Synergie des pluies, 
##' températures à 2m, forces de vents et altitude modèle. 
##' 
##' @param model une chaîne de caractères identifiant le modèle météo
##' fournissant les grilles de prévisions.
##' @param var une chaîne de caractères identifiant la nature de la
##' variable hydro-météo à récupérer.
##' 
##' @return 
##' \command{getSynegie} retourne un objet de classe \var{Forecast} ou
##' une liste contenant sept éléments:
##' \item{$ var}{le type de variable,}
##' \item{$ model}{le type du modèle et de grille,}
##' \item{$ reseau}{l'heure de calcul de la prévision,}
##' \item{$ ech}{le vecteur des échéances de prévision,}
##' \item{$ lat}{le vecteur des latitudes des points de grille,}
##' \item{$ lon}{le vecteur des longitudes des points de grille,} 
##' \item{$ val}{la matrices des valeurs prévues données par 
##' points de grille et échéances.}
##' 
##' @examples
##' \dontrun{setInternet2(use=TRUE)}
##' \dontrun{x=getSynergie("CEP05","ALTI")}
##' 
##' @import raster
##' @export 
getSynergie <- 
  function(model=c("ARO","ARP01","ARP05","CEP05"), 
           var=c("P","T","FF","FF250","FF500","ALTI"), raster=TRUE) 
  {
    model <- match.arg(model)
    var <- match.arg(var)
    file <- tempfile()
    if (var %in% c("FF250","FF500")) {
      ## Grilles pour l'estimation des rafales de vent
      path <- "ftp://ftpdtg:[email protected]/previ/vents"
      fname <- sprintf("VXI_%s_%s.txt", var, model)
      message("Chargement de ", fname, "...", appendLF=FALSE)
      download.file(url=file.path(path,fname), destfile=file, quiet=TRUE )
      } else {
      ## Grilles pour la neige collante
      ## Chemin du répertoire Ftp d'archives
      path <- "ftp://ftpdtg:[email protected]/previ/NeigeCol"
      fname <- sprintf("NGC_%s_%s.txt", var, model)
      message("Chargement de ", fname, "...", appendLF=FALSE)
      download.file(url=file.path(path,fname), destfile=file, quiet=TRUE)
    }
    ## On recupere la date du reseau 
    tmp <- readLines(file, n=1)
    reseau <- as.POSIXct(tmp, format = "#%Y%m%d%H", tz = "UTC")
    message("Reseau: ", format(reseau,"%Y-%m-%d (%HH)"))
    ## Extraction des echeances
    tmp <- readLines(file, n = 2)[2]
    tmp <- unlist(strsplit(tmp,"[[:space:]]+"))
    ech <- as.integer(subset(tmp, nchar(tmp)>0)[-c(1:2)])
    ## Extrarction des donnees 
    tmp <- read.table(file, header=TRUE, comment.char="#")
    tmp$LATITUDE <- tmp$LATITUDE/1000
    tmp$LONGITUDE  <- tmp$LONGITUDE/1000
    ##
    ## Mise en forme du résultat
    ##
    if (raster) {
    	## Préparation de la brique raster
    	sp::coordinates(tmp) <- c("LONGITUDE","LATITUDE") 
    	sp::gridded(tmp)  <- TRUE
    	as(tmp, "SpatialGridDataFrame",)	
    	sp::proj4string(tmp)  <- sp::CRS("+init=epsg:4326")
    	tmp <- raster::brick(tmp)
    	## Mise en forme 'Forecast'
    	forecast(data=tmp, model=model, run=reseau, variable=var, 
    	         echeances=ech)
    } else {
    	invisible(list(var = var, model = model, reseau = reseau,
    						ech = ech, lat = tmp$LATITUDE, lon = tmp$LONGITUDE, 
    						val = as.matrix(tmp[, -c(1, 2)])))
    }    
  }
coolTot/DtgRecup documentation built on May 12, 2017, 9:45 a.m.