On Oct 22, 2013, at 11:34 AM, Roy Mendelssohn - NOAA Federal wrote:

> Your script didn't make it.  There are restrictions on the mail list for 
> attached files.  You might try putting the script directly into the email.

Thinking that the rejection might have be due to a Nabble posting I located it 
there and here include it. I'm hoping to use the method as well.

#----------------

# title         : MODIS_download_HTTP.R
# purpose       : Download of MODIS EVI images for the British Colombia;
# reference     : 
http://spatial-analyst.net/wiki/index.php?title=Download_and_resampling_of_MODIS_images
# producer      : Prepared by T. Hengl (addapted by T. Smejkalova)
# last update   : Southampton, UK, 18 October 2013.
# inputs        : Coordinates of the area of interest; proj4 parameters; ftp 
addresses etc.;
# outputs       : a series of EVI images (geoTIFF) projected in the local 
coordinate system;
# remarks 1     : To run this script, you need to obtain and install the MODIS 
resampling tool from 
[https://lpdaac.usgs.gov/lpdaac/tools/modis_reprojection_tool];
# remarks 2     : You should also obtain the WGET from 
[http://users.ugent.be/~bpuype/wget/]  --- simply copy the wget exe to windows 
system folder;
# remarks 3     : make sure you disable your antivirus tools such as Norton or 
McAfee otherwise it might block wget from running!

library(rgdal)
library(RCurl)
setInternet2(use = TRUE)
# Obtain the MODIS tool from: 
http://lpdaac.usgs.gov/landdaac/tools/modis/index.asp
# setwd("E:/PineBeetleBC/MODIS")
# location of the MODIS 1 km monthly blocks:
MOD09GQ <- "http://e4ftl01.cr.usgs.gov/MOLT/MOD09GQ.005/";
MOD09GQa <- "http://anonymous:t...@e4ftl01.cr.usgs.gov/MOLT/MOD09GQ.005/";
product = "MOD09GQ"
year = 2000
# location of the mosaicing tool:
MRT <- 'D:\\MRT\\MRT_Win\\bin\\'
workd <- 'D:\\R_Modis\\'
setwd('D:\\R_Modis\\')
options(download.file.method="auto")

# get the list of directories (thanks to Barry Rowlingson):
items1 <- strsplit(getURL(MOD09GQ), "\n")[[1]]

# get the directory names and create a new data frame:
dates=data.frame(dirname=substr(items1[20:length(items1)],52,62))

# get the list of *.hdf files:
dates$BLOCK1 <- rep(NA, length(dates))
dates$BLOCK2 <- rep(NA, length(dates))
#dates$BLOCK3 <- rep(NA, length(dates))
#dates$BLOCK4 <- rep(NA, length(dates))

for (i in 1:1)#length(dates))# for each date per year
{
  getlist <- strsplit(getURL(paste(MOD09GQ, dates$dirname[i], sep="")), 
">")[[1]]
  getlist=getlist[grep(product,getlist)]
  getlist=getlist[grep(".hdf<",getlist)]
  filenames=substr(getlist,1,nchar(getlist[1])-3)
  BLOCK1 <- filenames[grep(filenames,pattern="MOD09GQ.*.h18v02.*.hdf")[1]]
  BLOCK2 <- filenames[grep(filenames,pattern="MOD09GQ.*.h19v02.*.hdf")[1]]
  
  # write up the file names back to the dates.txt:
  for(j in 2:3){
    dates[i,j] <- get(paste("BLOCK", j-1, sep=""))
  }
  
  # Download all blocks from the list to a local drive:
  # 
while(!is.na(dates[i,2])&!is.na(dates[i,3])&!is.na(dates[i,4])&!is.na(dates[i,5])&!is.na(dates[i,6])&!is.na(dates[i,7])&!is.na(dates[i,8])&!is.na(dates[i,9])&!is.na(dates[i,10])){
  download.file(paste(MOD09GQa,  dates$dirname[i], 
dates$BLOCK1[i],sep=""),destfile=paste(getwd(), "/", BLOCK1, sep=""))
  download.file(paste(MOD09GQ,  dates$dirname[i], 
dates$BLOCK2[i],sep=""),destfile=paste(getwd(), "/", BLOCK2, sep=""), 
cacheOK=FALSE, )
  
  # remove "." from the file name:
  dirname1 <- sub(sub(pattern="\\.", replacement="_", dates$dirname[[i]]), 
pattern="\\.", replacement="_", dates$dirname[[i]])
  # mosaic the blocks:
  mosaicname = file(paste(MRT, "TmpMosaic.prm", sep=""), open="wt")
  write(paste(workd, BLOCK1, sep=""), mosaicname)
  write(paste(workd, BLOCK2, sep=""), mosaicname, append=T)
  #write(paste(workd, BLOCK3, sep=""), mosaicname, append=T)
  #write(paste(workd, BLOCK4, sep=""), mosaicname, append=T)
  close(mosaicname)

  # generate temporary mosaic:
  shell(cmd=paste(MRT, 'mrtmosaic -i ', MRT, 'TmpMosaic.prm -s "0 1 0 0 0 0 0 0 
0 0 0" -o ', workd, 'TmpMosaic.hdf', sep=""))
  
  # resample to epsg=3005:
  filename = file(paste(MRT, "mrt", dirname1, ".prm", sep=""), open="wt")
  write(paste('INPUT_FILENAME = ', workd, 'TmpMosaic.hdf', sep=""), filename) 
  # write(paste('INPUT_FILENAMES = ( ', workd, BLOCK1, ' ', workd, BLOCK2, ' ', 
workd, BLOCK3, ' ', workd, BLOCK4, ' ', workd, BLOCK5, ' ', workd, BLOCK6, ' ', 
workd, BLOCK7, ' ', workd, BLOCK8, ' ', workd, BLOCK9, ' )', sep=""), filename) 
 # unfortunatelly does not work via command line  :(
  write('  ', filename, append=TRUE) 
  # write('SPECTRAL_SUBSET = ( 0 1 0 0 0 0 0 0 0 0 0 )', filename, append=TRUE)
  write('SPECTRAL_SUBSET = ( 1 )', filename, append=TRUE)
  write('  ', filename, append=TRUE)
  write('SPATIAL_SUBSET_TYPE = OUTPUT_PROJ_COORDS', filename, append=TRUE)
  write('  ', filename, append=TRUE)
  write('SPATIAL_SUBSET_UL_CORNER = ( 500000.0 -1800000.0 )', filename, 
append=TRUE)
  write('SPATIAL_SUBSET_LR_CORNER = ( 1600000.0 -2700000.0 )', filename, 
append=TRUE)
  write('  ', filename, append=TRUE)
  write(paste('OUTPUT_FILENAME = ', workd, 'tmp', dirname1, '.tif', sep=""), 
filename, append=TRUE)
  write('  ', filename, append=TRUE)
  write('RESAMPLING_TYPE = NEAREST_NEIGHBOR', filename, append=TRUE)
  write('  ', filename, append=TRUE)
  write('OUTPUT_PROJECTION_TYPE = PS', filename, append=TRUE)
  write('  ', filename, append=TRUE)
  write('OUTPUT_PROJECTION_PARAMETERS = ( ', filename, append=TRUE)
  write(' 6378137.0 6356752.314245179 0.0', filename, append=TRUE)
  write(' 0.0 0.0 71.0', filename, append=TRUE)
  write(' 0.0 0.0 0.0', filename, append=TRUE)
  write(' 0.0 0.0 0.0', filename, append=TRUE)
  write(' 0.0 0.0 0.0 )', filename, append=TRUE)
  write('  ', filename, append=TRUE)
  write('DATUM = WGS84', filename, append=TRUE)
  write('  ', filename, append=TRUE)
  write('OUTPUT_PIXEL_SIZE = 250', filename, append=TRUE)
  write('  ', filename, append=TRUE)
  close(filename)
  
  # Mosaic the images to get the whole area:
  shell(cmd=paste(MRT, 'resample -p ', MRT, 'mrt', dirname1, '.prm', sep=""))
  # delete all hdf files!
  unlink(paste(getwd(), '/', BLOCK1, sep=""))
  unlink(paste(getwd(), '/', BLOCK2, sep=""))
  #unlink(paste(getwd(), '/', BLOCK3, sep=""))
  #unlink(paste(getwd(), '/', BLOCK4, sep=""))
}
# end of script!

-- 
David.

> -Roy
> 
> On Oct 22, 2013, at 9:40 AM, "Tereza Smejkalova" <terka...@gmail.com> wrote:
> 
>> I am triing one more time since my first message was rejected by the filter:
>> 
>> 
>> 
>> Dear all, 
>> I need to download and process large amounts of MODIS surface reflectance
>> imagery. I have adapted a script written by T. Hengl (
>> <http://www.spatial-analyst.net/wiki/?title=Download_and_resampling_of_MODIS
>> _images>
>> http://www.spatial-analyst.net/wiki/?title=Download_and_resampling_of_MODIS_
>> images) for download from the new HTTP (since FTP is no longer available).
>> The downloaded .HDF files however have no headers and it is impossible to
>> work with them. If I download directly from the webpage everything is fine.
>> Does anyone know what the problem might be, please? 
>> 
>> I am attaching my code
>> 
>> 
>> Please it is urgent. 

It only delays response if you don't "read the directions" for your toys that 
"may require assembly".

-- 
David Winsemius
Alameda, CA, USA

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to