Convertir rasters de un directorio a otro formato con gdal

Script sencillito pero práctico, para convertir todos los ficheros raster de un directorio a otro formato raster (dentro de los soportados por gdal)

Teniendo acceso desde línea de comandos a la utilidad gdal_translate (distribuida p.ej. en FWTools), podemos convertir todos los ficheros .ecw de una carpeta a formato .tif, mediante el siguiente código en Python:

import os, sys
directorioActual = os.getcwd()
directorioSalida = os.path.join(directorioActual, "resultados")

for root, dirs, files in os.walk(directorioActual):
    for fichero in files:
        (nombreFichero, extension) = os.path.splitext(fichero)
        if(extension == ".ecw"):
            comando = "gdal_translate %s %s\\%s" %(fichero, directorioSalida, nombreFichero + ".tif")
            print comando
            os.system(comando)

Copiamos el código a un fichero llamado p.ej. ‘ejecutar.py’ dentro de la carpeta que nos interese, creamos una carpeta dentro para los ficheros transformados (‘resultados’) y ejecutamos… Más fácil imposible.

Se pueden introducir fácilmente otras variantes, p.ej. con otros formatos de raster, viendo las opciones disponibles en la herramienta gdal_translate

EDIT: Editado para añadir mejoras de WordPress al código fuente

5 comentarios en “Convertir rasters de un directorio a otro formato con gdal

  1. Está bien pero creo que esto en linux con el comando find lo hacemos en una línea o dos 🙂 algo en plan

    find . -name “*.ecw” -exec bash -c ‘file={};i=${file%.*};gdal_translate $file resultados/$i.tiff ‘ \;

    En realidad son tres instrucciones que se ejecutan sobre cualquier fichero .ecw que encuentre debajo de la carpeta actual, así que además es recursivo. ¿qué te parece?

    🙂

  2. Hola Victor,
    Soy Alejandro Chamizo, antiguo alumno de DGSIG 2012-2013
    Estoy intentado usar tu script para convertir 1200 archivos en formato .nc a tif, pero me rebota un error el ejecutar el archivo .py en la FWTool Shell:
    line 10
    print comando
    SyntaxError: invalid syntax

    Puedes ayudarme?
    gracias de antemano

    • Víctor Velarde Gutiérrez dijo:

      Hola Alejandro,
      A bote pronto se me ocurre algún problema con el formato de tu fichero fuente (espacios, tabulaciones…), aunque seguramente esto ya lo has comprobado (p. ej. en idle > validar código). Otro aspecto es la composición en sí de la cadena, prueba a cambiar el separador de rutas \\ por / o a imprimir individualmente cada componente para ver posibles errores. Si nada de eso te funciona, mándame el fuente e intento echarle un ojo.

      Saludos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

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

Google photo

Estás comentando usando tu cuenta de Google. 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 )

Conectando a %s