Paquetes de R para trabajar con imágenes de satélite

Aunque existen numerosas fuentes de datos públicos que nos permiten obtener imágenes de satélites de forma gratuitas como:

En ocasiones se puede convertir en una tarea tediosa. En esta entrada vamos a conocer algunos paquetes de R para trabajar con imágenes de satélite, estos paquetes permiten buscar, descargar y procesar imágenes de percepción remota de estas fuentes desde el propio R.

r-imagenes-satelite

Una imagen satelital, por lo general, cubre una zona muy amplia y suele pesar alrededor de 1GB de espacio en nuestro ordenador. Descargar muchas imágenes en nuestra computadora (por ejemplo 100) y procesarlas en nuestro proyecto R requiere de muchos recursos y si no queremos bloquear nuestra máquina. Como recomendación, no debería hacerse.

1. sen2r

sen2r es un paquete de R que ayuda a descargar y preprocesar las imágenes Sentinel-2. Proporciona herramientas que permiten crear una cadena de procesamiento Sentinel-2 completa sin necesidad de intervenciones de otras herramientas o manuales. Además, posee una GUI muy intuitiva para la gente que no esté muy familiarizada con la programación en R.

El código fuente del proyecto puede encontrarse en el repositorio de Github ranghetti/sen2r.

1.1 Instalación

Esta librería depende de varios paquetes de R como rgdal,  rgeos, jqr, protolitegeojsonioopenssl, gdtools, curlncdf4XML… Pero además, necesita otras herramientas externas que usa en tiempo de ejecución para su correcto funcionamiento:

  • GDAL : biblioteca obligatoria y necesaria para todas las operaciones de procesamiento y de recuperación de metadatos de productos SAFE. Las instrucciones de instalación varían en función del sistema operativo y pueden consultarse aquí.
  • Sen2Cor: se utiliza para realizar la corrección atmosférica de los productos Sentinel-2 Level-1C. Podemos evitar su instalación si no deseamos corregir los productos localmente, de tal forma que empleemos solo productos Level-1C – TOA o descarguemos directamente productos Level-2A.
  • aria2: es un descargador alternativo que puede usarse para acelerar la descarga de archivos SAFE. Su instalación y su uso son optativos.

Podemos instalar y cargar el paquete en nuestro proyecto R de la siguiente forma:

## Instalación y carga de sen2r
install.packages("sen2r")
library(sen2r)

Antes de iniciar la GUI, se recomienda comprobar que todas las herramientas externas que hemos nombrado estén instaladas. Para ello, podemos ejecutar el siguiente comando:

check_sen2r_deps()

Podremos ver qué librerías nos faltan a través de esta GUI. Y, a excepción de GDAL, instalarlas directamente desde aquí.

Una vez completada satisfactoriamente la instalación, podemos emplear el paquete de dos formas diferentes: a través de la consola o mediante una interfaz interactiva.

1.2 Uso de sen2r a través de una GUI

Podemos iniciar el modo interactivo de la herramienta con el siguiente comando:

## Iniciando el modo interactivo
sen2r()

La GUI contiene diversos paneles que permiten a los usuarios establecer todos los parámetros necesarios para realizar un procesamiento de imágenes Sentinel-2. Además, cuenta con ventanas de ayuda para los usuarios.

gui-sen2r

1.3 Uso de sen2r a través de la consola de R

Posiblemente, en más de una ocasión, necesitemos iniciar un procesamiento de imágenes desde la línea de comandos sin recurrir a la GUI. sen2r también nos permite hacerlo. Para ello, hay tres modos disponibles:

  1. Especificar los parámetros que necesitemos pasándolos como parámetros a la función sen2r().
  2. Cargar los parámetros desde un archivo JSON previamente guardado.
  3. Cargar los parámetros desde un archivo JSON previamente guardado y modificando alguno de ellos en la llamada a la función sen2r().

Se puede obtener más información a través de la ayuda de R

?sen2r()

O en la página oficial de sen2r, de la cual se ha obtenido parte de la información de esta entrada, en https://sen2r.ranghetti.info/index.html.

2. getlandsat

El paquete getlandsat facilita a los usuarios el acceso a las imágenes Landsat 8 alojadas en AWS3 en https://registry.opendata.aws/landsat-8/.

## Instalación y carga de getlandsat
install.packages("getlandsat")
library(getlandsat)

El comandos lsat_scenes() permite obtener detalles de las imágenes disponibles para descargar.

## Listar imágenes Landsat
res <- lsat_scenes()

Se puede limitar el número de imágenes con el argumento n_max:

## Listar 1 imagen Landsat 
res1 <- lsat_scenes(n_max=1)

#> # A tibble: 1 x 11
#>  entityId acquisitionDate     cloudCover processingLevel  path   row min_lat min_lon max_lat max_lon
#>  <chr>    <dttm>                   <dbl> <chr>           <dbl> <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
#> 1 LC80101… 2015-01-02 15:49:05       80.8 L1GT               10   117   -79.1   -140.   -77.8   -125.
#> # … with 1 more variable: download_url <chr>

Si no se quiere tanta información, también podemos emplear lsat_scene_files() para obtener el nombre y el tamaño de las imágenes únicamente.

## Listar solo nombre y tamaño
files <- lsat_scene_files(res1)

# > files
#                                 file    size
# 2   LC80101172015002LGN00_B4.TIF.ovr   7.7MB
# 26 LC80101172015002LGN00_B11.TIF.ovr  17.0KB
# 3       LC80101172015002LGN00_B5.TIF  56.8MB
# 4      LC80101172015002LGN00_BQA.TIF   2.7MB
# 5      LC80101172015002LGN00_MTL.txt   7.5KB
# 6   LC80101172015002LGN00_B5.TIF.ovr   7.8MB
# ...

