From noreply at r-forge.r-project.org Mon Dec 1 04:47:08 2014 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Mon, 1 Dec 2014 04:47:08 +0100 (CET) Subject: [Rodbcext-commits] r56 - in pkg/geoclimate: . R inst Message-ID: <20141201034708.64FD71848A8@r-forge.r-project.org> Author: jaunario Date: 2014-12-01 04:47:01 +0100 (Mon, 01 Dec 2014) New Revision: 56 Added: pkg/geoclimate/R/source-gsod.r Removed: pkg/geoclimate/R/gsod.r Modified: pkg/geoclimate/DESCRIPTION pkg/geoclimate/inst/GSOD.stations.csv Log: Updated GSOD inventory file and ftp source. Rename gsod.r to source-gsod.r Modified: pkg/geoclimate/DESCRIPTION =================================================================== --- pkg/geoclimate/DESCRIPTION 2014-11-13 03:19:16 UTC (rev 55) +++ pkg/geoclimate/DESCRIPTION 2014-12-01 03:47:01 UTC (rev 56) @@ -1,7 +1,7 @@ Package: geoclimate Type: Package Title: Climate and Weather Data Processing at the IRRI GIS Laboratory -Version: 0.1.3 +Version: 0.1.4 Date: 2013-6-4 Depends: methods, genutils, oldweather, RODBC Suggests: RCurl Deleted: pkg/geoclimate/R/gsod.r =================================================================== --- pkg/geoclimate/R/gsod.r 2014-11-13 03:19:16 UTC (rev 55) +++ pkg/geoclimate/R/gsod.r 2014-12-01 03:47:01 UTC (rev 56) @@ -1,178 +0,0 @@ -# Author: Jorrel Khalil S. Aunario, jaunario at gmail.com -# Date : 20 January 2012 -# Version 0.0.1 -# Licence GPL v3 - -# Current ftp site -GSOD.ftp <- "ftp://ftp.ncdc.noaa.gov/pub/data/gsod" -# Reference to var values for parsing downloaded data -GSOD.varrefs <- read.csv(system.file("GSOD.varrefs.csv", package="geoclimate"), stringsAsFactors=FALSE) - -GSOD.readStations <- function(stationfile=system.file("GSOD.stations.csv", package="geoclimate"), rm.nodata=FALSE, rm.nocoords=TRUE){ - show.message("Reading GSOD station info file.", appendLF=TRUE) - stations <- read.csv(stationfile, stringsAsFactors=FALSE) - if(rm.nodata) stations <- stations[-which(is.na(stations$BEGIN)),] - if(rm.nocoords) { - stations <- stations[-which(stations$LAT==-99999|is.na(stations$LAT)),] - stations <- stations[-which(stations$LON==-99999|is.na(stations$LON)),] - } - stationid <- paste(sprintf("%06d",stations$USAF), sprintf("%05d", stations$WBAN), sep="-") - stations <- cbind(stationid,stations, stringsAsFactors=FALSE) - - # Change to float - stations$LAT <- stations$LAT/1000 - stations$LON <- stations$LON/1000 - stations$ELEV..1M.[stations$ELEV..1M.==-99999] <- NA - stations$ELEV..1M. <- stations$ELEV..1M./10 - # Rename elevation fieldname - colnames(stations)[colnames(stations)=="ELEV..1M."] <- "ELEV1M" - # Change to date - stations$BEGIN <- as.Date(as.character(stations$BEGIN), "%Y%m%d") - stations$END <- as.Date(as.character(stations$END), "%Y%m%d") - return(stations) -} - -GSOD.stations <- GSOD.readStations() - -GSOD.updateStations <- function(){ - success <- FALSE - if(!require(RCurl)){ - show.message("Error: RCurl package not found.", appendLF=TRUE) - } else { - show.message("Checking file differences.", appendLF=TRUE) - online <- unlist(strsplit(getURL("ftp://ftp.ncdc.noaa.gov/pub/data/inventories/"),ifelse(Sys.info()["sysname"]=="Windows","\r\n","\n"))) - oinfo <- unlist(strsplit(online[grep("ISH-HISTORY.CSV$",online)],"[[:space:]]+")) - - age <- difftime(as.Date(paste(oinfo[6:7], collapse=" "), "%b %d"),file.info(system.file("GSOD.stations.csv", package="geoclimate"))$ctime, units="weeks") - size <- as.numeric(oinfo[5])-file.info(system.file("GSOD.stations.csv", package="geoclimate"))$size - - if (age>2 | size!=0){ - if(!file.copy(system.file("GSOD.stations.csv", package="geoclimate"),paste(system.file("GSOD.stations.csv", package="geoclimate"),".bck",sep=""),overwrite=TRUE)){ - show.message("Unable to create station data backup file. GSOD update process aborted.", appendLF=TRUE) - } else { - show.message("Downloading station info file from GSOD FTP site.", EL=TRUE, appendLF=FALSE) - dl.success <- withRetry(download.file("ftp://ftp.ncdc.noaa.gov/pub/data/inventories/ISH-HISTORY.CSV",system.file("GSOD.stations.csv", package="geoclimate"),mode="wb")) - if (dl.success!=0){ - show.message("Failed to connect GSOD FTP site.", appendLF=TRUE) - file.copy(system.file("GSOD.stations.csv.bck", package="geoclimate"),system.file("GSOD.stations.csv", package="geoclimate"),overwrite=TRUE) - } - show.message("GSOD Stations info file update complete.", EL=TRUE, appendLF=TRUE) - success <- TRUE - } - - } else { - show.message("GSOD station file is upto date.", appendLF=TRUE) - success <- TRUE - } - } -} - -#gsod.download <- function(gsodurl,fname=basename(gsodurl), ...){ -# dl.success <- FALSE -# gsodzip <- withRetry(getBinaryURL(gsodurl), ...) -# if (class(gsodzip)!="try-error") { -# writeBin(gsodzip, fname) -# dl.success <- TRUE -# } -# return(dl.success) -#} -get.gsod <- function(station, year=as.numeric(format(Sys.Date(),"%Y")), savepath=getwd(), rm.existing=FALSE,...){ - - # check for RCurl package - if(!require(RCurl)){ - stop("RCurl package not found.") - } - - # check for write permissions - if(!force.directories(savepath, recursive=TRUE)){ - stop("Can't create download path.") - } - - sindex <- grep(station, GSOD.stations$stationid) - #check if station exists - if (length(sindex)!=1){ - stop("Can't find station ", station,"\nTry updating GSOD stations file.") - } - - # prepare weather object - result <- new("weather") - result at stn <- paste(GSOD.stations$STATION.NAME[sindex], " (", station, ")", sep="") - result at lon <- GSOD.stations$LON[sindex] - result at lat <- GSOD.stations$LAT[sindex] - result at alt <- GSOD.stations$ELEV1M[sindex] - - fname <- paste(station,"-",year,".op.gz", sep="") - ftpurl <- paste(GSOD.ftp, year, fname, sep="/") - - # Download gsod file if necessary - if (!file.exists(paste(savepath,fname, sep="/"))){ - dl <- withRetry(download.file(ftpurl, destfile = paste(savepath, fname, sep = "/"), mode = "wb", quiet = TRUE), ...) - } else if (rm.existing | file.info(paste(savepath, fname, sep="/"))$size==0){ - # Remove existing downloaded file - file.remove(paste(savepath,fname, sep="/")) - dl <- withRetry(download.file(ftpurl, destfile = paste(savepath, fname, sep = "/"), mode = "wb", quiet = TRUE), ...) - } - - gz <- gzfile(paste(savepath,fname,sep="/")) - dlines <- readLines(gz) - gz <- close(gz) - - # Parse the gsod file if successfully downloaded - if (length(dlines)>0){ - - dat <- vector() - #Parsing the GSOD file - for (i in 1:14){ - tmp <- trim(substr(dlines[-1], GSOD.varrefs$stpos[i], GSOD.varrefs$enpos[i])) - if(!is.na(GSOD.varrefs$missing[i])) { - tmp[tmp==as.character(GSOD.varrefs$missing[i])] <- NA - } - dat <- cbind(dat,tmp) - } - - colnames(dat) <- GSOD.varrefs$variable[1:14] - dat <- as.data.frame(dat, stringsAsFactors=FALSE) - gsod <- data.frame(tavg=numeric(nrow(dat)),slpressure=numeric(nrow(dat)),stpressure=numeric(nrow(dat)),tdew=numeric(nrow(dat)),visibility=numeric(nrow(dat)),wind=numeric(nrow(dat)),maxwind=numeric(nrow(dat)),gust=numeric(nrow(dat)),tmax=numeric(nrow(dat)),tmin=numeric(nrow(dat)),prec=numeric(nrow(dat)),snowdepth=numeric(nrow(dat))) - # CLEAN UP CLIMATE DATA - gsod$tavg <- round(FtoC(as.numeric(dat$TEMP)),1)*10 # MEAN TEMP - gsod$slpressure <- as.numeric(dat$SLP)*10 # SEA LEVEL PRESSURE - gsod$stpressure <- as.numeric(dat$STP)*10 # STATION PRESSURE - gsod$tdew <- round(FtoC(as.numeric(dat$DEWP)),1)*10 # MEAN DEW POINT - gsod$visibility <- round((as.numeric(dat$VISIB) * 1.609344),1)*10 # VISIBILITY - - ############################################## - # WINDSPEED NEEDED IN ORYZA2k - gsod$wind <- round(as.numeric(dat$WDSP) * 0.514444444,1)*10 # WIND SPEED - gsod$maxwind <- round(as.numeric(dat$MXSPD) * 0.514444444,1)*10 # MAX SUSTAINED SPEED - gsod$gust <- round(as.numeric(dat$GUST) * 0.514444444,1)*10 # MAX GUST - - ############################################## - # MAX T NEEDED IN ORYZA2k - gsod$tmax <- round(FtoC(as.numeric(dat$MAX)),1)*10 # MAX T - - ############################################## - # MIN 2 NEEDED IN ORYZA2k - gsod$tmin <- round(FtoC(as.numeric(dat$MIN)),1)*10 # MIN T - - ############################################## - # RAINFALL NEEDED IN ORYZA2k - gsod$prec <- round(as.numeric(dat$PRCP)*25.4,1)*10 # RAINFALL - - ############################################## - # SNOW DEPTH - gsod$snowdepth <- round(as.numeric(dat$SNDP)*25.4,1)*10 # convert to mm - - indicators <- matrix(as.numeric(unlist(strsplit(dat$FRSHTT,""))),byrow=TRUE, ncol=6) - colnames(indicators) <- c("ifog","irain","isnow","ihail","ithunder","itornado") - - wdate <- as.Date(dat$YEARMODA,"%Y%m%d") - - gsod <- cbind(wdate, gsod, indicators, stringsAsFactors=FALSE) - # TODO: get from database? - result at w <- gsod - } else { - # result at rmk <- paste("Download failed for", year) - result at rmk <- as.character(dl) - } - return(result) -} Copied: pkg/geoclimate/R/source-gsod.r (from rev 50, pkg/geoclimate/R/gsod.r) =================================================================== --- pkg/geoclimate/R/source-gsod.r (rev 0) +++ pkg/geoclimate/R/source-gsod.r 2014-12-01 03:47:01 UTC (rev 56) @@ -0,0 +1,178 @@ +# Author: Jorrel Khalil S. Aunario, jaunario at gmail.com +# Date : 20 January 2012 +# Version 0.0.1 +# Licence GPL v3 + +# Current ftp site +GSOD.ftp <- "ftp://ftp.ncdc.noaa.gov/pub/data/gsod" +# Reference to var values for parsing downloaded data +GSOD.varrefs <- read.csv(system.file("GSOD.varrefs.csv", package="geoclimate"), stringsAsFactors=FALSE) + +GSOD.readStations <- function(stationfile=system.file("GSOD.stations.csv", package="geoclimate"), rm.nodata=FALSE, rm.nocoords=TRUE){ + show.message("Reading GSOD station info file.", appendLF=TRUE) + stations <- read.csv(stationfile, stringsAsFactors=FALSE) + if(rm.nodata) stations <- stations[-which(is.na(stations$BEGIN)),] + if(rm.nocoords) { + stations <- stations[-which(stations$LAT==-99999|is.na(stations$LAT)),] + stations <- stations[-which(stations$LON==-99999|is.na(stations$LON)),] + } + stationid <- paste(sprintf("%06d",stations$USAF), sprintf("%05d", stations$WBAN), sep="-") + stations <- cbind(stationid,stations, stringsAsFactors=FALSE) + + # Change to float + stations$LAT <- stations$LAT + stations$LON <- stations$LON + stations$ELEV..1M.[stations$ELEV.M.==-99999] <- NA + stations$ELEV..1M. <- stations$ELEV.M. + # Rename elevation fieldname + colnames(stations)[colnames(stations)=="ELEV.M."] <- "ELEV1M" + # Change to date + stations$BEGIN <- as.Date(as.character(stations$BEGIN), "%Y%m%d") + stations$END <- as.Date(as.character(stations$END), "%Y%m%d") + return(stations) +} + +GSOD.stations <- GSOD.readStations() + +GSOD.updateStations <- function(){ + success <- FALSE + if(!require(RCurl)){ + show.message("Error: RCurl package not found.", appendLF=TRUE) + } else { + show.message("Checking file differences.", appendLF=TRUE) + online <- unlist(strsplit(getURL("ftp://ftp.ncdc.noaa.gov/pub/data/noaa/"),ifelse(Sys.info()["sysname"]=="Windows","\r\n","\n"))) + oinfo <- unlist(strsplit(online[grep("ISD-HISTORY.CSV$", online, ignore.case=TRUE)],"[[:space:]]+")) + + age <- difftime(as.Date(paste(oinfo[6:7], collapse=" "), "%b %d"),file.info(system.file("GSOD.stations.csv", package="geoclimate"))$ctime, units="weeks") + size <- as.numeric(oinfo[5])-file.info(system.file("GSOD.stations.csv", package="geoclimate"))$size + + if (age>2 | size!=0){ + if(!file.copy(system.file("GSOD.stations.csv", package="geoclimate"),paste(system.file("GSOD.stations.csv", package="geoclimate"),".bck",sep=""),overwrite=TRUE)){ + show.message("Unable to create station data backup file. GSOD update process aborted.", appendLF=TRUE) + } else { + show.message("Downloading station info file from GSOD FTP site.", EL=TRUE, appendLF=FALSE) + dl.success <- withRetry(download.file(paste("ftp://ftp.ncdc.noaa.gov/pub/data/noaa/",oinfo[9],sep=""),system.file("GSOD.stations.csv", package="geoclimate"),mode="wb")) + if (dl.success!=0){ + show.message("Failed to connect GSOD FTP site.", appendLF=TRUE) + file.copy(system.file("GSOD.stations.csv.bck", package="geoclimate"),system.file("GSOD.stations.csv", package="geoclimate"),overwrite=TRUE) + } + show.message("GSOD Stations info file update complete.", EL=TRUE, appendLF=TRUE) + success <- TRUE + } + + } else { + show.message("GSOD station file is upto date.", appendLF=TRUE) + success <- TRUE + } + } +} + +#gsod.download <- function(gsodurl,fname=basename(gsodurl), ...){ +# dl.success <- FALSE +# gsodzip <- withRetry(getBinaryURL(gsodurl), ...) +# if (class(gsodzip)!="try-error") { +# writeBin(gsodzip, fname) +# dl.success <- TRUE +# } +# return(dl.success) +#} +get.gsod <- function(station, year=as.numeric(format(Sys.Date(),"%Y")), savepath=getwd(), rm.existing=FALSE,...){ + + # check for RCurl package + if(!require(RCurl)){ + stop("RCurl package not found.") + } + + # check for write permissions + if(!force.directories(savepath, recursive=TRUE)){ + stop("Can't create download path.") + } + + sindex <- grep(station, GSOD.stations$stationid) + #check if station exists + if (length(sindex)!=1){ + stop("Can't find station ", station,"\nTry updating GSOD stations file.") + } + + # prepare weather object + result <- new("weather") + result at stn <- paste(GSOD.stations$STATION.NAME[sindex], " (", station, ")", sep="") + result at lon <- GSOD.stations$LON[sindex] + result at lat <- GSOD.stations$LAT[sindex] + result at alt <- GSOD.stations$ELEV1M[sindex] + + fname <- paste(station,"-",year,".op.gz", sep="") + ftpurl <- paste(GSOD.ftp, year, fname, sep="/") + + # Download gsod file if necessary + if (!file.exists(paste(savepath,fname, sep="/"))){ + dl <- withRetry(download.file(ftpurl, destfile = paste(savepath, fname, sep = "/"), mode = "wb", quiet = TRUE), ...) + } else if (rm.existing | file.info(paste(savepath, fname, sep="/"))$size==0){ + # Remove existing downloaded file + file.remove(paste(savepath,fname, sep="/")) + dl <- withRetry(download.file(ftpurl, destfile = paste(savepath, fname, sep = "/"), mode = "wb", quiet = TRUE), ...) + } + + gz <- gzfile(paste(savepath,fname,sep="/")) + dlines <- readLines(gz) + gz <- close(gz) + + # Parse the gsod file if successfully downloaded + if (length(dlines)>0){ + + dat <- vector() + #Parsing the GSOD file + for (i in 1:14){ + tmp <- trim(substr(dlines[-1], GSOD.varrefs$stpos[i], GSOD.varrefs$enpos[i])) + if(!is.na(GSOD.varrefs$missing[i])) { + tmp[tmp==as.character(GSOD.varrefs$missing[i])] <- NA + } + dat <- cbind(dat,tmp) + } + + colnames(dat) <- GSOD.varrefs$variable[1:14] + dat <- as.data.frame(dat, stringsAsFactors=FALSE) + gsod <- data.frame(tavg=numeric(nrow(dat)),slpressure=numeric(nrow(dat)),stpressure=numeric(nrow(dat)),tdew=numeric(nrow(dat)),visibility=numeric(nrow(dat)),wind=numeric(nrow(dat)),maxwind=numeric(nrow(dat)),gust=numeric(nrow(dat)),tmax=numeric(nrow(dat)),tmin=numeric(nrow(dat)),prec=numeric(nrow(dat)),snowdepth=numeric(nrow(dat))) + # CLEAN UP CLIMATE DATA + gsod$tavg <- round(FtoC(as.numeric(dat$TEMP)),1)*10 # MEAN TEMP + gsod$slpressure <- as.numeric(dat$SLP)*10 # SEA LEVEL PRESSURE + gsod$stpressure <- as.numeric(dat$STP)*10 # STATION PRESSURE + gsod$tdew <- round(FtoC(as.numeric(dat$DEWP)),1)*10 # MEAN DEW POINT + gsod$visibility <- round((as.numeric(dat$VISIB) * 1.609344),1)*10 # VISIBILITY + + ############################################## + # WINDSPEED NEEDED IN ORYZA2k + gsod$wind <- round(as.numeric(dat$WDSP) * 0.514444444,1)*10 # WIND SPEED + gsod$maxwind <- round(as.numeric(dat$MXSPD) * 0.514444444,1)*10 # MAX SUSTAINED SPEED + gsod$gust <- round(as.numeric(dat$GUST) * 0.514444444,1)*10 # MAX GUST + + ############################################## + # MAX T NEEDED IN ORYZA2k + gsod$tmax <- round(FtoC(as.numeric(dat$MAX)),1)*10 # MAX T + + ############################################## + # MIN 2 NEEDED IN ORYZA2k + gsod$tmin <- round(FtoC(as.numeric(dat$MIN)),1)*10 # MIN T + + ############################################## + # RAINFALL NEEDED IN ORYZA2k + gsod$prec <- round(as.numeric(dat$PRCP)*25.4,1)*10 # RAINFALL + + ############################################## + # SNOW DEPTH + gsod$snowdepth <- round(as.numeric(dat$SNDP)*25.4,1)*10 # convert to mm + + indicators <- matrix(as.numeric(unlist(strsplit(dat$FRSHTT,""))),byrow=TRUE, ncol=6) + colnames(indicators) <- c("ifog","irain","isnow","ihail","ithunder","itornado") + + wdate <- as.Date(dat$YEARMODA,"%Y%m%d") + + gsod <- cbind(wdate, gsod, indicators, stringsAsFactors=FALSE) + # TODO: get from database? + result at w <- gsod + } else { + # result at rmk <- paste("Download failed for", year) + result at rmk <- as.character(dl) + } + return(result) +} Modified: pkg/geoclimate/inst/GSOD.stations.csv =================================================================== --- pkg/geoclimate/inst/GSOD.stations.csv 2014-11-13 03:19:16 UTC (rev 55) +++ pkg/geoclimate/inst/GSOD.stations.csv 2014-12-01 03:47:01 UTC (rev 56) @@ -1,31940 +1,29260 @@ -"USAF","WBAN","STATION NAME","CTRY","FIPS","STATE","CALL","LAT","LON","ELEV(.1M)","BEGIN","END" -"006852","99999","SENT","SW","SZ","","","+46817","+010350","+14200","","" -"007005","99999","CWOS 07005","","","","","-99999","-999999","-99999","20120127","20120127" -"007010","99999","CWOS 07010","","","","","-99999","-999999","-99999","","" -"007011","99999","CWOS 07011","","","","","-99999","-999999","-99999","20111025","20121129" -"007012","99999","CWOS 07012","","","","","-99999","-999999","-99999","","" -"007015","99999","CWOS 07015","","","","","-99999","-999999","-99999","","" -"007016","99999","CWOS 07016","","","","","-99999","-999999","-99999","","" -"007018","99999","WXPOD 7018","","","","7018","+00000","+000000","+70180","20110309","20110705" -"007019","99999","CWOS 07019","","","","","-99999","-999999","-99999","20130625","20130703" -"007023","99999","CWOS 07023","","","","","-99999","-999999","-99999","","" -"007024","99999","CWOS 07024","","","","","-99999","-999999","-99999","","" -"007025","99999","CWOS 07025","","","","","-99999","-999999","-99999","20120127","20120127" -"007026","99999","WXPOD 7026","AH","AF","","7026","+00000","+000000","+70260","20120713","20121217" -"007027","99999","CWOS 07027","","","","","-99999","-999999","-99999","","" -"007031","99999","CWOS 07031","","","","","-99999","-999999","-99999","","" -"007032","99999","CWOS 07032","","","","","-99999","-999999","-99999","20130125","20130226" -"007033","99999","CWOS 07033","","","","","-99999","-999999","-99999","","" -"007034","99999","CWOS 07034","","","","","-99999","-999999","-99999","20121024","20121106" -"007037","99999","CWOS 07037","","","","","-99999","-999999","-99999","20111202","20121125" -"007038","99999","CWOS 07038","","","","","-99999","-999999","-99999","","" -"007041","99999","CWOS 07041","","","","","-99999","-999999","-99999","20130703","20130705" -"007042","99999","CWOS 07042","","","","","-99999","-999999","-99999","","" -"007043","99999","CWOS 07043","","","","","-99999","-999999","-99999","","" -"007044","99999","CWOS 07044","","","","","-99999","-999999","-99999","20120127","20120127" -"007047","99999","CWOS 07047","","","","","-99999","-999999","-99999","20120613","20120717" -"007049","99999","CWOS 07049","","","","","-99999","-999999","-99999","","" -"007050","99999","CWOS 07050","","","","","-99999","-999999","-99999","","" -"007051","99999","CWOS 07051","","","","","-99999","-999999","-99999","","" -"007052","99999","CWOS 07052","","","","","-99999","-999999","-99999","20121129","20121130" -"007054","99999","CWOS 07054","","","","","-99999","-999999","-99999","20130703","20130705" -"007055","99999","CWOS 07055","","","","","-99999","-999999","-99999","","" -"007059","99999","CWOS 07059","","","","","-99999","-999999","-99999","20120314","20130612" -"007060","99999","CWOS 07060","","","","","-99999","-999999","-99999","","" -"007061","99999","CWOS 07061","","","","","-99999","-999999","-99999","","" -"007062","99999","CWOS 07062","","","","","-99999","-999999","-99999","","" -"007064","99999","CWOS 07064","","","","","-99999","-999999","-99999","20121218","20121219" -"007065","99999","CWOS 07065","","","","","-99999","-999999","-99999","","" -"007069","99999","CWOS 07069","","","","","-99999","-999999","-99999","","" -"007070","99999","WXPOD 7070","AH","AF","","7070","+00000","+000000","+70700","","" -"007072","99999","CWOS 07072","","","","","-99999","-999999","-99999","20111202","20111202" -"007076","99999","CWOS 07076","","","","","-99999","-999999","-99999","20121214","20121217" -"007077","99999","CWOS 07077","","","","","-99999","-999999","-99999","","" -"007083","99999","CWOS 07083","","","","","-99999","-999999","-99999","20120713","20120717" -"007084","99999","CWOS 07084","","","","","-99999","-999999","-99999","20121214","20121217" -"007088","99999","CWOS 07088","","","","","-99999","-999999","-99999","","" -"007089","99999","CWOS 07089","","","","","-99999","-999999","-99999","","" -"007093","99999","CWOS 07093","","","","","-99999","-999999","-99999","","" -"007094","99999","CWOS 07094","","","","","-99999","-999999","-99999","20121217","20121217" -"007095","99999","CWOS 07095","","","","","-99999","-999999","-99999","","" -"007096","99999","CWOS 07096","","","","","-99999","-999999","-99999","","" -"007098","99999","CWOS 07098","","","","","-99999","-999999","-99999","","" -"008077","99999","CWOS 08077","","","","","-99999","-999999","-99999","","" -"008078","99999","CWOS 08078","","","","","-99999","-999999","-99999","","" -"008081","99999","CWOS 08081","","","","","-99999","-999999","-99999","","" -"008083","99999","CWOS 08083","","","","","-99999","-999999","-99999","","" -"008084","99999","CWOS 08084","","","","","-99999","-999999","-99999","","" -"008086","99999","CWOS 08086","","","","","-99999","-999999","-99999","","" -"008087","99999","CWOS 08087","","","","","-99999","-999999","-99999","","" -"008089","99999","CWOS 08089","","","","","-99999","-999999","-99999","","" -"008090","99999","CWOS 08090","","","","","-99999","-999999","-99999","","" -"008091","99999","CWOS 08091","","","","","-99999","-999999","-99999","","" -"008092","99999","CWOS 08092","","","","","-99999","-999999","-99999","","" -"008094","99999","CWOS 08094","","","","","-99999","-999999","-99999","","" -"008095","99999","CWOS 08095","","","","","-99999","-999999","-99999","","" -"008096","99999","CWOS 08096","","","","","-99999","-999999","-99999","","" -"008097","99999","CWOS 08097","","","","","-99999","-999999","-99999","","" -"008098","99999","CWOS 08098","","","","","-99999","-999999","-99999","","" -"008099","99999","CWOS 10049","","","","","-99999","-999999","-99999","","" -"008100","99999","CWOS 10050","","","","","-99999","-999999","-99999","","" -"008259","99999","WPOD 8269","","","","","-99999","-999999","-99999","","" -"008260","99999","WXPOD8270","","","","","-99999","-999999","-99999","","" -"008261","99999","WXPOD","","","","","-99999","-999999","-99999","","" -"008263","99999","WPOD 8273","","","","","-99999","-999999","-99999","","" -"008264","99999","WPOD 8274","","","","","-99999","-999999","-99999","","" -"008265","99999","WPOD 8275","","","","","-99999","-999999","-99999","","" -"008266","99999","WPOD 8276","","","","","-99999","-999999","-99999","","" -"008267","99999","WPOD 8277","","","","","-99999","-999999","-99999","","" -"008268","99999","WXPOD 8278","AH","AF","","8278","+00000","+000000","+82780","20100519","20120323" -"008270","99999","WPOD 8280","","","","","-99999","-999999","-99999","","" -"008284","99999","WPOD 8294","","","","","-99999","-999999","-99999","","" -"008304","99999","WPOD 8315","AH","AF","","","+00000","+000000","+83150","","" -"008306","99999","WXPOD 8317","AH","AF","","8317","+00000","+000000","+83170","","" -"008307","99999","WXPOD 8318","AH","AF","","8318","+00000","+000000","+83180","20100421","20100421" -"008400","99999","XM06","","","","XM06","-99999","-999999","-99999","20090919","20111128" -"008401","99999","XM07","","","","XM07","-99999","-999999","-99999","20090919","20121219" -"008402","99999","XM09","","","","XM09","-99999","-999999","-99999","20090918","20110727" -"008403","99999","XM10","","","","XM10","-99999","-999999","-99999","20090918","20120415" -"008404","99999","XM11","","","","XM11","-99999","-999999","-99999","20090919","20110421" -"008405","99999","XM14","","","","XM14","-99999","-999999","-99999","20090918","20120827" -"008406","99999","XM16","","","","XM16","-99999","-999999","-99999","20090918","20111228" -"008407","99999","XM15","","","","XM15","-99999","-999999","-99999","20091016","20110213" -"008408","99999","XM08","","","","XM08","-99999","-999999","-99999","20091023","20100318" -"008409","99999","XM13","","","","XM13","-99999","-999999","-99999","20091027","20100104" -"008411","99999","XM20","","","","XM20","-99999","-999999","-99999","20100323","20130705" -"008412","99999","XM17","","","","XM17","-99999","-999999","-99999","","" -"008413","99999","XM12","","","","XM12","-99999","-999999","-99999","20100504","20130224" -"008414","99999","XM18","","","","XM18","-99999","-999999","-99999","20100506","20130705" -"008415","99999","XM21","","","","XM21","-99999","-999999","-99999","20110112","20110112" -"008416","99999","XM22","","","","XM22","-99999","-999999","-99999","20100927","20130705" -"008417","99999","XM23","","","","XM23","-99999","-999999","-99999","20101221","20111020" -"008418","99999","XM24","","","","XM24","-99999","-999999","-99999","20101119","20121215" -"008419","99999","XM25","","","","XM25","-99999","-999999","-99999","20101221","20130205" -"008421","99999","XM26","","","","XM26","-99999","-999999","-99999","20110503","20130324" -"010000","99999","BOGUS NORWAY","NO","NO","","ENRS","","","","20010927","20041019" -"010010","99999","JAN MAYEN","NO","NO","","ENJA","+70933","-008667","+00090","19310101","20130705" -"010013","99999","ROST","NO","NO","","","","","","19861120","19880105" -"010014","99999","SOERSTOKKEN","NO","NO","","ENSO","+59783","+005350","+00490","19861120","20130705" -"010015","99999","BRINGELAND","NO","NO","","ENBL","+61383","+005867","+03270","19870117","20111020" -"010016","99999","RORVIK/RYUM","NO","NO","","","+64850","+011233","+00140","19870116","19910806" -"010017","99999","FRIGG","NO","NO","","ENFR","+59933","+002417","+00480","19880320","20050228" -"010020","99999","VERLEGENHUKEN","NO","SV","","","+80050","+016250","+00080","19861109","20130705" -"010030","99999","HORNSUND","NO","SV","","","+77000","+015500","+00120","19850601","20130705" -"010040","99999","NY-ALESUND II","NO","SV","","ENAS","+78917","+011933","+00080","19730101","20051227" -"010050","99999","ISFJORD RADIO","NO","NO","","ENIS","+78067","+013633","+00050","19310103","20110106" -"010060","99999","EDGEOYA","NO","NO","","","+78250","+022783","+00140","19730101","20130705" -"010070","99999","NY-ALESUND","NO","SV","","","+78917","+011933","+00080","19730106","20130705" -"010071","99999","","","","","","","","","20050210","20050210" -"010080","99999","SVALBARD LUFTHAVN","NO","SV","","ENSB","+78250","+015467","+00290","19750929","20130705" -"010090","99999","KARL XII OYA","NO","SV","","","+80650","+025000","+00050","19550101","20130705" -"010100","99999","ANDOYA","NO","NO","","ENAN","+69300","+016133","+00130","19310103","20130705" -"010110","99999","KVITOYA","NO","SV","","","+80067","+031500","+00100","19861118","20130705" -"010120","99999","","","","","","","","","19741130","19751116" -"010140","99999","SENJA-LAUKHELLA","NO","NO","","","+69233","+017900","+00090","19730101","20110831" -"010150","99999","HEKKINGEN FYR","NO","NO","","","+69600","+017833","+00140","19800314","20130705" -"010160","99999","KONGSOYA","NO","NO","","","+78933","+028900","+00200","19930501","20130705" -"010170","99999","AKSELOYA","NO","SV","","","+77683","+014783","+00060","19730101","20130705" -"010190","99999","SVARTTANGEN","NO","NO","","","+77517","+020817","+00200","20100825","20120616" -"010200","99999","SORKAPPOYA","NO","SV","","","+76483","+016550","+00100","20101008","20130705" -"010230","99999","BARDUFOSS","NO","NO","","ENDU","+69067","+018533","+00790","19400713","20130705" -"010231","99999","DRAUGEN","NO","NO","","ENDR","+64349","+007800","+00000","20040510","20130705" -"010240","99999","PYRAMIDEN","NO","NO","","","+78656","+016360","+00200","19730101","20130705" -"010250","99999","TROMSO/LANGNES","NO","NO","","ENTC","+69683","+018917","+00100","19730101","20130705" -"010260","99999","TROMSO","NO","NO","","","+69650","+018933","+01150","19970201","20130705" -"010270","99999","TROMSO-HOLT","NO","NO","","","+69650","+018900","+00200","20110928","20130705" -"010280","99999","BJORNOYA","NO","NO","","ENBJ","+74517","+019000","+00180","19310103","20130705" -"010300","99999","","","","","","","","","19510101","19601231" -"010320","99999","OVERBYGD","NO","NO","","","+69017","+019283","+00780","19730101","20070307" -"010330","99999","TORSVAG FYR","NO","NO","","","+70250","+019500","+00240","19730101","20130705" -"010340","99999","FUGLOYKALVEN FYR","NO","NO","","","+70317","+020150","+00380","19871202","20050603" -"010350","99999","LYNGEN GJERDVASSBU","NO","NO","","","+69559","+020094","+07100","19730101","20130705" -"010360","99999","SKIBOTIN","NO","NO","","","+69367","+020267","+00050","20040510","20050922" -"010370","99999","SKIBOTN2","NO","NO","","","+69383","+020267","+00060","19730101","20130705" -"010400","99999","SKJERVOY","NO","NO","","","+70033","+020983","+00150","19730101","19780927" -"010410","99999","NORDREISA-OYENG","NO","NO","","","+69733","+021017","+00050","19730101","20070307" -"010420","99999","HASVIK-SLUSKFJELLET","NO","NO","","","+70617","+022450","+04380","20080917","20091216" -"010430","99999","ROGNSUNDET","NO","NO","","","+70417","+022817","+00100","19730101","20130705" -"010435","99999","HASVIK","NO","NO","","ENHK","+70483","+022150","+00060","19750515","20111014" -"010440","99999","HASVIK AP","NO","NO","","ENHK","+70483","+022150","+00060","20110928","20130705" -"010450","99999","NORDSTRAUM I KVAENA","NO","NO","","","+69833","+021883","+00060","19730101","20130705" -"010455","99999","","","","","","","","","19741117","19750904" -"010460","99999","SORKJOSEN","NO","NO","","ENSR","+69783","+020950","+00050","19750905","20130705" -"010470","99999","KAUTOKEINO","NO","NO","","ENKA","+69000","+023033","+03070","19730101","20130705" -"010490","99999","ALTA LUFTHAVN","NO","NO","","ENAT","+69983","+023367","+00030","19730101","20130705" -"010510","99999","SUOLOVUOPMI","NO","NO","","","+69583","+023533","+03740","19730102","20050727" -"010520","99999","HAMMERFEST AP","NO","NO","","ENHF","+70683","+023683","+00790","19401008","20130705" -"010530","99999","HAMMERFEST RADIO","NO","NO","","","+70683","+023683","+00700","19730101","19871226" -"010550","99999","FRUHOLMEN FYR","NO","NO","","","+71100","+023983","+00140","19310101","20130705" -"010570","99999","CUOVDDATMOHKKI","NO","NO","","","+69367","+024433","+02860","19730101","20130705" -"010580","99999","SUOLOVUOPMI LULIT","NO","NO","","","+69567","+023533","+03810","20050218","20130705" -"010590","99999","BANAK","NO","NO","","ENNA","+70067","+024983","+00080","19730101","20130705" -"010610","99999","BRENNELV","NO","NO","","","+70067","+025117","+00340","19730101","19840707" -"010617","99999","OSEBERG","NO","NO","","","","","","19890101","19901001" -"010620","99999","HOPEN","NO","SV","","ENHO","+76500","+025067","+00100","19550101","20130705" -"010630","99999","KISTRAND III","NO","NO","","","+70450","+025217","+00060","19730101","19870715" -"010650","99999","KARASJOK","NO","NO","","","+69467","+025517","+01330","19730101","20130705" -"010660","99999","HELNES FYR","NO","NO","","","+71067","+026233","+00330","19730101","20040619" -"010670","99999","LEVAJOK-EVJEN","NO","NO","","","+69900","+026417","+01120","19730103","19820924" -"010671","99999","","","","","","","","","20070307","20070307" -"010680","99999","HONNINGSVAG AP","NO","NO","","ENHV","+71000","+025967","+00130","19800604","20130705" -"010720","99999","","","","","","","","","19740227","19740227" -"010740","99999","MEHAMN AP","NO","NO","","ENMH","+71016","+027817","+00130","19750905","20130705" -"010750","99999","RUSTEFJELBMA","NO","NO","","","+70400","+028200","+00110","19730101","20130531" -"010760","99999","TANABRU","NO","NO","","","+70212","+028159","+00320","20121121","20130705" -"010780","99999","SLETTNES FYR","NO","NO","","","+71100","+028217","+00100","19730101","20130705" -"010820","99999","NYRUD","NO","NO","","","+69147","+029244","+00560","19730919","20130705" -"010830","99999","BERLEVAG","NO","NO","","ENBV","+70867","+029033","+00130","19750905","20130705" -"010840","99999","PASVIK","NO","NO","","","+69450","+030033","+00270","19730101","20130701" -"010850","99999","BUGOYFJORD","NO","NO","","","+69850","+029417","+00080","19730101","19781008" -"010860","99999","BATSFJORD AP","NO","NO","","ENBS","+70600","+029700","+01520","20110928","20130705" -"010874","99999","K18 KOTTER OIL PLAT","NO","NO","","EHQA","+53083","+003967","+00900","","" -"010875","99999","HEIMDAL","NO","NO","","ENHM","+59567","+002217","+00900","20110101","20130705" -"010876","99999","NORNE","NO","NO","","ENNE","+66017","+008083","+00900","20110101","20130705" -"010877","99999","TROLL A","NO","NO","","ENQA","+60633","+003717","+00900","20110101","20130705" -"010878","99999","SNORRE A","NO","NO","","ENSE","+61450","+002133","+00900","20110101","20130705" [TRUNCATED] To get the complete diff run: svnlook diff /svnroot/rodbcext -r 56