• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar al pie de página
logo web Geoinnova

Geoinnova

Consultoría y Formación en SIG y Medio Ambiente

  • Geoinnova
    • Asociación
    • Equipo
    • Visor de proyectos Geoinnova
    • Geolibrería
    • Alianzas Estratégicas
  • Consultoría
    • Consultoría y Desarrollo en Sistemas de Información Geográfica
    • Consultora Ambiental
    • Turismo sostenible
    • Planificación urbana y ordenación del territorio
    • Planes Urbanos de Actuación Municipal – PUAM
    • Geomarketing
  • Servicios
    • Planero Web
    • QElectricGIS
    • Plugins
  • Formación
    • Todos los cursos
    • Webinars
    • Máster y Diplomas
    • Cursos de ArcGIS
    • Cursos de QGIS
    • Cursos de Teledetección
    • Cursos de Medioambiente
  • Medio Ambiente
    • Consultora Ambiental
    • Estudios ambientales para proyectos de energías renovables
    • Estudios de Impacto e Integración Paisajística
    • Evaluación Ambiental Estratégica de planes y programas
    • Estudio de Impacto Ambiental para proyectos
    • Cálculo huella de carbono
    • Educación Ambiental
    • Cursos de Medioambiente
  • Coworking
  • Blog
    • SIG
    • Medio Ambiente
    • Teledetección
    • Programación y Desarrollo SIG
    • Corporativo
  • Contacto
    • Soporte de Clientes – Tickets
SIG

Conversión masiva de imágenes Sentinel 2A a format tif en entorno R

04/06/2018 7 comentarios

En esta ocasión vamos a comentar cómo llevar a cabo una conversión masiva de imágenes Sentinel 2A a format tif en entorno R.

¿Dónde puedo encontrar imágenes Sentinel para su descarga?

Hace un tiempo os contamos cómo obtener imágenes digitales de satélite a través de varios geoportales y servicios web que los distintos proveedores (USGS, ESA, NOAA…) ponen a nuestra disposición.

imágenes sentinel
Fuente: Rewisor.com

A casi nadie en el ámbito de la geoinformación se le escapa el elevado potencial que este tipo de productos tiene. En este sentido la misión Landsat lleva ya varias décadas observando el planeta mediante las sucesivas misiones que han ido poniendo en órbita. Hace relativamente poco tiempo que la Agencia Espacial Europea se ha subido a este carro mediante la misión Sentinel y las sucesivas plataformas y sensores que componen dicha misión (Sentinel-1 y Sentinel-2A/B) cuyos datos se encuentran disponibles de manera través de la plataforma “Sentinels Scientific Data Hub”. Los Sentinel-2 fueron diseñados para liderar la demanda de imágenes terrestres a nivel mundial, mejorando la resolución espacial (hasta 10 metros) y el periodo de revisita (5 días combinando sentinel 2A y B).

El problema de las imágenes Sentinel

Hasta aquí todo estupendo, pero un vistazo rápido a los datos descargados nos revela una pequeña sorpresa, el formato de los datos. Las imágenes Sentinel se distribuyen en ficheros jp2, que no son compatibles con cualquier aplicación, siendo R y su librería “raster” que forma parte de casi cualquier script de procesado de imagen un caso en el que esto da problemas.

La solución habitual para poder trabajar con las imágenes Sentinel descargadas, pasa por convertir estos pj2 a Sentinel usando generalmente la Geospatial Data Abstraction Library (GDAL para los amigos) para hacer la conversión. Esta es precisamente la solución a nuestro problema dentro de R, llamar a paquete homólogo (rgdal) y convertir masivamente las imágenes. El objetivo es el de poder crear imágenes multibanda dentro de R (RasterStack) y poder trabajar esa información, hacer muestreos o extracciones masivas de información sirviéndonos de las herramientas habituales.

imágenes

Aquí os dejo un script de ejemplo en el que veréis que me sirvo de herramientas para listar ficheros y de la función readGDAL(), función que, para entendernos, es el equivalente a readOGR() que quizás conozcáis o hayáis usado para leer capas vectoriales.

