#Mask get_landmask=function(dset=2.5) { if(dset==5) { require(ncdf) loc="ftp://ftp.cdc.noaa.gov/Datasets/noaamergedtemp/lsmask.nc" download.file(loc,"temp.dat",mode="wb") v<-open.ncdf("temp.dat") names(v$var) # [1] lsmask mask <- get.var.ncdf( v, v$var[[1]]) # 1880 2008 dim(mask) # 72 36 names(v$dim) #[1] "time" "lat" "lon" "nbnds" v$dim$lat$vals # 87.5N to 87.5S v$dim$lon$vals # 177.5W to 177.5E #range(mask) #0 to 1 return(mask) } if(dset==2.5) { download.file("http://www.climateaudit.info/data/satellite/landmask_2.5.dat","temp") #scraped from http://mynasadata.larc.nasa.gov/las/getUI.do loc="temp" mask=read.fwf(loc,widths=c(6,5,rep(7,144) ),skip=3 ) row.names(mask)=as.character(mask[,1]) mask=mask[,3:ncol(mask)] #72 144 dimnames(mask)[[2]]=seq(-178.75,178.75,2.5) mask=as.matrix(mask[nrow(mask):1,]) #S to N mask[mask==2]=.5 #coastal return(mask) } ###################### if(dset==2) { require(ncdf) url="http://jisao.washington.edu/data/ersst/ersstlandmask.nc" download.file(url,"Temp.nc",mode="wb") v=open.ncdf("Temp.nc") mask <- get.var.ncdf( v, v$var[[1]] ); #this is different than other versions dim(mask) # [1] 180 89 mask=mask[c(91:180,1:90) ,89:1] image.plot (seq(-179,179,2),seq(-89,89,2),mask) #save(mask,file="d:/climate/data/gridcell/mask_2deg.tab") return(mask) } ##ONE DEGREE if(dset==1) { require(ncdf) loc="ftp://ftp.cdc.noaa.gov/Datasets/noaa.oisst.v2/lsmask.nc" download.file(loc,"temp.nc",mode="wb") v=open.ncdf("temp.nc") mask <- get.var.ncdf( v, v$var[[1]] ); #this is different than other versions dim(mask) # [1] 360 180 mask=mask[,180:1] #contour(1:360,1:180,mask) return(mask) } ##QUARTER DEGREE if(dset==0.25) { loc="http://ldas.gsfc.nasa.gov/gldas/data/0.25deg/UMD60mask0.25.asc" download.file(loc,"temp") mask=read.table(loc) names(mask)=c("grid","item","lat","long","mask") dim(mask) return(mask) } }