viernes, 9 de marzo de 2012

Introducción y animación con GMT


La verdad me es difícil señalar para que tipo de lector esta definido este blog. Tanto en conocimientos previos como la utilidad que le pueda sonsacar en su lectura. Sin embargo el blog avanzara igual, para nadie o para todos, dirigido a mi lector imaginario o quizá para un lector fugaz que encuentre aquí algo que le pueda ser de utilidad. 

No explicare GMT desde 0 pues me sería demasiado tedioso hacer esto. Por otro lado yo mismo llevo trabajando con él solo durante un par de meses así que cada vez que descubra una nueva funcionalidad de este lo escribiré en este blog. Hoy vamos a ver como a partir de una serie de imagenes 3D, en este caso topografía, vamos a conseguir hacer un sencillo vídeo(aunque de alta resolución).    

Primero vamos a obtener nuestro archivo de topografía en el que vamos a trabajar, para esto el mejor sitio que conozco para descargar (de forma gratuita) es http://www.gdem.aster.ersdac.or.jp/search.jsp. No explicare como descargarlo pues la interfaz de la pagina me parece bastante intuitiva(de todas formas si alguien tiene alguna duda que me envíe un mail o algo).  La resolución de la topografía es de 30 m. 
De aquí se pueden obtener archivos .tiff los cuales no nos sirven para tratarlos con GMT. Para solucionar esto usamos el siguiente comando en la terminal(utilizamos el archivo que dice dem):

gdal_translate -of gmt archivo.tf archivo.grd ; para más información de gdal, poner man gdal_translate en la terminal.

Ahora que tenemos nuestro archivo .grd vamos a realizar un script para diseñar nuestra imagen en 3D. No me detendré mucho en esta parte, solo mostrare los comandos necesarios. 
Primero preparamos el archivo, definimos la iluminación de la imagen 3D y luego re definimos los limites de la paleta de colores según nuestra topografía :


grdgradient archivo.grd -Ggradiente.int -A250 -Nt -M   

grd2cpt archivo.grd -Cpaleta -Z  > paleta2.cpt ; se pueden descargar paletas desde 

Ya que este todo listo, en el script antes de poner grdview para crear nuestra imagen utilizamos el comando for para crear un ciclo:

for x in {0..360} 
do

Con esto básicamente le decimos  a la maquina que realice 361 veces los siguientes comandos para la zona longitud -70.73/-70.53, latitud -28.5/-28.33 : 

grdview archivo.grd -JM13c -JZ1.16c -Cpaleta2.cpt -R-70.73/-70.53/-28.5/-28.33 -E$x/35+v8/13 -Igradiente.int -B0.05a0.05 -Qs -P -V -K  > archivo.ps

psscale -D15c/4c/5c/0.5c -Cpaleta2.cpt -Ba400f200/a400f200:"(m)": -O >> archivo.ps

gs -sDEVICE=jpeg -dJPEGQ=100 -dNOPAUSE -dBATCH -dSAFER -r300 -sOutputFile="$x".jpg archivo.ps


rm archivo.ps


done

De esta forma mientras x varia de 0 a 360 en la parte -E$x/35+v8/13, el angulo en el cual vemos la imagen 3D ira variando, por lo que con eso se generaran 361 imágenes en la cuál la imagen ira rotando con el centro ubicado por +v8/13.
El penúltimo comando sirve para transformar los archivos .ps que crea GMT a .jpg. El ultimo sirve para eliminar los archivos .ps que ya no usaremos.

Por último luego de tener todas las imágenes las vamos a juntar con 

mencoder "mf://*.jpg" -mf fps=25 -o archivovideo.avi -ovc lavc -lavcopts vcodec=mpeg4

Para lograr un vídeo fluido recomiendo tener sobre 25 imágenes por segundo. Aquí puse 25 en donde dice fps=25. Para más detalles ver en 

De esta forma desarrollamos un vídeo como el siguiente :  





Utilizando este método con ciclos para crear multi-imágenes y luego unirlas en un vídeo podemos crear un sin fin de vídeos con GMT.  Podemos cambiar la elevación, la localidad, colores, etc para lograr un bonito vídeo. Espero que le sirva a alguien. Cualquier duda pueden contactarse conmigo.

No hay comentarios:

Publicar un comentario