Aunque existen numerosas fuentes de datos públicos que nos permiten obtener imágenes de satélites de forma gratuitas como:
- El Servicio Geológico de los Estados Unidos (USGS)
- Copernicus Open Access Hub
- AWS: Imágenes Landsat 8
- Portal EarthData de la NASA
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.
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, protolite, geojsonio, openssl, gdtools, curl, ncdf4, XML… 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.
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:
- Especificar los parámetros que necesitemos pasándolos como parámetros a la función sen2r().
- Cargar los parámetros desde un archivo JSON previamente guardado.
- 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 # [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á!
Tutora del curso de R y SIG. Grado en Ingeniería en tecnologías de la información y en Geomática y topografía. Máster en Ingeniería y geoinformación. Echa un vistazo a todos nuestros cursos de SIG online.
EXCELENTE