ZGZagua, mi proyecto para AbreDatos 2011
Este año he decidido participar en el desafío AbreDatos 2011. AbreDatos es un concurso de programación que consiste en desarrollar una aplicación en 48 horas, con la característica de que esta aplicación debe utilizar en su funcionamiento una o varias fuentes de datos de organismos públicos.
¿Qué es ZGZagua?
ZGZagua es una aplicación que notifica los cortes de agua previstos en la ciudad de Zaragoza a los usuarios que hayan dado de alta alertas. Esta información se obtiene a partir de los datos proporcionados por el Ayuntamiento de Zaragoza a través de geoRSS en http://www.zaragoza.es/georss/feed?id=0. Una vez obtenidos los datos de los cortes, se cotejan las direcciones con las alertas registradas por los usuarios, y si hay coincidencia, se notifica al usuario vía e-mail.
¿De dónde surge la idea?
La idea surge de una situación que nos ha pasado a la gran mayoría: una mañana te levantas, abres el grifo y no hay agua. Cuando me pasó acudí enseguida en busca de información, y encontré que el Ayuntamiento publicaba estas incidencias en su web. Si bien hay que facilitar al Ayuntamiento de Zaragoza por la publicación que hace de muchos de sus datos y la cantidad de formatos en los que se puede acceder a ellos, entrar cada día para ver si te van a cortar el agua puede ser una ardua tarea, por lo que pensé que sería mucho más sencillo que una aplicación leyese esta información por ti y, si coincidía con tu dirección, te mandase un correo de aviso. Es ahí donde surgió la idea de ZGZagua.
¿Qué funciones tiene?
Como he dicho, la principal función de la aplicación es notificar a los usuarios vía correo electrónico cuándo se producirá un corte de agua en una o varias de las alertas que previamente han configurado. Para ello, hay que registrarse en la aplicación con una dirección de correo electrónico, que será la que se utilice para las notificaciones, y configurar todas las alertas que queremos que se nos notifiquen.
Además, contacté con el ayuntamiento para ver si había alguna forma de obtener un histórico de cortes de agua. Hasta el momento no existía tal posibilidad, pero a raíz de esta petición habilitaron un servicio que proporciona un máximo de 50 incidencias entre dos fechas pasadas como parámetro. A este servicio se puede acceder a través de http://www.zaragoza.es/georref/rdf/hilo/verHistorico_Incidencias?id=0&fechainicio=10/10/2010&fechafin=10/12/2010&srsname=wgs84.
Las dificultades
Pese a tener los ingredientes para la receta, por desgracia no todo era tan fácil como leer, comparar y notificar. Las principales dificultades que encontré fueron las siguientes:
- Las librerías más comunes para leer xml desde php no reconocen las coordenadas de geoRSS, por lo que tuve que recurrir al uso de otras librerías y la identificación de otros namespaces en el propio documento para extraer estos datos.
- Las fechas de las incidencias no eran homogéneas, y las más antiguas tenían formatos distintos o errores que tuve que tratar prácticamente uno por uno.
- Con los nombres de las calles pasa lo mismo: la misma calle puede tener varios formatos de nombre. Esta falta de homogeneidad, así como la no coincidencia con un callejero oficial, es el mayor problema que he encontrado a la hora de desarrollar esta aplicación, y sin duda será el que más fallos cause a largo plazo, ya que puede provocar que se notifique a usuarios que han dado de alta una alerta con un nombre similar de vía o bien que no se les notifique por figurar un nombre distinto en la incidencia creada por el ayuntamiento.
- El tiempo: todos los informáticos sabemos que el tiempo siempre es una característica más del proyecto. En este caso el plazo de 48 horas me resultó muy corto para desarrollar toda la aplicación (era el único componente del equipo). Esto me impidió mejorar funciones como el login de usuarios (en principio debería poder hacerse desde Facebook, Twitter, etc, pero sólo me dio tiempo a implementar servicios compatibles con openID, en concreto Google y Yahoo). Además, con mayor plazo hubiese podido mejorar la función de análisis sintáctico para la identificación de coincidencias en los nombres de vías, así como crear más informes sobre datos históricos con mapas con clusters de marcadores y mejorar otros aspectos no tan importantes como las hojas de estilo, pero el plazo es el que es y ahí está el fundamento del desafío.
Como conclusión final, diré que no me arrepiento de haber participado, ha sido una experiencia interesante (a la par que un poco estresante) pero bonita. Ayer cuando apagué mi portátil apenas pasadas las 12 de la noche (hora a la que terminaba el plazo) casi sentí hasta un poco de pena. De todas formas, hubiese preferido sin duda alguna contar con más integrantes en el equipo, a ver si el año que viene es posible.
Próximamente os contaré más sobre la aplicación.
Un saludo.
Comentarios recientes