Bajar imágenes modis con R en Windows

El proyecto Earth Observing System (EOS) de la NASA (National Aeronautics and Space Administration) mantiene datos de telemetría de los satélites Terra, Aqua y Aura. Además de las imágenes multiespectrales (7 bandas), hay 44 productos de datos estándar de MODIS (Moderate-Resolution Imaging Spectroradiometer), en formato hdf, utilizados para el estudio de los cambios globales en oceanografía, biología y ciencias atmosféricas. Estas imágenes (tiles) pueden bajarse directamente de los servidores que la NASA ha dispensado para tal fin; así como las herramientas (disponibles para diferentes sistemas operativos mediante registro previo en el portal de la NASA) para la unión, cambio de formato y reproyección de los tiles (MRT, MRTSwath, LDOPE).

En esta entrada se va a referir cómo bajar estas imágenes y formar directamente el mosaico, empleando la herramienta MRT (MODIS Reprojection Tool), con el lenguaje estadístico R; el cual se supone instalado en su sistema Windows. Se basa principalmente de una adaptación de lo que está escrito en esta referencia:

ModisDownload: an R function to download, mosaic, and reproject the MODIS images

Para evitar problemas con los paths, creé directamente el directorio c:\modis y c:\MRT. Averigüe el path de Java con Inicio -> Buscar -> java.exe (el mio fue c:\Archivos de programa\Java\jre7\bin). En consola de MS-DOS (Inicio -> Todos los Programas -> Accesorios) averigüe su versión de Java (java -version). Si no es >= 1.5 actualice.

A continuación, haga login en https://lpdaac.usgs.gov/tools/modis_reprojection_tool y baje la herramienta MRT al directorio c:\MRT. Desempaquete allí el archivo comprimido. Ubique el mrt_install.bat y ejecútelo. En la pantalla de inicio le insta a comprobar que allí están MRT_Win.zip y la herramienta unzip.exe. De ahora en adelante siga las instrucciones del instalador porque ya conoce las rutas de MRT y Java.

Una vez instalado MRT (es necesario re iniciar), baje ModisDownload script version 3.0 y ModisLP.RData al directorio c:\modis. Ejecute R e introduzca los siguientes comandos:

setwd('c:/modis')
source('ModisDownload.R')

Si obtiene algún error es porque hay paquetes de R no instalados. Ejecute install.packages() e instale lo que haga falta (recuerde que con versiones superiores a XP hay que instalar en modo Administrador y después correr R como usuario normal). Vuelva a ejecutar la última instrucción anterior, source(‘ModisDownload.R’), si hubo algún error de dependencia. Ahora no debería dar problemas.

A continuación voy a bajar y hacer el mosaico de lo que me interesa con R (relacionado con una zona de Perú). La proyección será la sinusoidal por defecto de las imágenes modis.

ModisDownload(x=1,h=c(10,11),v=10,dates='2001.01.01',MRTpath='c:/MRT/bin', mosaic=T,proj=F)

Para los detalles de las imágenes y de sus zonas de interes consulten la bibliografía ya citada (arriba yo bajé las MOD13Q1, indices de vegetación, que en R se averigua con modisProducts()).

Después de un buen tiempo bajando y componiendo las imágenes aquí está el resultado en R:

modis2

y visualizado en QGIS (que tiene soporte para imágenes con formato hdf):

modis3

La imagen, por comprobación, se carga conjuntamente (reproyección al vuelo activada) con un shapefile de Perú (WGS 84/long,lat; EPSG:4326) y la concordancia es satisfactoria.

Esta entrada fue publicada en Lenguaje R, modis, SIG, Software Libre. Guarda el enlace permanente.

