Wednesday, April 25, 2012

Monitoreando la actividad del Popocatépetl



Emiliano Sánchez, un amigo en línea, que sigue mis pasos en programación me hizo una consulta: debido a la actividad volcánica del Popocatépetl, la cual está siendo monitoreada constantemente por el CENAPRED, hay en la página web de dicha institución imágenes del volcán, que se toman cada minuto. La idea de Emiliano es capturar las imágenes que produce el CENAPRED del Popocatépetl (que se generan minuto a minuto) y entonces, una vez que se tengan cientos, quizás miles de imágenes, crear una película de todo el desarrollo de lo que está pasando en el volcán.

El programa

Con esta idea en mente me di a la tarea de ver cómo se podía bajar una imagen de una página web. Hallé, para mi fortuna, que el CENAPRED, en su dirección (URL):

http://www.cenapred.unam.mx/images/popo1.jpg

genera una imagen llamada popo1.jpg por minuto. Esta imagen siempre es la misma, es decir, siempre se llama igual.

Escribí entonces un programa que captura la imagen generada por el CENAPRED cada minuto y la va guardando con nombres que tienen un número secuencial al final de su nombre de manera que pueda tener, por ejemplo, las siguientes imágenes: popo-1.jpg, popo-2.jpg, popo-3.jpg, etc. Así, se puede guardar toda la secuencia de fotos que automáticamente se generan en el sitio web.

El software permite alimentar la ruta de donde se obtendrá la imagen, el nombre con el que se va a guardar y finalmente, el contador para empezar la secuencia de fotos. Con estos datos, el programa funciona minuto a minuto.

Como efecto adicional, el programa presenta en la pantalla la última foto que se haya tomado. Tiene además una barra de progreso que cuenta hasta 60 segundos. De esta manera el usuario está siempre informado de lo que está pasando mientras el software corre.



Siguiente paso

Una vez que el sistema ha guardado las imágenes que genera la página del CENAPRED, se puede crear un archivo de video (formato AVI) que puede desplegar cada foto como una película. Para ello usé el componente en Delphi, AviWriter, para crear fácilmente archivos AVI, de Elliott Shevin, el cual usa mucho código de Anders Melander. Este programa simplemente pide las imágenes que queremos cargar para hacer el video y lo hace prácticamente de inmediato. Es una solución rápida, sin intención de ser la mejor solución, pero funciona.


Más información

El programa es totalmente gratuito. Si alguien lo quiere, escríbame y se lo mando a vuelta de correo. Para comentarios, ideas y consultas, favor de escribir a morsa@la-morsa.com

11 comments:

Jesús said...

Creo que subiendo las imágenes a un servidor y con javascript se podría hacer fácilmente una página que pase las imágenes para ver la animación.

Morsa said...

Pues hacer un programa que despliegue imagen tras imagen no es la gran cosa. Lo que me gustaría es guardarlo como un video.

Acabo de ver un programa que hace esto en delphi. Lo probaré en estos días.

saludos
Manuel

Marco A. Dorantes said...

La dirección que comentas parece ser la imagen de la estación Altzomoni. Al menos hay otras dos estaciones. Las direcciones de esas otras estaciones son:

Imagen del volcán Popocatépetl - Estación Tianguismanalco
http://www.cenapred.unam.mx/images/popoSur.JPG

Imagen del Volcán Popocatépetl - Tlamacas
http://www.cenapred.unam.mx/images/popoTlamacas2.jpg

Morsa said...

Marco,

en mi programa puedes cambiar la dirección (como las que nos diste), para procesar esas imágenes también.

saludos
Manuel

BITmotion Feature Films said...

¡Genial esfuerzo! Te paso un timelapse que hizo la NASA en una semana, del Popo, con el satélite Terra.

http://www.nasa.gov/topics/earth/features/mex-volcano-20120423.html

Saludos
Carlos G Mun

Morsa said...

Muchas gracias, Carlos.

saludos
Manuel

Emiliano Sánchez said...

Ya lo estoy provando y en verdad funciona, como bien mensiona Marco A.Dorantes solo se descarga la imagen de Altzomoni aún al cambiar la dirección de la imagen en el programa, sin embargo vale mucho la pena el programa y el trabajo hecho por el Sr. Morsa, muchas gracias por atender a esta inquietud, me gustaría compartir el primer video en cuanto este listo, saludos.

Ernesto said...

El siguiente script acepta un entero como parámetro y corresponde al número de imágenes que bajará del servidor.
Los permisos Unix deben ser 555 para que se pueda ejecutar directamente y debería funcionar en linux, aunque no lo probé más que en la Mac.

ejemplo:
./popo.sh 600


#!/bin/sh
for (( i = 1; i <= $1; i++ ))
do
curl -o popo_1`date "+_%Y%m%d-%H:%M:%S"`.jpg "http://www.cenapred.unam.mx/images/popo1.jpg"
curl -o popo_2`date "+_%Y%m%d-%H:%M:%S"`.jpg "http://www.cenapred.unam.mx/images/popoSur.JPG"
curl -o popo_3`date "+_%Y%m%d-%H:%M:%S"`.jpg "http://www.cenapred.unam.mx/images/popoTlamacas2.jpg"
echo Foto: $i
sleep 60
done



Saludos

Ernesto said...

Para convertir los jpg en una película se puede usar ffmpeg:

Lo malo es que no es una utilería estándar y tengo que compilarlo para usarlo.

http://electron.mit.edu/~gsteele/ffmpeg/

Recomiendo que se use .mp4 (MPEG-4) y no avi.

Saludos

Ernesto said...

Probando el programa y viendo las imágenes a través del "preview" de la Mac, observé el movimiento de las estrellas minuto a minuto.

¿Cómo se podrá determinar la posición de la cámara usando el movimiento de las estrellas como referencia?

Morsa said...

Muy bueno, ernesto... gracias. Como siempre eficiente programador pero mejor amigo.

saludos
Manuel