Aire-Madrid icon indicating copy to clipboard operation
Aire-Madrid copied to clipboard

Aire Madrid es una aplicación para poder ver los datos de la calidad del Aire de Madrid en tiempo real.

shieldsIO shieldsIO shieldsIO shieldsIO

Aire-Madrid

Aire Madrid es una aplicación para poder ver los datos de la calidad del Aire de Madrid en tiempo real.

Este proyecto es una extensión de un post que publique hace unos meses en mi blog sobre la posibilidad de utilizar datos abiertos facilitados por parte de las diversas instituciones en España.

AireMadrid Captura

Objetivo:

El objetivo de esta web es mostrar los datos que ofrece el ayuntamiento de Madrid a través de su portal de datos abiertos sobre la calidad del aire en tiempo real de una manera fácil y comprensible por un usuario no técnico.

Obtención de datos

Los datos en los que se basa esta aplicación son obtenidos directamente de un archivo .txt totalmente plano. La última versión oficial

Análisis y enriquecimiento de datos

Los datos en el estado original no son de gran utilidad para el público en general.

La información es descargada y se enriquece de manera transparente. Detalles sobre el enriquecimiento

Una vez los datos están listos, cada hora se suben a esta base de datos en Firebase.

Lectura de datos

Los datos de la base de datos son descargados en este portal donde se muestran al público divido entre el resumen (datos media de la red) y las estaciones:

Nota: Algunas estaciones presentan pocos datos, y algunos datos clave de la media como la temperatura máxima no están presentes.

Geolocalización

Desde esta versión (2.0.0) ya está disponible un sistema de geolocalización que se ejecuta en aquellas rutas que lo requieran.

API

Desde esta versión (2.0.0) ya están disponibles las rutas para el uso de AJAX. Todos los datos están provistos en formato .json, CORS esta habilitiado con lo que se pueden hacer peticiones desde cualquier dominio.

Rutas

Ejemplo

    function peticionAjax(url) {
        var xmlHttp = new XMLHttpRequest();

        xmlHttp.onreadystatechange = function() {

            if (xmlHttp.readyState === 4 && xmlHttp.status === 200) {
                console.info(JSON.parse(xmlHttp.responseText));
            } else if (xmlHttp.readyState === 4 && xmlHttp.status === 404) {
                console.error("ERROR! 404");
                console.info(JSON.parse(xmlHttp.responseText));
            }
        };
        xmlHttp.open("GET", url, true);
        xmlHttp.send();
    }

    peticionAjax("http://airemadrid.herokuapp.com/api/estacion/99");
  • Jquery:
    function peticionJqueryAjax (url) {

	    $.ajax({
	        dataType: "json",
	        url: url,
	    })
	     .done(function( data, textStatus, jqXHR ) {
	         if ( console && console.log ) {
	             console.log( "La solicitud se ha completado correctamente." );
	             console.log( data );
	         }
	     })
	     .fail(function( jqXHR, textStatus, errorThrown ) {
	         if ( console && console.log ) {
	             console.log( "La solicitud a fallado: " +  textStatus);
	         }
	    });
	
	}
	
	peticionJqueryAjax ("http://airemadrid.herokuapp.com/api/estacion/99");

Histórico

Estoy trabajando para lograr transformar los datos de años anteriores, por el momento he centralizado todos los detalles aqui.

También puedes descargarte los datos en bruto desde 2003 hasta 20015.

Colaboración

Este proyecto está abierto a colaboración y mejora por parte de cualquier persona interesada. No dudes en ponerte en contacto conmigo a través de este repositorio o mi cuenta de Twitter.

Anécdotas

Todo el backend desde la versión Beta hasta la versión 2.0.0 se ejecutaba (descargar, enriquecimiento y subida de datos a Firebase) desde una Raspberry Pi dentro de un grifo de Murphy's El grifo