Para realizar la descarga se emplea la función lsat_image(), que da comienzo a la descarga y al finalizar devuelve la ruta de destino.

## Descargar imagen Landsat 8
lsat_image(x = "LC80101172015002LGN00_BQA.TIF")

# > [1] "/Users/diana/Library/Caches/landsat-pds/L8/010/117/LC80101172015002LGN00/LC80101172015002LGN00_BQA.TIF"

Visualizamos los datos obtenidos con el paquete raster:

## Visualización de imagen descargada
library(raster)
img <- raster("/Users/diana/Library/Caches/landsat-pds/L8/010/117/LC80101172015002LGN00/LC80101172015002LGN00_BQA.TIF")
plot(img)

Se puede consultar más información sobre el paquete getlandsat en el siguiente enlace https://cran.r-project.org/web/packages/getlandsat/vignettes/getlandsat_vignette.html.

3. MODIS

Moderate-Resolution Imaging Spectroradiometer (MODIS) es un instrumento científico lanzado en órbita terrestre por la NASA en 1999 a bordo del satélite Terra (EOS AM) y en 2002 a bordo del satélite Aqua. Permite medir la temperatura de la superficie, los sedimentos y fitoplancton del océano, la cartografía de la vegetación global, detección de cambios en el territorio, características de nubosidad, concentraciones de aerosoles…

El paquete MODIS es otro de los paquetes de R para trabajar con imágenes de satélite que nos permite procesar y obtener archivos de  LP DAAC, LAADS y NSIDC. Cuando se utiliza por primera vez requiere realizar unos pasos adicionales para configurar correctamente la herramienta.

3.1 Instalación y configuración

Podemos acceder a las funciones de MODIS como haríamos con cualquier otro paquete:

# Instalación y carga de MODIS
install.packages("MODIS")
library(MODIS)

Una vez instalado, la primera vez que vayamos a utilizarlo debemos registrarnos para obtener una cuenta en Earthdata de la NASA e introducir en RStudio las credenciales.

# Introducimos los credenciales
EarthdataLogin(usr = "usuario", pass = "contraseña")

*Nota: Al igual que ocurría con el paquete sen2r, MODIS tiene como dependencia obligatoria GDAL. Sin la instalación de GDAL no podremos utilizar correctamente el paquete.

3.2 Descarga de imágenes MODIS

Para obtener una lista detallada de todos los productos MODIS puede emplearse la función getProduct():

## Obtención de productos MODIS
getProduct()

# > getProduct()
#        PRODUCT                                                                              TOPIC
# 1      MCD12C1                                                                         Land Cover
# 2      MCD12Q1                                                                         Land Cover
# 3      MCD12Q2                                                                         Land Cover
# 4     MCD15A2H      Fraction of Photosynthetically Active Radiation (FPAR), Leaf Area Index (LAI)
# 5     MCD15A3H      Fraction of Photosynthetically Active Radiation (FPAR), Leaf Area Index (LAI)
# ......

La descarga se realiza con la función runGdal(). Esta función contiene multitud de argumentos, entre los que destacan:

  • product: producto MODIS específico que queremos descargar.
  • collection: colecciones de los productos MODIS. Puede emplearse getCollection() para buscar la de un producto específico.
getCollection("MOD11A1")
# $MOD11A1
#&nbsp;[1] "006"
  • SDSstring: cadena para determinar las bandas a extraer.
  • extent: región para la queremos los datos.
  • begin/end: fechas de inicio y finalización del periodo en el cuál se van a extrar los datos.
  • ….
## Descarga de imágenes MODIS
runGdal( product="MOD11A1", extent="austria", begin="2010001", end="2010005", SDSstring="101")

Puede obtenerse más información sobre el paquete MODIS en el tutorial https://cornelllabofornithology.github.io/ebird-best-practices/covariates.html#covariates-dl o en la página oficial del paquete de CRAN.

4. RStoolbox

Desde 2015, podemos encontrar en CRAN el paquete RStoolbox, que proporciona un conjunto de herramientas para el procesamiento de imágenes. Entre las utilidades que ofrece destacan:

  • Importación/Exportación de datos
  • Preprocesamiento
  • Análisis
  • Clasificación
  • Visualización

Esta librería se basa en el conocido paquete raster. Está alojado en CRAN y puede instalarse y cargarse en nuestro proyecto R como siempre:

install.packages("RStoolbox")
library(RStoolbox)

Se pueden consultar más información a través de su blog en http://bleutner.github.io/RStoolbox/rstbx-docu/RStoolbox.html y descargar su código fuente en el repositorio de Github bleutner / RStoolbox.

5. Otros paquetes

Además de los paquetes de R para trabajar con imágenes de satélite aquí nombrados, existen otros muchos otros que permiten trabajar con imágenes satelitales. Entre ellos, también destacamos:

  • rasterVIS para visualizar e interactuar con las imágenes.
  • getSpatialData para acceder a múltiples distribuidores de datos como Sentinel-1, Sentinel-2, Sentinel-3, Landsat 8, Landsat ETM, Landsat TM, MODIS… etc
  • hsdar para administrar, analizar y simular datos hiperespectrales.
  • ….

¡Continuará!

1 comentario en «Paquetes de R para trabajar con imágenes de satélite»

Los comentarios están cerrados.