miércoles, 10 de junio de 2015

Mostrando Tweets en un Mapa dentro del QGIS


INTRODUCCIÓN

La presente entrada de mi blog tiene como objetivo mostrar cómo podemos recopilar Tweets y mostrarlos sobre un mapa en QGIS, empleando para ello el plugin twitter2qgis, luego poder realizar una animación con los resultados obtenidos, en ese caso usaremos el plugin Time Manager.

Revisando información publicada por Anita desde el 2011 y el 2012, concuerdo que es interesante poder mostrar el flujo o recorrido de Tweets, desde el punto de vista espacial por el hecho de contar con información de la ubicación de los mismos (referencia espacial), todo ello es posible empleando el Tweepy (librería de Python para acceder al API de Twitter), el cual permite recolectar Tweets en una línea de tiempo. Tal como lo indica Riccardo, los tweets son una interesante fuente de información, además ellos nos pueden decir algo sobre las dimensiones espacio-temporales con respecto a una palabra clave. 
Si deseamos profundizar en los usos potenciales de contar con este tipo información (tweets geolocalizados), podemos mencionar que como parte del denominado concepto muy popular denominado Crowdsourcing (colaboración abierta distribuida), tenemos por ejemplo para realizar una planificación urbana, tal como lo muestran en un artículo denominado "Crowdsourcing Land Use Maps via Twitter", de la misma manera para los temas de gestión de riesgo de desastres, desde ya hace mucho tiempo se viene trabajando sobre sus aplicaciones, sobre todo desde la aparición de los smartphones, un ejemplo visible lo podemos ver en un proyecto relacionado en casos de tormentas de nieve.

Requisitos para mostrar Tweets en QGIS
  1. El principal requesito es contar con una cuenta en Twitter, existe la opción de trabajar en un ambiente Python a través de tweepy para acceder al API de Twitter, por lo tanto es necesario tener instalado el Tweepy antes, ello es posible siguiendo las recomendaciones que se muestran aquí; hay que tener en cuenta que para que no resulte una pesadilla es importante tener instado el PIP (en versiones de Python 2.7.9 en adelante ya viene incorporado), o también pueden instalar si trabajan en Windows el GitHub para Windows.
  2. El otro requisito indispensable es desde su cuenta de Twitter deberán generar una aplicación (app), para ello dirigirse a https://apps.twitter.com/ , con ello podrán acceder a unos códigos necesarios para trabajar con el complemento del QGIS (twitter2qgis). Asegúrense que dentro de la configuración de su perfil hayan incluido el dato de un número móvil. 
  3. Por último tener instalado el plugin o complemento twitter2qgis en el QGIS.

MANOS A LA OBRA:

  • Crear una Aplicación en Twitter
Tal como lo indicamos en los requisitos, debemos crear una aplicación, si tenemos abierto nuestra cuenta y entramos a https://apps.twitter.com/, nos aparecerá una lista de las aplicaciones que tenemos, solo hacemos un clic en "Create New App".

Fig 1: Opción para crear una aplicación

Luego les aparecerá una pantalla para completar algunos datos requeridos, sobre todo el nombre a su aplicación y una pequeña descripción. Luego tendrán que aceptar las condiciones que mencionar. 


Fig 2: Configuración de la aplicación

Dentro de la aplicación creada se podrá acceder a unos códigos, en total son cuatro (Consumer Key, Consumer Secret, Access Token y Access Token Secret).


  • Instalar el Plugin Twitter2qgis
Una vez instalado el Tweepy y la apps en Twitter ya podemos instalar el plugin dentro del QGIS, para ello la manera más sencilla es ir al administrador de complementos y buscarlo para su instalación.



Fig. 3: Instalando el Plugin Twitter2qgis


Ahora dentro del QGIS lo podremos ver dentro de la opción Web de la barra de menú.


Fig 4: Ubicación del plugin en la barra de menú del qgis

  • Trabajando con el plugin para colectar Tweets
Al activar el plugin nos aparecerá una pantalla en nos solicitan aquellos códigos con lo que debemos contar al crear nuestra aplicación en Twitter. Luego en la parte inferior podemos indicar el número de Tweets que deseamos recolectar, para nuestro caso fueron 250.


Fig 5: Ingresando la información requerida por el plugin


  • Recolectar Tweets en el mundo
Contando en nuestro QGIS con una imagen del OSM como fondo podemos apreciar el resultado proporcionado por el plugin.


Fig 6: Recolectando 250 Tweets alrededor del mundo

Una vez recolectado los tweets, se genera una archivo temporal de puntos con todos ellos. Nosotros luego podemos generar un ESRI Shapefile.



Fig 7: Tabla de datos generado con los tweets recopilados


  • Generar una animación