library(rgdal)
library(raster)
library(tools)
setwd('rutaDirectorioRaiz')
#Nombre de la carpeta de destino de los ficheros tif
carpetaTif <- 'nombreCarpeta/'
#Lista con los ficheros originales en formato jp2
lista.jp2 <- list.files('carpetajp2',pattern='.jp2',full.names=TRUE)
#Bucle para recorrer la lista de ficheros jp2 que queremos convertir
for(jp2 in lista.jp2){
#Leemos el fichero jp2. Esta función es bastante potente https://www.rdocumentation.org/packages/rgdal/versions/1.2-18/topics/readGDAL
r <- raster(readGDAL(i))
outRaster <- file_path_sans_ext(basename(i))
#Exportamos el fichero jp2 a tif
#En este punto se podria incluir cualquier funcion de reproyectado, recorte, remuestreo...
writeRaster(paste(carpetaTif,outRaster,'.tif',sep=''),r,overwrite = TRUE)
}

Si quieres aprender más sobre programación aplicada en entorno de R, pégale un vistazo a mi Curso de Análisis Espacial con R donde verás ejemplos de este tipo y mucho más para lograr potenciar tus habilidades geomáticas al máximo.

imagenes sentinel curso analisis espacial con r

Autor : Marcos Rodrigues

Apúntate a nuestra newsletter semanal

"*" señala los campos obligatorios

Consentimiento*
*
Este campo es un campo de validación y debe quedar sin cambios.

Información legal

Cumplimos el RGPD (Reglamenteo General de Protección de Datos) y esta en la primera información que debes saber. Responsable: Asociación Geoinnova. Finalidad: Apuntarte en nuestra base de datos para poder enviarte nuestra newsletter y cualquier otra información de interes. Legitimidad: Nos das tu consentimiento para comunicarnos contigo. Derechos: Tienes derecho a acceder, rectificar, limitar y suprimir tus datos. Para una información más ampliada entra a nuestra política de privacidad.

Artículos relacionados

Cómo crear un modelo digital del terreno a partir de múltiples bloques LIDAR con CloudCompare
24/01/2023
Cómo documentar proyectos en QGIS con el complemento ‘Project Reports’
17/01/2023
¿Qué es la Agenda Urbana Española?
12/01/2023

Marcos Rodrigues

Interacciones con los lectores

