Project

General

Profile

« Previous | Next » 

Revision 782688ad

Added by Benoit Parmentier almost 12 years ago

Covariates production for processing tile/region: general code-initial commit

View differences:

climate/research/oregon/interpolation/covariates_production_temperatures.R
1
library(raster)
2
library(gtools)
3
library(rasterVis)
4
library(graphics)
5
library(grid)
6
library(lattice)
7
library(rgdal)
8
##checking results from GRASS climatology calculation...
9
in_path <- "/home/parmentier/Data/benoit_test"
10
in_path <- "/home/parmentier/Data/IPLANT_project/Venezuela_interpolation/Venezuela_01142013/input_data/"
11
setwd(in_path)
12
#mean_h12v08_dec_11
13
tile="h12v08"
14
pat_str <- glob2rx(paste("mean","*", tile,"*01232013.tif",sep=""))
15
tmp_str<- mixedsort(list.files(pattern=pat_str))
16
infile1<-"worldborder_sinusoidal.shp"
17
infile2<-"modis_sinusoidal_grid_world.shp"
18
infile3<-"countries_sinusoidal_world.shp"
19
tiles = c('h11v08','h11v07','h12v07','h12v08','h10v07','h10v08')
20

  
21
###Reading the station data
22
filename<-sub(".shp","",infile2)                                             #Removing the extension from file.
23
modis_grid<-readOGR(".", filename)                                                #Reading shape file using rgdal library
24

  
25
##Function select tiles:
26
out_file_name<-"modis_venezuela_region"
27
create_modis_tiles_region<-function(modis_grid,tiles){
28
  #This functions returns a subset of tiles from the modis grdi.
29
  #Arguments: modies grid tile,list of tiles
30
  #Output: spatial grid data frame of the subset of tiles
31
  
32
  h_list<-lapply(tiles,substr,start=2,stop=3) #passing multiple arguments
33
  v_list<-lapply(tiles,substr,start=5,stop=6) #passing multiple arguments
34
    
35
  selected_tiles<-subset(subset(modis_grid,subset = h %in% as.numeric (h_list) ),
36
                           subset = v %in% as.numeric(v_list)) 
37
  return(selected_tiles)
38
}
39

  
40
modis_tiles<-create_modis_tiles_region(modis_grid,tiles)
41

  
42
##Create covariates for the stuy area: pull everything from the same folder?
43

  
44
##Extracting the variables values from the raster files                                             
45

  
46
lines<-read.table(paste(path,"/",inlistf,sep=""), sep=" ")                  #Column 1 contains the names of raster files
47
inlistvar<-lines[,1]
48
inlistvar<-paste(path,"/",as.character(inlistvar),sep="")
49
covar_names<-as.character(lines[,2])                                         #Column two contains short names for covaraites
50

  
51
s_raster<- stack(inlistvar)                                                  #Creating a stack of raster images from the list of variables.
52
layerNames(s_raster)<-covar_names                                            #Assigning names to the raster layers
53
projection(s_raster)<-CRS
54

  
55
## Crop and reproject Canopy height
56

  
57
canopy_rast<-raster("Simard_Pinto_3DGlobalVeg_JGR.tif")
58
new_proj<-proj4string(canopy)                  #Assign coordinates reference system in PROJ4 format
59
region_temp_projected<-spTransform(modis_tiles,CRS(new_proj))     #Project from WGS84 to new coord. system
60
canopy_crop_rast<-crop(canopy, region_temp_projected) #crop using the extent from teh region tile
61
canopy_projected_rast<-projectRaster(from=canopy_crop_rast,crs=proj4string(modis_tiles),method="ngb")
62
#system( 'gdalwarp...')
63
#1) Creating elev, aspect, slope from STRM
64

  
65
pos<-match("ASPECT",layerNames(s_raster)) #Find column with name "value"
66
r1<-raster(s_raster,layer=pos)             #Select layer from stack
67
pos<-match("slope",layerNames(s_raster)) #Find column with name "value"
68
r2<-raster(s_raster,layer=pos)             #Select layer from stack
69
N<-cos(r1*pi/180)
70
E<-sin(r1*pi/180)
71
Nw<-sin(r2*pi/180)*cos(r1*pi/180)   #Adding a variable to the dataframe
72
Ew<-sin(r2*pi/180)*sin(r1*pi/180)   #Adding variable to the dataframe.
73

  
74
#2) DISTOOC, distance to coast: Would be useful to have a distance to coast layer ready...
75

  
76
#3) LST clim?
77

  
78
#4) LCC land cover
79
path_data<-"/home/parmentier/Data/IPLANT_project/Venezuela_interpolation/Venezuela_01142013/input_data/LandCover"
80
setwd(path_data)
81
pos<-match("LC1",layerNames(s_raster)) #Find column with name "value"
82
LC1<-raster(s_raster,layer=pos)             #Select layer from stack
83
s_raster<-dropLayer(s_raster,pos)
84
LC1[is.na(LC1)]<-0                      #NA must be set to zero.
85
pos<-match("LC3",layerNames(s_raster)) #Find column with name "value"
86
LC3<-raster(s_raster,layer=pos)             #Select layer from stack
87
s_raster<-dropLayer(s_raster,pos)
88
LC3[is.na(LC3)]<-0
89

  
90
#Modification added to account for other land cover
91
pos<-match("LC4",layerNames(s_raster)) #Find column with name "value"
92
LC4<-raster(s_raster,layer=pos)             #Select layer from stack
93
s_raster<-dropLayer(s_raster,pos)
94
LC4[is.na(LC4)]<-0
95

  
96
pos<-match("LC6",layerNames(s_raster)) #Find column with name "value"
97
LC6<-raster(s_raster,layer=pos)             #Select layer from stack
98
s_raster<-dropLayer(s_raster,pos)
99
LC6[is.na(LC6)]<-0
100

  
101
LC_s<-stack(LC1,LC3,LC4,LC6)
102
layerNames(LC_s)<-c("LC1_forest","LC3_grass","LC4_crop","LC6_urban")
103
#plot(LC_s)
104

  
105
pos<-match("CANHEIGHT",layerNames(s_raster)) #Find column with name "value"
106
CANHEIGHT<-raster(s_raster,layer=pos)             #Select layer from stack
107
s_raster<-dropLayer(s_raster,pos)
108
CANHEIGHT[is.na(CANHEIGHT)]<-0
109
pos<-match("ELEV_SRTM",layerNames(s_raster)) #Find column with name "ELEV_SRTM"
110
ELEV_SRTM<-raster(s_raster,layer=pos)             #Select layer from stack on 10/30
111
s_raster<-dropLayer(s_raster,pos)
112
ELEV_SRTM[ELEV_SRTM <0]<-NA
113

  
114
xy<-coordinates(r1)  #get x and y projected coordinates...
115
xy_latlon<-project(xy, CRS, inv=TRUE) # find lat long for projected coordinats (or pixels...)
116
lon<-raster(xy_latlon) #Transform a matrix into a raster object ncol=ncol(r1), nrow=nrow(r1))
117
ncol(lon)<-ncol(r1)
118
nrow(lon)<-nrow(r1)
119
extent(lon)<-extent(r1)
120
projection(lon)<-CRS  #At this stage this is still an empty raster with 536 nrow and 745 ncell 
121
lat<-lon
122
values(lon)<-xy_latlon[,1]
123
values(lat)<-xy_latlon[,2]
124

  
125
r<-stack(N,E,Nw,Ew,lon,lat,LC1,LC3,LC4,LC6, CANHEIGHT,ELEV_SRTM)
126
rnames<-c("Northness","Eastness","Northness_w","Eastness_w", "lon","lat","LC1","LC3","LC4","LC6","CANHEIGHT","ELEV_SRTM")
127
layerNames(r)<-rnames
128
s_raster<-addLayer(s_raster, r)
129

  
130

  
131

  
132

  
133

  
134

  
135

  
136

  
137

  
138

  
139

  
140

  
141

  
142

  
143

  
144
#tmp<- readGDAL(tmp_str)
145
#r<-GDAL.open(tmp_str)
146
#rt<-create2GDAL(tmp_str, type="Float32")
147
tmp_rast<-stack(tmp_str)
148
X11(height=18,width=18)
149
plot(tmp_rast)
150
plot(subset(tmp_rast,12))
151
#levelplot(subset(tmp_rast,12))
152
png
153
pat_str2 <- glob2rx(paste("nobs","*", tile,"*.tif",sep=""))
154
tmp_str2<- mixedsort(list.files(pattern=pat_str2))
155
tmp_rast2<-stack(tmp_str2)
156
plot(tmp_rast2)
157
plot(subset(tmp_rast2,12))
158
levelplot(subset(tmp_rast2,12))
159
levelplot(tmp_rast2)
160
png(filename="test.png",width=2400,height=2400)
161
levelplot(tmp_rast2)
162
dev.off()
163

  
164

  
165

  
166

  
167

  
168
library(ncdf)

Also available in: Unified diff