CPT.convertProcs <- function(){
Insert.Messages.Out(.cdtData$GalParams[['message']][['6']], TRUE, "i")
cptInfo <- list(name = .cdtData$GalParams$cptinfo$name,
units = .cdtData$GalParams$cptinfo$units,
missval = .cdtData$GalParams$cptinfo$missval)
if(.cdtData$GalParams$data.type == "cdtstation"){
cdtdata <- getStnOpenData(.cdtData$GalParams$cdtstation)
if(is.null(cdtdata)) return(NULL)
ret <- CPT.convertStationData.Files(cdtdata, .cdtData$GalParams$output, cptInfo)
}
if(.cdtData$GalParams$data.type == "cdtnetcdf"){
ncDataInfo <- getNCDFSampleData(.cdtData$GalParams$cdtnetcdf$sample)
if(is.null(ncDataInfo)){
Insert.Messages.Out(.cdtData$GalParams[['message']][['7']], TRUE, "e")
return(NULL)
}
ncInfo <- c(.cdtData$GalParams$cdtnetcdf[c('dir', 'format')],
ncDataInfo[c('ilon', 'ilat', 'varid')])
ret <- CPT.convertGridData.Files(ncInfo, .cdtData$GalParams$output, cptInfo)
if(is.null(ret)){
Insert.Messages.Out(.cdtData$GalParams[['message']][['8']], TRUE, "e")
}
}
return(ret)
}
#' Conversion to CPT data format.
#'
#' Function to correct station data or netCDF files to CPT data format.
#'
#' @param data.type character, the type of the data. Available options: \code{"cdtstation"} or \code{"cdtnetcdf"}.
#' @param station.data named list, providing the station data to convert in CDT format.
#' \itemize{
#' \item \code{file}: character, full path to the file containing the stations data
#' \item \code{sep}: character, column separator of the data
#' \item \code{na.strings}: character, missing values flag
#' }
#' @param netcdf.data named list, providing the input netCDF dataset to convert.
#' \itemize{
#' \item \code{dir}: character, full path to the directory containing the netCDF files.
#' \item \code{format}: character, format of the netCDF file names.\cr
#' Replace the year, month, dekad, pentad or day by Year: \code{\%Y}; Month: \code{\%M}; Dekad: \code{\%T}; Pentad: \code{\%P}; Day: \code{\%D}.\cr
#' Example: \cr
#' \code{outTS_1981-07_1982-06.nc => outTS_\%Y-\%M_\%Y-\%M.nc} \cr
#' \code{onset_19830901.nc => onset_\%Y\%M\%D.nc}
#' \item \code{varid}: character, name of the variable to read from the netCDF data
#' \item \code{ilon}: integer, order for the longitude dimension of the variable.
#' Example: if the variable "precip" has the dimension order [Lat, Lon] then \code{ilon} must be 2
#' \item \code{ilat}: integer, order for the latitude dimension of the variable.
#' }
#' @param cpt.varinfo named list, information about the field of the output CPT file.
#' \itemize{
#' \item \code{name}: character, the field name
#' \item \code{units}: character, the units
#' \item \code{missval}: character, missing values flag
#' }
#' @param output.file character, full path to the file to save the CPT data format.
#' @param GUI logical, indicating whether or not the output message should be displayed on CDT GUI. If \code{TRUE}, CDT GUI must be open.
#'
#' @export
convert2CPTFormat <- function(data.type = "cdtstation",
station.data = list(file = "", sep = ",", na.strings = "-99"),
netcdf.data = list(dir = "", format = "onset_%Y%M%D.nc",
varid = "onset", ilon = 1, ilat = 2),
cpt.varinfo = list(name = "onset", units = "days since",
missval = "-9999"),
output.file = "", GUI = FALSE)
{
cdtLocalConfigData()
xml.dlg <- file.path(.cdtDir$dirLocal, "languages", "cdtCPTconversion_dlgBox.xml")
lang.dlg <- cdtLanguageParse(xml.dlg, .cdtData$Config$lang.iso)
message <- lang.dlg[['message']]
Insert.Messages.Out(message [['6']], TRUE, "i", GUI)
cptinfo <- list(name = "onset", units = "days since", missval = "-9999")
cpt.varinfo <- init.default.list.args(cpt.varinfo, cptinfo)
if(data.type == "cdtstation"){
if(!is.null(station.data$file)){
if(!file.exists(station.data$file)){
msg <- paste(message [['9']], ":", station.data$file)
Insert.Messages.Out(msg, TRUE, "e", GUI)
return(NULL)
}else{
stndata_pars <- list(file = "", sep = ",", na.strings = "-99")
station.data <- init.default.list.args(station.data, stndata_pars)
}
}else{
Insert.Messages.Out(message [['1']], TRUE, "e", GUI)
return(NULL)
}
stnpars_read <- list(stringsAsFactors = FALSE, colClasses = "character")
cdtdata <- do.call(utils::read.table, c(station.data, stnpars_read))
ret <- CPT.convertStationData.Files(cdtdata, output.file, cpt.varinfo)
}
if(data.type == "cdtnetcdf"){
if(!is.null(netcdf.data$dir)){
if(!dir.exists(netcdf.data$dir)){
msg <- paste(message [['10']], ":", netcdf.data$dir)
Insert.Messages.Out(msg, TRUE, "e", GUI)
return(NULL)
}else{
ncdata_pars <- list(dir = "", format = "onset_%Y%M%D.nc",
varid = "onset", ilon = 1, ilat = 2)
netcdf.data <- init.default.list.args(netcdf.data, ncdata_pars)
}
}else{
Insert.Messages.Out(message [['10']], TRUE, "e", GUI)
return(NULL)
}
ret <- CPT.convertGridData.Files(netcdf.data, output.file, cpt.varinfo)
if(is.null(ret))
Insert.Messages.Out(message[['8']], TRUE, "e", GUI)
}
if(!is.null(ret)){
if(ret != 0)
Insert.Messages.Out(message[['5']], TRUE, "e", GUI)
}else{
Insert.Messages.Out(message[['5']], TRUE, "e", GUI)
return(-1)
}
Insert.Messages.Out(message[['4']], TRUE, "s", GUI)
return(0)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.