Skip to content

Instantly share code, notes, and snippets.

@alfcrisci
Created October 3, 2017 13:02
Show Gist options
  • Select an option

  • Save alfcrisci/f6402a1fcf77dbcbadda6b3cfb290a9c to your computer and use it in GitHub Desktop.

Select an option

Save alfcrisci/f6402a1fcf77dbcbadda6b3cfb290a9c to your computer and use it in GitHub Desktop.
stack_MODIS_MOD13Q1=function(x,pixelreliab=0,file.remove=F) {
require(MODIS)
require(gdalUtils)
require(rgdal)
mod <- getSds(x,method="gdal")
names=list(gsub(".hdf","_NDVI.tif",x),gsub(".hdf","_EVI.tif",x),gsub(".hdf","_RELIAB.tif",x),gsub(".hdf","_NDVI_Q.tif",x),gsub(".hdf","_EVI_Q.tif",x))
ndvi <- raster(readGDAL(mod$SDS4gdal[1], as.is=TRUE))*0.0001
evi <- raster(readGDAL(mod$SDS4gdal[2], as.is=TRUE))*0.0001
reliab <-raster(readGDAL(mod$SDS4gdal[12], as.is=TRUE))
m=reliab
m[m != pixelreliab]<-NA
ndvi_qa=mask(ndvi,m)
evi_qa=mask(evi,m)
writeRaster(ndvi, filename=names[[1]], overwrite=TRUE)
writeRaster(evi, filename=names[[2]], overwrite=TRUE)
writeRaster(reliab, filename=names[[3]], datatype='INT4S', overwrite=TRUE)
writeRaster(ndvi_qa, filename=names[[4]], overwrite=TRUE)
writeRaster(evi_qa, filename=names[[5]], overwrite=TRUE)
if ( file.remove==T) { file.remove(x)}
}
stack_MODIS_MOD11A2=function(x,pixelreliab=81,file.remove=F) {
require(MODIS)
require(gdalUtils)
require(rgdal)
mod <- getSds(x,method="gdal")
names=list(gsub(".hdf","_LSTday.tif",x),
gsub(".hdf","_QC_day.tif",x),
gsub(".hdf","_LSTnight.tif",x),
gsub(".hdf","_QC_night.tif",x),
gsub(".hdf","_LSTdayQA.tif",x),
gsub(".hdf","_LSTnightQA.tif",x))
lstday <- raster(readGDAL(mod$SDS4gdal[1], as.is=TRUE))
lstday[lstday==0]<-NA
lstday=lstday*0.02-273.16
DayQC <-raster(readGDAL(mod$SDS4gdal[2], as.is=TRUE))
lstnight <- raster(readGDAL(mod$SDS4gdal[5], as.is=TRUE))*0.02-273.16
lstnight[lstnight==0]<-NA
lstnight=lstnight*0.02-273.16
NightQC <-raster(readGDAL(mod$SDS4gdal[6], as.is=TRUE))
m <- DayQC
m[m > pixelreliab]<-NA
#m[ m == 2 | m== 3]<-NA
lstdayQA <- mask(lstday, m)
m <- NightQC
m[m > pixelreliab]<-NA
# m[ m == 2 | m== 3]<-NA
lstnightQA <- mask(lstnight, m)
writeRaster(lstday, filename=names[[1]], overwrite=TRUE)
writeRaster(DayQC, filename=names[[2]], datatype='INT4S', overwrite=TRUE)
writeRaster(lstnight, filename=names[[3]], overwrite=TRUE)
writeRaster(NightQC, filename=names[[4]], datatype='INT4S', overwrite=TRUE)
writeRaster(lstdayQA, filename=names[[5]], d overwrite=TRUE)
writeRaster(lstnightQA, filename=names[[6]], overwrite=TRUE)
if ( file.remove==T) { file.remove(x)}
}
@alfcrisci
Copy link
Author

On WIN32 or WIN64 systems must be installed FWtools gdal or other ones to read HDF4 modis format.

@alfcrisci
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment