jueves, 8 de octubre de 2015

SC15: El Torneo Medieval

Qué encontrarás en esta entrada?
  • Fotos del evento "Torneo Medieval".

Como os anuncié en la última entrada, Alcalá de Henares se viste de medievo estos días para conmemorar el bautismo de su ilustre hijo, Miguel de Cervantes. Entre otros actos que intentaré cubrir en mayor o menor medida estos días, he acudido al denominado "Torneo Medieval", de Legend Especialistas.

Superada la primera decepción (y es que, en ninguna parte del programa se avisaba de que fuera un espectáculo de pago, y efectivamente, así lo era), ha estado bastante bien. Por 3,50 €, valientes caballeros competían entre ellos, no sin algo de discordia programada e incluso interacción con el público. Papel estelar ha tenido una señora que, en mitad de la justa y sin habérselo preparado, no ha dudado en  gritar: "al final voy a tener que bajar yo y se va a liar", muy al estilo del clásico castellano: "uy como me quite la zapatilla...".

Os dejo con algunas fotos del evento, que espero que no sean las últimas que os traiga de la Semana Cervantina 2015.



























Tengan vuestras mercedes noche tranquila.

sábado, 3 de octubre de 2015

Semana Cervantina 2015

Qué encontrarás en esta entrada?
  • Repaso al programa de la Semana Cervantina 2015.

Un año más, se acerca el 9 de octubre, y en Alcalá conmemoramos que el ilustre escritor complutense Miguel de Cervantes, probablemente nacido un 29 de septiembre de 1547, fuera bautizado en la pila de piedra cuya réplica puede verse a día de hoy en La Capilla del Oidor de la antigua iglesia de Santa María la Mayor (destruida tras la Guerra Civil).


El programa de esta edición ya lleva un tiempo publicado, como viene siendo habitual cada año, en la web Semana Cervantina. Hoy haré un repaso centrándome en los puntos que más me interesen personalmente de él.


  • Jueves 8 (Pza. de Cervantes a las 18:00) - Aunque ha habido actividades previas, creo que el inicio de los festejos pueden marcarse en este punto. Un pasacalles inaugurará el mercadillo medieval (conocido como "Mercadillo del Quijote"), el más grande de Europa según algunas fuentes, con unos 300.000 visitantes. 

  • Jueves 8 (Huerta del Obispo a las 18:00) - En paralelo con el acto anterior, tiene lugar un "torneo medieval". Desde luego que han despertado mi curiosidad con esta actividad, viendo el vídeo de promoción, promete bastante.


  • Jueves 8 (Huerta del Obispo a las 20:30) - Concierto de los lusos Sons da Suevia (música celta).
 

  • Jueves 8 (Corral de Comedias a las 21:00) - Con un título como "El Engendro visita el Mercado", desconozco si es un número de teatro callejero u alguna otra cosa. Quizás merezca la pena acercarse a comprobarlo.

  • Viernes 9 (Ayuntamiento a las 11:45) - Una comitiva de gente acompaña la partida de bautismo de Cervantes, en cuyo honor se celebran estas fiestas, desde el ayuntamiento al centro de interpretación "Los Universos de Cervantes" (en La Capilla del Oidor). A las 12:00 se realiza una lectura del Quijote.

  • Viernes 9 (C/San Juan a las 12:30) - Una de las cosas que más me llaman la atención de este mercadillo son los teatrillos callejeros, que tanto ambiente dan a la ciudad. Con el título "Los bufones de la corte", los actores recorrerán las calles hasta la Huerta del Obispo

  • Viernes 9 (Pza. Cervantes a las 13:00) - Espectáculo de danza Sufi a cargo de Emad Selim. En el vídeo de abajo podemos ver su peculiar estilo, lleno de giros, colores, patrones y tintes orientales.


  • Viernes 9 (Pza. Cervantes a las 14:00) - Teatro callejero: "Ramón de los Bosques". Partirán de la acera de Hacienda hasta la Plza. de San Diego (donde está la universidad cisneriana).

  • Viernes 9 (Pza. Cervantes a las 19:00) - Más teatro callejero: "El Jorobado Ildefonso".

  • Viernes 9 (C/San Juan a las 20:00) - Teatro callejero: "Carapan".

  • Viernes 9 (Pza. Cervantes a las 20:30) - Música celta a cargo de Acibreira.


  •  Viernes 9 (Pza. Cervantes a las 21:00) - Teatro callejero "Oveux Magicum".

  •  Viernes 9 (Pza. Cervantes a las 21:30) - Teatro callejero "La Muerte y su Séquito".

  •  Sábado 10 (Pza. San Diego a las 18:00) - Improvisación poética callejera.

  •  Sábado 10 (Huerta del Obispo a las 20:30) - Concierto de música celta por cortesía del grupo Cornalusa.


  •  Domingo 11 (C/San Juan a las 12:30) - Teatro callejero "El Esperpento".

  •  Domingo 11 (Pza. Cervantes a las 14:30) - Teatro callejero "Los Matasanos".

  •  Domingo 11 (C/San Juan a las 14:30) - Teatro callejero "Los Pordioseros".

  •  Domingo 11 (Pza. Cervantes a las 18:30) - Teatro callejero "Caballero y Escudero". En la acera del Corral de Comedias.

  •  Domingo 11 (Pza. Cervantes a las 18:30) - Teatro callejero "Juan Rana y Calderona". En la acera de Hacienda.

  •  Domingo 11 (C/San Juan a las 20:00) - Teatro callejero "Gentil vs. Cristiana" y "El Séquito del Gigante Malambruno".

  •  Domingo 11 (Huerta del Obispo a las 20:30) - Concierto de música celta por "Oltha Gabar".

  •  Domingo 11 (Pza. Cervantes a las 21:30) - Teatro callejero "Loa del Comediante".

Otras muchas actividades aparecen en el programa, pero creo que lo anterior es una muestra representativa de lo que podremos ver este año. Así que ya sólo queda despedirse y esperaros por las engalanadas calles medievales de la ciudad complutense.

jueves, 1 de octubre de 2015

¿Llevan todos los caminos a Roma?

Qué encontrarás en esta entrada?
  • Script Linux para unir GPX.
  • Ver en un mapa la superposición de de todos los caminos.

Como sabéis, en Astaroth's World somos muy fans de los GPS y de Linux. Una cosa que siempre he tenido curiosidad por ver es la superposición de todos los caminos que he seguido en mi vida. No recuerdo exactamente cómo era aquello que leí una vez, pero venía a decir algo así como que nuestros pies eran como bolígrafos que iban escribiendo nuestra historia según nos íbamos moviendo.

Los puntos que forman una línea más gruesa representan mis pasos por Los Cerros de Alcalá

Evidentemente, no registro mi vida continuamente con el GPS (si bien es verdad Google sí que lo hace por nosotros...). Al menos no por ahora. Lo que sí registro son muchas de mis excursiones, en archivos con formato ".gpx".

Un archivo ".gpx", como podemos ver en Wikipedia, es un archivo XML que contiene las coordenadas de una ruta, los puntos de interés ("waypoints"), la altitud y otros datos. Mi objetivo es partir de varios archivos ".gpx", extraer sólo la latitud y longitud de los puntos que construyen la ruta, y crear un nuevo archivo con todos ellos.

Para ello, he realizado un script en shell de Linux. Seguro que hay millones por Internet más eficientes que éste, pero éste es el mio, y es lo que se me ha ocurrido a mi en el momento.

#!/bin/bash
#
# Este script recopila datos sobre la longitud y latitud de varios archivos ".gpx" ó
#".GPX" y los une un un sólo archivo.
#
# Es necesario para su correcto funcionamiento que los archivos de entrada estén en la
#carpeta "GPX", un nivel por debajo del script.
#
# Creado por Astaroth (O.R.G.).
# 30/09/2015

clear

#************************************************************************************
# RENOMBRAR: se intenta evitar problemas con los espacios en los nombres de archivos.
#************************************************************************************
echo "Renombrando archivos para evitar problemas al procesarlos..."
mkdir .renombrado

# Se hace un primer indexado de los archivos de entrada:
ls GPX/*.gpx > .lista.txt
ls GPX/*.GPX >> .lista.txt

# Primero se renombran las extensiones para homogenizar:
cat .lista.txt | sed 's/.GPX/.gpx/g' > .Lista2.txt

maxl=`wc .lista.txt | awk '{print $1}'`

# Después se renombran los archivos, copiándolos a una carpeta con nombres no problemáticos:
for i in $(seq $maxl) ; do
    nomorg=`cat .lista.txt | sed -n ''$i'p' | sed 's/\ /\\ /g'`
    renom=`cat .Lista2.txt | sed -n ''$i'p' | sed 's/GPX\///g' | sed 's/\ /_/g'`
    cp "$nomorg" .renombrado/$renom
done

# Por último, se indexan los archivos con el nombre que no dará problemas:
echo "Indexando archivos"
lista=`ls .renombrado/*.gpx`

#************************************************************************************
# UNIÓN: es el script propiamente dicho, se extraen los datos de cada archivo y se
#unen en uno solo.
#************************************************************************************

echo "Escribiendo GPX de la unión..."

# CABECERA: se escribe parte fija inicial.
#------------------------------------------------------------------------------------
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" > Union.gpx
echo "<gpx>" >> Union.gpx
echo "<trk>" >> Union.gpx
echo "<trkseg>" >> Union.gpx

echo "Extrayendo coordenadas..."

# CUERPO: la parte en la que van los datos.
#------------------------------------------------------------------------------------

# Extracción de las latitudes y longitudes:
for archivo in $lista; do
    cat $archivo | grep -o "lat=\"[0-9]*.[0-9]*\" lon=\"[,-][0-9]*.[0-9]*\"" >> .latlong.txt
done

# Escribiendo los datos en el archivo de la unión:
cat .latlong.txt | sed 's/lat/<trkpt lat/g' | tr '\n' '*' | sed 's/*/>\n<\/trkpt>\n/g' >> Union.gpx

# COLA: Parte fija al final del documento (cierre de etiquetas XML)
#------------------------------------------------------------------------------------
echo "Cerrando archivo GPX de la unión..."
echo "</trkseg>" >> Union.gpx
echo "</trk>" >> Union.gpx
echo "</gpx>" >> Union.gpx

#************************************************************************************
# BORRADO DE ARCHIVOS TEMPORALES: se limpian los archivos que ya no son necesarios.
#************************************************************************************
echo "Borrando archivos temporales..."
rm .lista.txt
rm .Lista2.txt
rm -R .renombrado
rm .latlong.txt

echo ""
echo "¡¡EJECUCIÓN FINALIZADA!!"

Uno de los puntos delicados era que tomara correctamente el nombre de los archivos (muy heterogéneo entre mis documentos), por lo que parte importante del script es indexar los elementos involucrados y renombrarlos para que no den problemas (prestando especial cuidado a los espacios, que podrían ocasionar errores).

Una vez hecho esto, se escribe la cabecera (una parte genérica fija). Luego se extraen las coordenadas (longitud y latitud, obviando otros datos, como pudieran ser los de elevación) y se insertan en el cuerpo del archivo final. Por último, se cierra el archivo con una parte fija final (el cierre de las etiquetas del XML que se abrieron en la cabecera).

Pantalla de la salida del script

Con esto tenemos un único archivo ".gpx" con la información de todos, pudiéndolo visualizar con casi cualquier herramienta cartográfica como, por ejemplo, GpsPrune.

Unión de varias rutas que he registrado con el GPS. Se ve mi recorrido por La Alcarria de Alcalá (Los Santos de la Humosa, Santorcaz, Anchuelo, Villalbilla, Valverde de Alcalá, Torres de la Alameda, Loeches...).

Visión global de la unión de todas las rutas que he registrado con el GPS. Se incluyen algunas rutas no hechas a pie.

Algún día espero cubrir gran parte del mapa con estas líneas, y dejar una historia llena de recorridos, pueblos, monumentos y curiosidades que poder contar.

ACTUALIZACIÓN 


Una sencilla modificación en el script nos permite, de una manera más limpia, recuperar además los puntos de interés, las altitudes, las fotos, etc. En lugar de quedarnos sólo con la longitud y la latitud, el scrpt ahora selecciona todo lo que esté entre las etiquetas "<gpx ...>" y "</gpx>", y lo incluye en bloque en el archivo final. El resultado, el que podéis ver bajo estas líneas.

Caminos que he seguido por Los Cerros. Con esta actualización se incluyen puntos de interés que fui marcando, así como fotos y elevaciones, y desaparecen las líneas que unían una ruta con la siguiente, emborronando el resultado final.

El script definitivo sería el siguiente:

#!/bin/bash
#
# Este script recopila datos sobre la longitud y latitud de varios archivos ".gpx" ó
#".GPX" y los une un un sólo archivo.
#
# Es necesario para su correcto funcionamiento que los archivos de entrada estén en la
#carpeta "GPX", un nivel por debajo del script.
#
# Creado por Astaroth (O.R.G.).
# 01/10/2015

clear

#************************************************************************************
# RENOMBRAR: se intenta evitar problemas con los espacios en los nombres de archivos.
#************************************************************************************
echo "Renombrando archivos para evitar problemas al procesarlos..."
mkdir .renombrado

# Se hace un primer indexado de los archivos de entrada:
ls GPX/*.gpx > .lista.txt
ls GPX/*.GPX >> .lista.txt

# Primero se renombran las extensiones para homogenizar:
cat .lista.txt | sed 's/.GPX/.gpx/g' > .Lista2.txt

maxl=`wc .lista.txt | awk '{print $1}'`

# Después se renombran los archivos, copiándolos a una carpeta con nombres no problemáticos:
for i in $(seq $maxl) ; do
    nomorg=`cat .lista.txt | sed -n ''$i'p' | sed 's/\ /\\ /g'`
    renom=`cat .Lista2.txt | sed -n ''$i'p' | sed 's/GPX\///g' | sed 's/\ /_/g'`
    cp "$nomorg" .renombrado/$renom
done

# Por último, se indexan los archivos con el nombre que no dará problemas:
echo "Indexando archivos"
lista=`ls .renombrado/*.gpx`

#************************************************************************************
# UNIÓN: es el script propiamente dicho, se extraen los datos de cada archivo y se
#unen en uno solo.
#************************************************************************************

echo "Escribiendo GPX de la unión..."

# CABECERA: se escribe parte fija inicial.
#------------------------------------------------------------------------------------
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" > Union.gpx
echo "<gpx>" >> Union.gpx
echo "<trk>" >> Union.gpx
echo "<trkseg>" >> Union.gpx


# CUERPO: la parte en la que van los datos.
#------------------------------------------------------------------------------------

# Extracción de las latitudes y longitudes:
echo "Escribiendo datos..."
for archivo in $lista; do
    inic=`cat $archivo | grep -n "<gpx" | awk -F\: '{print $1}' | sed -n '1p'`
    fini=`cat $archivo | grep -n "</gpx" | awk -F\: '{print $1}'| sed -n '$p'`
    inic=`echo "$inic + 1" | bc`
    fini=`echo "$fini - 1" | bc`
    cat $archivo | sed -n ''$inic','$fini'p' >> Union.gpx

done

# COLA: Parte fija al final del documento (cierre de etiquetas XML)
#------------------------------------------------------------------------------------
echo "Cerrando archivo GPX de la unión..."
echo "</trkseg>" >> Union.gpx
echo "</trk>" >> Union.gpx
echo "</gpx>" >> Union.gpx

#************************************************************************************
# BORRADO DE ARCHIVOS TEMPORALES: se limpian los archivos que ya no son necesarios.
#************************************************************************************
echo "Borrando archivos temporales..."
rm .lista.txt
rm .Lista2.txt
rm -R .renombrado

echo ""
echo "¡¡EJECUCIÓN FINALIZADA!!"

Espero que os sea de utilidad.