Con la finalidad de apreciar mejor los resultados y teniendo en cuenta que como parte de los datos mostrados en nuestra tabla de atributos existen datos de tiempo, quisiera mostrarles la posibilidad de poder generar una animación. Para lograr esto debemos contar con el plugin Time Manager, el cual también lo podrán descargar desde el QGIS.


Fig 8: Instalando el plugin TimeManager



  • Ajustar nuestros datos para la animación

Una vez que ya tenemos nuestro plugin instalado, procedemos a configurar nuestra animación, para ello debemos hacer unos ajustes primero, sobre todo porque el formato de tiempo que son requeridos para el plugin no se ajustan del todo a lo que tenemos como resultados de los tweets recopilados. Por lo tanto simplemente nos vamos a la calculadora de campo de nuestra tabla de atributos y generamos una columna con los valores de acuerdo al formato requerido, para lo cual emplearemos las funciones de "Cadena", en este caso específico "left".


Fig 9: Ajustes a la tabla de atributos
  • Configurar nuestra animación
Antes de realizar la animación debemos configurar adecuadamente el plugin. Una vez activado el plugin TimeManager, hacemos clic en "Settings", y adicionamos nuestra capa (Add layer), cuidando de seleccionar la columna de datos adecuada.



Fig. 10 Configurando el plugin para la animación


  • Realizar la animación

Ahora si estaría todo listo para realizar la animación, debemos asegurarnos dependiendo de nuestros datos de tiempo, cual sería nuestros intervalos de tiempo, en este caso presentan una diferencia de unos pocos segundos, por lo tanto debemos asegurarnos modificar el "Time Frame Size" y colocarlo cada 1 segundo, podremos comprobar que todo esta listo cuando van a desaparecer algunos puntos, esto demuestra que el plugin si está funcionando, porque visualiza el estado inicial al primer segundo.


Fig. 11: Estado inicial para la animación.

  • Ver los resultados

Como parte final, les voy a mostrar el resultado de la animación en el siguiente vídeo.

video


Bueno, espero que puedan realizar estas aplicaciones mostradas, como siempre espero comentarios o dudas al respecto, no sin antes recomendarles que revisen las referencia que fueron consultadas para realizar esta entrada.


Referencias consultadas:










9 comentarios:

Angel M Felicisimo dijo...

Interesantísimo y potencialmente muy útil. Me queda la duda del procedimiento para recolectar tuits ¿es posible filtrar por "hashtag", por ejemplo? ¿o por zonas? Saludos

Carlos Carbajal dijo...

Hola Angel, tal como lo mencionan en una de las referencias, este plugin es experimental, todavía no tiene la opción de seleccionar por zonas, en cuanto al filtrado, creo que sería cuestión ya de trabajarlo a nivel de la tabla de atributos una vez recolectado los tweets.

Angel M Felicisimo dijo...

Gracias, a ver si lo introducen porque sería casi imprescindible para seguir un fenómeno concreto sin descargar millones de tuits para luego descartar la inmensa mayoría. Saludos.

Dani Maté dijo...

Muy bueno el post. Aunque conseguir instalar tweepy en el python que lleva qgis es una tortura china hasta que das con la tecla. Deberías hacer otro post con el procedimiento para que la gente no se vuelva loca.

Saludos.

Carlos Carbajal dijo...

Es una buena sugerencia Dani, a mi también me fue complicado al inicio, voy a tomarlo en cuenta para posteriores entradas.
Saludos,

Pablo Schweitzer dijo...

Hola
Muy buen artículo, pero no logro hacerlo funcionar... el qgis se queda congelado al intentar bajar aunque sea 1 solo tweet.. "collecting tweets0from 1"
Garcias!
Pablo

Carlos Carbajal dijo...

Estimado Pablo, pueden ser varias cosas, como por ejemplo la extensión de mapa que empleas para la captura o también la cantidad de tweets que indicaste.

José Dugarte Laguado dijo...

Excelente artículo Carlos, sin embargo recomendaría hacer un nuevo post en donde se indique paso a paso la configuración de los plugins, hasta el momento no he podido lograr el proceso, puesto que me sale un mensaje de error con respecto a la instalación de twitter, he revisado en algunos foros referentes al tema y muestran soluciones alternativas pero que al momento de aplicarlas no se hacen efectivas. De verdad te felicito, este es un excelente blog. Espero estemos en contacto pronto.

Carlos Carbajal dijo...

Agradezco tus comentarios estimado José, aunque lamento que no hayas podido terminar de realizar el proceso. Te confieso que también me gustaría publicar más post, sobre todo aquellos en donde he visto tienen mayor acogida, aunque el tiempo que tengo es ahora más limitado.

Saludos,

Carlos