viernes, 16 de abril de 2010

Creando kmz desde la info de twitter. (ii)

Ok, ahora voy a mostrar como está construido un archivo kml, que es el que contiene la información para desplegarla en el google-earth. El archivo es un XML que contiene información sobre los puntos (coordenadas, latitud, longitud) para desplegarlos sobre el mapa.


<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name> Ultimos sismos registrados </name>
<Style id="bajo">
<IconStyle>
<scale> 0.7 </scale>
<Icon>
<href>root://icons/palette-3.png</href>
<x>64</x>
<y>64</y>
<w>32</w>
<h>32</h>
</Icon>
</IconStyle>
<LabelStyle>
<scale>0.7</scale>
</LabelStyle>
</Style>
<Style id="alto">
<IconStyle>
<scale> 0.7 </scale>
<Icon>
<href>root://icons/palette-3.png</href>
<x>64</x>
<y>96</y>
<w>32</w>
<h>32</h>
</Icon>
</IconStyle>
<LabelStyle>
<scale>0.7</scale>
</LabelStyle>
</Style>
<Folder>
<name> Sismos de SismologicoMX via Twitter</name>




hasta aquí tenemos el encabezado, definiendo 2 tipos de estilos para mostrar los iconos, el nombre de la carpeta y la identificación del archivo.

Luego viene la parte de los puntos sobre el mapa, la cual se va a repetir dependiendo del número de puntos que se quieran mostrar.




<placemark>
<name> NOMBRE </name>
<description> DESCRIPCION </description>
<lookat>
<longitude> LONGITUD </longitude>
<latitude> LATITUD </latitude>
<altitude> ALTURA </altitude>
<range>100</range>
<tilt>0</tilt>
<heading>0</heading>
</lookat>
<styleurl>#bajo</styleurl>
<point>
<coordinates> LONGITUD, LATITUD, ALTURA </coordinates>
</point>
</placemark>




Finalmente el cierre del documento:




</Folder>
</Document>
</kml>





Esta información la puedes observar en cualquier punto que añadas al google earth, lo exportes y luego la abras en un editor de texto, o bien puedes consultar los manuales oficiales de google-earth.

En la siguiente entrega, veremos como acoplar todo esto :)

jueves, 15 de abril de 2010

Creando kmz desde la info de twitter. (i)

Las columnas de Dave Taylor en LinuxJournal son muy buenas, utiliza bash para MUCHAS cosas. Siguiendo la línea, voy a programar un script para que obtenga la información que el Sistema Sismológico Nacional "twittea" y lo ponga en un archivo kmz que googleearth entienda.

El dia de hoy, muchos sismos "menores" en Baja California, yo creo que la península se va a desprender :)

Los datos que ponen en Twitter bajo SismologicoMX son generados automáticamente, así que tienen una estructura consistente, lo primero es descargar la info de twitter, y para esto utilizaré el buen amigo lynx, con la opción de código fuente para parsear el html directamente, buscando la clase entry-content, que es la que contiene el micropost, afortunadamente está en la misma linea, asi que con el siguiente código lo obtenemos:


lynx --source http://twitter.com/SismologicoMX | grep "entry-content"


agrego un poco de sed para eliminar los tags html :


lynx --source http://twitter.com/SismologicoMX | grep "entry-content" | \
sed 's/<[^>]*>//g'


y con esto tenemos la linea de los datos, para obtener la información que me interesa, como fecha, hora, latitud, longitud, profundidad y magnitud, agrego un poco de awk :


lynx --source http://twitter.com/SismologicoMX | grep "entry-content" | \
sed 's/<[^>]*>//g' | awk ' {print $2,$4,$6,$8,$10,$11 }'


Con esto termino este post, ya con esos datos, en el siguiente veremos como utilizarlos para formar el archivo kmz.


Ejemplo de resultados:

2010-04-15 05:20:08 31.95 -113.47 10 M=4.2
2010-04-15 04:28:19 32.28 -115.32 16 M=3.5
2010-04-15 04:20:39 32.08 -114.92 20 M=3.9
2010-04-15 03:51:01 32.66 -115.55 10 M=3.8
2010-04-15 02:17:22 32.47 -115.33 8 M=3.4
2010-04-15 01:35:21 32.73 -115.81 16 M=3.6
2010-04-15 01:19:56 32.63 -115.76 16 M=3.7
2010-04-15 00:14:30 32.14 -115.23 17 M=3.5