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
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?
🙂
Pues muchas gracias Jorge, esta muy práctico lo que apuntas… Y en windows siempre podemos usar el shell con cygwin o a lo mejor probar una version de bash para windows como en http://www.steve.org.uk/Software/bash/ (o usar linux si nos dejan, claro !!!) 🙂
argg a ver si con el code se ve mejor
find . -name “*.ecw” -exec bash -c ‘file={};i=${file%.*};gdal_translate $file resultados/$i.tiff ‘ \;
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
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