6 respuestas a Bajar imágenes modis con R en Windows

  1. Muy buena la contribución.

    Comparto mi código para el caso de linux, que en principio es el mismo.

    setwd(“~/R/MODIS/Data/PE”) #área de trabajo.
    source(‘http://r-gis.net/ModisDownload/ModisDownload.R’)
    library(raster)
    library(RCurl)

    En mi caso me encuentro descargando las imágenes de reflectancia.
    x<- 14 #MOD09A1

    Selecciono los tiles, de todo el Perú.
    h<-c(09,10,11)
    v<-c(09,10)

    date<-c('2001.08.01','2001.09.30')

    En cuanto al MRT, dejo un vídeo que hice hace tiempo, para la instalación en linux: https://www.dropbox.com/s/pidlnkx0h04sc82/out.ogv , advierto que el usuario en el vídeo es es robles (en el caso de este ejemplo es rral). Por otra parte en el segundo 1:40 del vídeo en el proceso de instalación pregunta el path de Java, la forma correcta de hacerlo es, con el comando $whereis de la forma:

    rral@R:~$ whereis java
    java: /usr/bin/java /etc/java /usr/lib/java /usr/bin/X11/java /usr/share/java /usr/share/man/man1/java.1.gz

    Como se puede ver el resultado indica que el binario esta en: /usr/bin/java usamos esta información para ponerlo la pregunta de instalación. Ahora bien casi siempre atina a la ruta (como es en el caso del vídeo) de ser así simplemente es darle enter.

    Definimos la ruta del MRT en mi caso, /home/rral/MRT/bin a la variable mrtpath
    mrtpath <- "/home/rral/MRT/bin"

    Y finalmente tenemos el código que descarga las imágenes.

    ModisDownload(x=x,h=h,v=v,dates=date,MRTpath=mrtpath,mosaic=T,
    resample_type="NEAREST_NEIGHBOR",proj_type="UTM",proj=T,
    bands_subset="1 1 1 1 1 1 1 0 0 0 0 0 0",utm_zone=18,del=T,
    proj_params="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0",datum='WGS84',
    pixel_size=500)

    Por otra parte, solo me encuentro usando la proyección UTM, y con el parámetro bands_subset, se define el numero de bandas de interés, para el caso del producto MOD09A1 dispone de 13 bandas, en mi caso solo elijo las 7 primeras bandas. Esto es diferente para cada producto (por ejemplo para el caso de MOD13Q1 creo que tiene 11 bandas y para del NDVI se encuentra en la segunda banda). El parámetro del=T lo que hace es eliminar los *.hdf luego de realizar el mosaico y proyección. y el tamaño del pixel lo obtienen al ejecutar modisProducts().

    Bueno espero les sea útil para los que trabajan con Linux.

    Ahora bien, quisiera aprovechar para hacer una pregunta.
    aun tengo dudas para hacer el mosaico empleando mosaicHDF(), pasa que toda la data ya lo descargue en su debido momento, pero sin proyectar y sin hacer el mosaico. El tema de la proyección ya lo solucione con los datos que están en el HD (pero solo para el tipo UTM).

    Lo que no me queda claro es el mosaico, por favor podría revisar el tema de la función mosaicHDF(), para usar directamente la data que ya se encuentra en el HD. Y también si fuera posible la proyección de tipo GEO.

    Saludos y un gran abrazo.

  2. Gracias por tu comentario. Yo también trabajo principalmente con Linux pero últimamente he estado algo atado a Win y ayer, tratando de hacer un mosaico, me falló a la primera más no a la segunda (el MRT había quedado mal instalado por eso de los paths y me animé a hacer este tuto). Con relación a Linux la documentación de MRT señala que no es necesario conocer las rutas de java porque las detecta automáticamente. Yo había instalado MRT a principios de año en Debian y funcionaba sin problemas.

    Por otra parte, acabo de usar MRT en modo gráfico para reprojectar y cambiar de formato (en Win) y funciona bien. Después leí en la documentación que para hacer los mosaicos automáticamente (pero no lo probé) simplemente hay que seleccionar varios tiles en la ventana de carga del MRT. Aunque me dices que solucionaste lo de la proyección, más no lo de los mosaicos, te recomiendo que hagas primero lo de los mosaicos con MRT en modo gráfico (para algo pedían la ruta de Java). Con las distorsiones que se obtienen después de la reproyección de los tiles individuales, si mal no recuerdo, es dificil el empalme posterior.

    Saludos

    Nota: Acabo de instalar MRT en Linux Debian y si detecta la ruta de Java automáticamente. Ya ejecuté MRT en modo gráfico y probé lo de hacer los mosaicos. Funcionó tal como señala la documentación. En Linux la herramienta es más rápida que en Windows.

  3. Pingback: Bajar imágenes MODIS con R en Windows | ...

  4. Maximiliano Cristaldi dijo:

    Cómo les va? Gracias por la explicación. Soy nuevo en bajar imágenes satelitales y he podido bajarlas con la función “ModisDownload” pero solo recurriendo a la proyección de tipo “UTM”. Cuando quiero modificar el argumento “proj_type” a “GEO”, el comando funciona pero los rasters que obtengo con extensión “.tif” no muestran la zona que pedí. A continuación comparto el comando:

    veg_inx<- ModisDownload(x=1,h=12,v=c(11,12),dates=c('2011.05.01','2011.05.31'),MRTpath="C:/Users/Usuario/Desktop/MRT-download/bin", mosaic=T,proj=T,proj_type="GEO",datum="WGS84",pixel_size=250)

    Agradezco toda la ayuda posible…muchas gracias.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s