Hace cosa de un mes que escribí y me publicaron un guest post en el blog de CartoDB: Mapping food banks in Spain with CartoDB, en el que explicaba como hice mi pequeño proyecto sobre los Bancos de Alimentos.
Si ya me cuestan mis esfuerzos el escribir, mi inglés es bastante flojo, por lo que lo escribí antes en castellano para centrarme en lo que quería explicar y dejar para después la traducción y revisión. En fin, que lo dejo a continuación en castellano.
Hace ya cosa de un par de meses que me propuse buscar información de bancos de alimentos, tras navegar bastante por ahí tan sólo encontré un listado de los miembros de FESBAL (Federación Española de Bancos de Alimentos). Pero mi principal era tratar de recopilar el máximo, fueran de esa federación, de organizaciones religiosas o totalmente autogestionados.
No me gusta la caridad, una cita que leía hace poco de Eduardo Galeano decía: "A diferencia de la solidaridad, que es horizontal y se ejerce de igual a igual, la caridad se practica de arriba-abajo, humilla a quien la recibe y jamás altera ni un poquito las relaciones de poder". Estando de acuerdo y viendo que la solidaridad por parte del estado es más bien poca, más importante es que alguien pueda tener un plato en su mesa, aunque sea por caridad.
En fin, la cosa es que a esto se sumaba que hacía tiempo que conozco CartoDB y tenía pendiente probarlo en algún momento, y esto encajaba a la perfección. Debo decir que no pasarían de las 2 horas desde que tuve los datos en crudo hasta que tenía hecho el mapa y lo tenía integrado con la web hecha con Sinatrarb.
Obteniendo los datos
Para empezar estuve haciendo un web scraper de la web de FESBAL con python (usando Mechanize y BeautifulSoup) para generar un CSV con todos los datos[1] en crudo para poderlo importar a una tabla de CartoDB.
Importando los datos a CartoDB
Una vez en el dashboard de CartoDB, simplemente tuve que crear una nueva tabla importando datos desde ese CSV. Una vez procesados los datos utilizando la opción de georeferenciación automática de las direcciones de cada banco de alimentos (tuve que arreglar unas pocas a mano al ser direcciones un tanto extrañas).
Dándole estilo a la visualización
Y luego crear la visualización a partir de esa tabla, para jugar con el wizard de visualizaciones. Elegir el estilo de los marcadores, el contenido de los infowindow, los tiles del mapa...
Una vez teniendo la visualización la incrusté en una pequeña web hecha con sinatrarb y Foundation CSS para darle la estructura.
Usando el API de CartoDB
En esta web también hay una integración (bastante simple) con el SQL API para mostrar el forma de listado los banco de alimentos y el poder añadir más por parte de los visitantes. Desde luego que es un API para que el que teniendo tiene mucho potencial a nada que se tengan conocimientos de SQL y manejar mínimamente las respuestas en JSON.
Para el listado se muestran sólo los que estén georeferenciados, cosa que se hace desde la gestión de tablas de cartoDB, de este modo sirve también de moderación de contenidos: si no está georeferenciado no aparece en el mapa ni en el listado.
Aunque no se conozca mucho Ruby, el código es bastante explicativo:
El añadir nuevos bancos de alimentos, también resulta bastante evidente con unos mínimos conocimientos de SQL, como puede verse en este snippet de código:
El resultado se puede ver en http://bancosdealimentos.herokuapp.com/, mientras que tanto el código de scraping como de la aplicación Sinatra están disponibles para su libre consulta y uso en mi cuenta de Github.