Klimadata_for_felt.R

Erlend — May 12, 2014, 1:46 PM

##
## Erlend april 2014
## Tilegning av klimadata for hvert av nedbørsfeltene
## Original: Mulugeta B. Zelelew, NTNU
# =============================================================

# Setter arbeidskatalog og tar inn R-pakkene som trengs

setwd("C:/Users/Erlend/Documents/NTNU/Masteroppgave/Data/WI")
Error: cannot change working directory

library(SDMTools)
Error: there is no package called 'SDMTools'


id = 1 # 1 for temperatur eller 2 for nedbør

# Leser inn ASCII-fil med felt-ID'er fra ArcGIS.

regions <- matrix(scan("C:/Users/Erlend/Documents/NTNU//Masteroppgave/Data/WI/felt.asc",skip=6),1550,1195, byrow=T)
Warning: cannot open file
'C:/Users/Erlend/Documents/NTNU//Masteroppgave/Data/WI/felt.asc': No such
file or directory
Error: cannot open the connection
#image(catchments)
regions[regions==-9999] <- NA
Error: object 'regions' not found


# 
if (id ==1){dtype<-"tm"}else
  if (id ==2){ dtype<-"rr"}

# Ordner diverse til utputt-filene
hdr<- paste("Catch_",seq(0,56,1), sep="")   

filename <- "temp3.out"
write.table(t(hdr), file = filename, quote = FALSE, sep = "\t ",row.names = FALSE,col.names = FALSE )


# Lister opp klimadata
climfile<- list.files(path = "E:/Tempdata", pattern ="*.asc",
                      all.files = TRUE,full.names = TRUE, recursive=TRUE)
#tempdata=read.asciigrid(climfile[j])
#image(tempdata)

# For-løkke for den rekken av klimadata som skal tas inn i studiet. 
# I dette tilfellet perioden fra 1.1.1961 til 31.12.1990
for (j in 1620:length(climfile)){

  Next.climfile <-  climfile[j]
  nl<-nchar(Next.climfile)

  # Ta ut dato    
  day<-as.character(substr(Next.climfile,nl-5,nl-4))
  month<-as.character(substr(Next.climfile,nl-8,nl-7))
  year<-as.character(substr(Next.climfile,nl-13,nl-10))
  date_new <- paste(day,month,year,sep="-")     


  climdata <- matrix(scan(Next.climfile,skip=6),1550,1195, byrow=T)


  climdata[climdata>=10000] <- NA
  climdata[climdata==-9999] <- NA

  # OBS!Klimadata er multiplisert med 10 i rådata
  # og temperatur er oppgitt i Kelvin

  # for temperatur 
  if (id ==1){climdata<-climdata/10-273.2}else

    # for nedbør
    if (id ==2) {climdata<- climdata/10}


  # Finner gjennomsnittsverdiene av klimadata for hvert av nedbørsfeltene
  zs = ZonalStat(climdata,regions,FUN='mean') 

  data_frame <- round(t(zs$mean),digits=3)
  #data_frame.num=as.numeric(data_frame_work)

  # For store felt med delfelt som egne felt i studie må disse tas inn ved omregninger som under.
  #Verdalsvassdraget
  data_frame[,44]=round(((176/881)*(data_frame[,32])+(705/881)*(data_frame[,44])),digits=3)
  data_frame[,45]=round(((96/483)*(data_frame[,29])+(387/483)*(data_frame[,45])),digits=3)                         
  #Namsen
  data_frame[,52]=round(((702/1038)*(data_frame[,25])+(336/1038)*(data_frame[,52])),digits=3)                         
  data_frame[,4]=round(((120/1774)*(data_frame[,11])+(14/1774)*(data_frame[,9])+(64/1774)*(data_frame[,38])+(1038/1774)*(data_frame[,52])+(538/1774)*(data_frame[,4])),digits=3)                         
  data_frame[,33]=round(((427/852)*(data_frame[,35])+(425/852)*(data_frame[,33])),digits=3)                         
  #Stjørdalsvassdraget
  data_frame[,21]=round(((184/532)*(data_frame[,20])+(348/532)*(data_frame[,21])),digits=3)                          
  data_frame[,27]=round(((532/819)*(data_frame[,21])+(97/819)*(data_frame[,28])+(190/819)*(data_frame[,27])),digits=3)
  data_frame[,43]=round(((495/1874)*(data_frame[,42])+(819/1874)*(data_frame[,27])+(560/1874)*(data_frame[,43])),digits=3)                         

  #Skrive om til bokstaver
  #data_frame=as.character(data_frame.num)

  #date_frame <- rbind(date_frame,date_new) 
  data_frame <- cbind(date_new, data_frame)

  # Skriver tabell med daglige klimadata for hvert felt
  write.table(data_frame, file =filename, append = TRUE, quote = FALSE, sep = "\t ", row.names = FALSE,col.names = FALSE, )
}
Error: missing value where TRUE/FALSE needed