Comentarios

  1. ALba dice

    29/03/2021 a las 15:06

    En el bucle hay un error, debería ser for ( i in lista.jp2)

    Responder
  2. Sergio Morell dice

    12/03/2020 a las 17:09

    ERROR:

    > for(jp2 in lista.jp2){
    + r <- raster(readGDAL(i))
    + outRaster

    Responder
    • Oliver Ojeda M dice

      23/05/2020 a las 02:09

      Hola Sergio Morell
      Junto con saludar y esperando que todo este bien en tiempos tan complejos, queria consultar si pudiste encontrar el error en el codigo? No me resulta el proceso. No me queda muy claro la parte final, cuando ejecutan un bucle.
      Si pudieras ayudarme, estaría muy agradecido

      Saludos

      Responder
  3. Sergio Morell dice

    12/03/2020 a las 17:04

    Hola, puede que exista un error en el código de este ejemplo, o puede que sea error mio. Estoy tratando de replicar este código con mis propios datos y recibo el siguiente error:

    library(rgdal)
    library(raster)
    library(tools)

    # Directorio que contiene mis archivos .jp2
    setwd(«D:/list_test»)
    path <- "D:/list_test"

    #Nombre de la carpeta de destino de los ficheros tif
    carpetaTif <- "D:/list_test"

    #Lista con los ficheros originales en formato jp2
    lista.jp2 <- list.files(path = path, pattern='.jp2', full.names=TRUE)

    #Bucle para recorrer la lista de ficheros jp2 que queremos convertir
    for(jp2 in lista.jp2){
    r <- raster(readGDAL(i))
    outRaster for(jp2 in lista.jp2){
    + r <- raster(readGDAL(i))
    + outRaster

    Gracias,

    Sergio.

    Responder
    • Sergio Morell dice

      12/03/2020 a las 17:07

      Hola, puede que exista un error en el código de este ejemplo, o puede que sea error mio. Estoy tratando de replicar este código con mis propios datos y recibo el siguiente error:

      library(rgdal)
      library(raster)
      library(tools)

      # Directorio que contiene mis archivos .jp2
      setwd(«D:/list_test»)
      path <- "D:/list_test"

      #Nombre de la carpeta de destino de los ficheros tif
      carpetaTif <- "D:/list_test"

      #Lista con los ficheros originales en formato jp2
      lista.jp2 <- list.files(path = path, pattern='.jp2', full.names=TRUE)

      #Bucle para recorrer la lista de ficheros jp2 que queremos convertir
      for(jp2 in lista.jp2){
      r <- raster(readGDAL(i))
      outRaster for(jp2 in lista.jp2){
      + r <- raster(readGDAL(i))
      + outRaster

      Gracias,

      Sergio.

      Responder
      • Asociación Geoinnova dice

        12/03/2020 a las 18:14

        Hola Sergio,

        Revisamos el código y te decimos algo, gracias por avisar!!

        Un saludo.

        Responder
        • Oliver Ojeda M dice

          23/05/2020 a las 02:06

          Hola
          Junto con saludar y agradeciendo por el excelente material que uds desarrollan.
          Quisiera consultar, si hay algún error en el codigo, da error en la ultima parte del bucle(Error in basename(i) : object ‘i’ not found), no lo entiendo muy bien.
          Si pudieran ayudarme estaría muy agradecido
          Saludos

          Responder

¿Quieres comentarnos algo? Adelante! Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Footer

Menú Legal

  • Aviso Legal
  • Política de privacidad
  • Política de cookies
  • Términos y condiciones

Otras páginas de interes

  • Promociones y descuentos en formación
  • Formación bonificada FUNDAE

Contacto

Calle Luis Morondo Urra nº 8 Bajo A
31006 Pamplona (Navarra)
info@geoinnova.org
+34 948 117 137

Horario de atención

Lunes a Viernes - 09:00 a 14:00 y de 16:00 a 19:00.
Fines de semana y Festivos - Exclusivamente por mail.
Horario de Verano (01 de julio al 30 de agosto): De lunes a viernes de 8 a 15h.
Entidad adherida a Confianza Online Certificado de inscripción en el Registro de huella de carbono, compensación y proyectos de absorción Logo Plazox

© 2023 · Desarrollada por Geoinnova en colaboración con OikosMSP

Gestionar el Consentimiento de las Cookies
Utilizamos tecnologías como las cookies para almacenar y/o acceder a la información del dispositivo. Lo hacemos para mejorar la experiencia de navegación y para mostrar anuncios personalizados. El consentimiento a estas tecnologías nos permitirá procesar datos como el comportamiento de navegación o las identificaciones únicas en este sitio. No consentir o retirar el consentimiento, puede afectar negativamente a ciertas características y funciones.
Funcional Siempre activo
El almacenamiento o acceso técnico es estrictamente necesario para el propósito legítimo de permitir el uso de un servicio específico explícitamente solicitado por el abonado o usuario, o con el único propósito de llevar a cabo la transmisión de una comunicación a través de una red de comunicaciones electrónicas.
Preferencias
El almacenamiento o acceso técnico es necesario para la finalidad legítima de almacenar preferencias no solicitadas por el abonado o usuario.
Estadísticas
El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos. El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos anónimos. Sin una requerimiento, el cumplimiento voluntario por parte de su proveedor de servicios de Internet, o los registros adicionales de un tercero, la información almacenada o recuperada sólo para este propósito no se puede utilizar para identificarlo.
Marketing
El almacenamiento o acceso técnico es necesario para crear perfiles de usuario para enviar publicidad, o para rastrear al usuario en un sitio web o en varios sitios web con fines de marketing similares.
Administrar opciones Gestionar los servicios Gestionar proveedores Leer más sobre estos propósitos
Preferencias
{title} {title} {title}