An error occurred while loading the file. Please try again.
DataImport_Irstea2010 <- function(DIR_DATA_INPUT,BasinCode,BasinCharactFile,HypsoDataFile){
##File_check
DataImportFile <- paste(DIR_DATA_INPUT,BasinCode,"_BV.txt",sep="");
FileExists <- file.exists(DataImportFile); if(FileExists==FALSE){ print("Error: DataImportFile not found",quote=FALSE); stop("EXECUTION STOPPED",call.=FALSE); }
##Object_initialisation
BasinData <- list();
BasinData$BasinCode <- BasinCode;
##_Basin_Characteristics
### BasinData$BasinName <- as.character(read.csv2(file=DataImportFile,skip=19,nrows=1,header=FALSE,stringsAsFactors=FALSE)[1,1]);
### BasinData$BasinArea_km2 <- as.numeric( read.csv2(file=DataImportFile,skip=24,nrows=1,header=FALSE,stringsAsFactors=FALSE)[1,3]);
Bool <- FALSE;
if(exists("BasinCharactFile")){ FileExists <- file.exists(BasinCharactFile); if(FileExists){ Bool <- TRUE; } }
if(!Bool){ cat("Warning: BasinCharact file not found \n"); }
if( Bool){
TAB_CHARACT <- read.csv2(file=BasinCharactFile,header=TRUE,skip=0,stringsAsFactors=FALSE);
IndBasin <- which(TAB_CHARACT$Code == BasinCode);
if(length(IndBasin)!=1){ print("Error: Basin not found in BasinInfoFile",quote=FALSE); stop("EXECUTION STOPPED",call.=FALSE); }
if(length(IndBasin)==1){
BasinData$StationX_l2e <- as.numeric(TAB_CHARACT$iX_CEM[IndBasin]);
BasinData$StationY_l2e <- as.numeric(TAB_CHARACT$iY_CEM[IndBasin]);
BasinData$StationZ_l2e <- as.numeric(TAB_CHARACT$iZ_CEM[IndBasin]);
BasinData$BasinArea_km2 <- as.numeric(TAB_CHARACT$S_CEM[IndBasin]);
BasinData$BasinName <- TAB_CHARACT$Nom[IndBasin];
for(iChar in 1:nchar(BasinData$BasinName)){
BasinData$BasinName <- gsub(pattern="^* ",replacement="",BasinData$BasinName);
BasinData$BasinName <- gsub(pattern=" *$",replacement="",BasinData$BasinName); }
rm(TAB_CHARACT); } ### memory clear
}
##DataSeries
Format <- c("A8","X1","I8","X1","A5","X1","A7","X1","F5.0","X1","F5.0","X1","F5.0","X1","F5.0","X1","F5.0");
TAB_DATA <- read.fortran(file=DataImportFile,skip=51,header=FALSE,Format);
BasinData$TabDatesT <- as.character(TAB_DATA[,1]);
BasinData$TabDatesR <- as.POSIXlt(strptime(TAB_DATA[,1],format="%Y%m%d",tz="UTC"));
BasinData$TabObsQm3s <- TAB_DATA[,2]/1000; ### observed runoff (in m3/s)
BasinData$TabObsQmm <- BasinData$TabObsQm3s*86.4/BasinData$BasinArea_km2; ### observed runoff (in mm/d)
BasinData$TabObsP <- TAB_DATA[,5]; ### precipitation (catchment average in mm)
BasinData$TabObsF <- TAB_DATA[,6]; ### solid fraction precipitation
BasinData$TabObsT <- TAB_DATA[,7]; ### air temp (catchment average in degre C)
BasinData$TabObsE <- TAB_DATA[,8]; ### potential evap (catchment average in mm/d)
BasinData$TabObsTmin <- NULL; ### min air temp (catchment average in degre C)
BasinData$TabObsTmax <- NULL; ### max air temp (catchment average in degre C)
# BasinData$TabObsEou <- TAB_DATA[,8]; ### potential evap oudin (catchment average in mm/d)
# BasinData$TabObsEpm <- TAB_DATA[,9]; ### potential evap penman (catchment average in mm/d)
# BasinData$TabObsFsafran <- TAB_DATA[,6];
# USACE_Tmin <- -1.0; USACE_Tmax <- 3.0;
# SolidFraction <- 1- (BasinData$TabObsT - USACE_Tmin)/(USACE_Tmax - USACE_Tmin);
# SolidFraction[BasinData$TabObsT > USACE_Tmax] <- 0;
# SolidFraction[BasinData$TabObsT < USACE_Tmin] <- 1;
# BasinData$TabObsFusace <- SolidFraction;
rm(TAB_DATA); ### memory clear
##Missing_values
for(iList in 1:length(BasinData)){ if(is.numeric(BasinData[[iList]])){
if(names(BasinData)[iList] %in% c("TabObsTmin","TabObsT","TabObsTmax")){
7172737475767778798081828384858687888990919293949596979899100101102103104105106
BasinData[[iList]][ BasinData[[iList]]<(-100) ] <- NA;
} else {
BasinData[[iList]][ BasinData[[iList]]<0 ] <- NA;
}
} }
##Constant_values
if("TabObsQmm" %in% names(BasinData)){
if(sd(BasinData$TabObsQmm[!is.na(BasinData$TabObsQmm)])==0){ cat("Error: runoff values are constant \n"); stop("EXECUTION STOPPED",call.=FALSE); } }
##Hypso_Curve
Bool <- FALSE;
if(exists("HypsoDataFile")){ FileExists <- file.exists(HypsoDataFile); if(FileExists){ Bool <- TRUE; } }
if(Bool){
TAB_HYPSO <- read.csv2(file=HypsoDataFile,header=TRUE,skip=0,stringsAsFactors=FALSE);
iR <- which(formatC(TAB_HYPSO$CODE,format="d",width=8,flag="0")==BasinData$BasinCode);
iC <- which(colnames(TAB_HYPSO)=="Zmin"):which(colnames(TAB_HYPSO)=="Zmax");
BasinData$HypsoData <- as.numeric(TAB_HYPSO[iR,iC]); ### min, q01, q02, ... , q98, q99, max
rm(TAB_HYPSO); ### memory clear
} else {
cat("Warning: Hypso file not found \n");
}
##END
return(BasinData);
}