Revision 782688ad
Added by Benoit Parmentier almost 12 years ago
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
Covariates production for processing tile/region: general code-initial commit