lunes, 31 de marzo de 2014

Uniendo datos de la Wikipedia y LocaliData usando Open Refine

Wikipedia image

¿Cuántas veces habéis usado la Wikipedia para buscar datos que os interesaban? Sí, ya lo sabemos, muchas veces... Y no, hoy no os vamos a decir que la abandonéis porque tenemos todos sus datos en nuestra API... Entre otras cosas porque os estaríamos engañando...

Lo que os vamos a contar hoy es cómo utilizar datos de la Wikipedia como fuente para buscar más información en nuestra API, y así tener datos mucho más completos, procedentes de diversas fuentes. Eso sí, para poder seguir mejor este post es importante que hayáis practicado un poquito con Open Refine. Hay muy buena documentación en su website.

Así que vamos a empezar proponiéndonos la siguiente historia: "partimos de la lista de barrios de Madrid que tiene la versión española de Wikipedia, y queremos, para cada uno de ellos, saber el número de locales comerciales que tiene, así como su población, para mostrar toda esta información conjuntamente en alguna aplicación".

La verdad es que podríamos sacar esta lista de barrios directamente desde nuestra API (sí, tenemos una llamada que permite, dado un municipio como Madrid, obtener un listado de todos sus barrios)

Vamos, que podemos hacer la siguiente llamada y tener ya toda la información que necesitamos:
http://datos.localidata.com/recurso/territorio/Provincia/Madrid/Municipio/madrid/Barrio?api_key=<<API KEY>>

Y además, para obtener la información ampliada podemos usar la vista ampliada
http://datos.localidata.com/recurso/territorio/Provincia/Madrid/Municipio/madrid/Barrio?_view=ampliada&api_key=<<API KEY>>

Pero como en muchas ocasiones tenemos que comenzar con datos procedentes de alguna Web, esto es lo que vamos a aprender hoy. Vayamos paso por paso:

Paso 1. Obtener el listado de barrios de Madrid de Wikipedia y cargarlo en Open Refine

Simplemente buscando en la Web "barrios de Madrid Wikipedia" obtenemos una URL que nos proporciona un listado de barrios de Madrid.

Vamos a abrirlos en Open Refine, que previamente habremos tenido que instalar en nuestro ordenador. Normalmente, podremos acceder a Open Refine en la siguiente URL: http://127.0.0.1:3333/. A continuación creamos un proyecto y especificamos la URL de Wikipedia.

Cuando seleccionamos "Next >>" se cargará esta página de Wikipedia, y entonces tendremos que seleccionar como formato de la entrada XML y seleccionaremos la lista que contiene los barrios de Madrid como un listado, tal y como se muestra en la siguiente figura:

Una vez seleccionada la parte del código fuente HTML en la que estamos interesados, aparecerá algo parecido a lo que vemos en la siguiente figura:

Así que le podemos dar un nombre a nuestro proyecto (por ejemplo, BarriosDeMadrid) y comenzamos a trabajar con el proyecto.

Paso 2. Limpiando los datos que hemos obtenido de Wikipedia

Vamos a hacer las siguientes operaciones para limpiar estos datos:
  1. Hay varias columnas que podemos eliminar (la primera, la cuarta y la última), de tal manera que nos quedaremos sólo con las columnas del nombre del barrio y la página Wikipedia correspondiente. Para ello, seleccionamos en el menú de cada una de estas columnas la opción "Edit Column -> Remove this column".
  2. Las dos columnas que nos quedan las podemos renombrar, para que sea más sencillo tratar con ellas. Para ello, seleccionamos en el menú de cada una de estas columnas la opción "Edit Column -> Rename this column". Las vamos a llamar "Nombre" y "URL Wikipedia"
  3. También conviene quitar lo de "(Madrid)" de algunos de los barrios, para lo cual podemos seleccionar en el menú de la columna "Nombre" la opción del menú "Edit Cells -> Transform...", y realizar la transformación siguiente: value.replace("(Madrid)","").trim().
El resultado de realizar estas tres operaciones es el que se muestra en la siguiente figura:

Paso 3. Obteniendo los datos de nuestra API

Teniendo en cuenta que para obtener datos de cada uno de los barrios, las URIs de nuestra API se construyen con el siguiente patrón:
http://datos.localidata.com/recurso/territorio/Barrio/label/<<nombreBarrio>>?api_key=<<API Key>>

y que para obtener más datos del barrio (como los que estamos interesados en obtener para cada barrio) tenemos que usar la vista ampliada, deberíamos crear para cada barrio URIs del siguiente tipo:
http://datos.localidata.com/recurso/territorio/Barrio/label/<<nombreBarrio>>.json?_view=ampliada&api_key=<<API Key>>

Lo que podemos hacer es, en la columna "Nombre", seleccionar la opción de menú "Edit Column --> Add column based on this column...", y crear una nueva columna "URI LocaliData" con el siguiente valor: "http://datos.localidata.com/recurso/territorio/Barrio/label/"+escape(value,"url")+".json?_view=ampliada". Hay que tener en cuenta que aplicamos la función escape() sobre el valor del barrio para que se traten correctamente los valores con espacios en blanco, la ü de Argüelles, etc.

Como resultado de estas operaciones, obtendremos lo que aparece en la siguiente figura:

Paso 4. Ejecutando las llamadas a nuestra API

Ahora es el momento de ejecutar las llamadas a nuestra API para obtener los datos de cada uno de los barrios de Madrid. Para ello, en la columna "URI LocaliData" vamos a la opción "Edit Column --> Add Column by Fetching URLs...", que llamará a la URI correspondiente para cada una de las filas de nuestro fichero (139 de momento). Le daremos a la columna el nombre "Resultado LocaliData". Y para no saltarnos las limitaciones en el número de llamadas que cada usuario puede hacer por minuto a nuestra API, pondremos como opción de "throttle" un valor de 1000 milisegundos. La expresión a utilizar sera value+"&api_key=<<API KEY>>".

Después de un par de minutos obteniendo resultados de las 139 llamadas que se realizan a nuestra API, tendremos algo parecido a lo que se muestra a continuación.

Si facetamos sobre la columna recién obtenida, podemos ver que hemos conseguido encontrar resultados para 79 de los 139 barrios. Aunque en primer lugar debemos tener en cuenta que el número de barrios que actualmente tiene Madrid es de 128. Aunque parezca un número bajo, hay que tener en cuenta que la lista que obtuvimos en Wikipedia contenía barrios que realmente no son considerados barrios oficiales de Madrid (por ejemplo, Chueca, Ciudad Pegaso, La Rosilla, Covibar - que pertenece a Rivas-Vaciamadrid -, etc.). 

En otro post os contaremos cómo podemos mejorar ese número.

Paso 5. Obteniendo los datos de población total y número de locales a partir de los resultados en JSON

Una vez que ya tenemos todos los datos de los barrios, es el momento de encontrar los datos que estábamos buscando. Para ello, Open Refine proporciona una función para parsear JSON (parseJSON), que nos permite acceder a los datos que nuestra API ha devuelto. Concretamente, podemos crear dos columnas ("Edit Column --> Add Column based on this Column"), utilizando las siguientes dos expresiones:
  • value.parseJson().result.items[0].poblacion
  • value.parseJson().result.items[0].locales


Paso 6. A utilizar los datos...

Bueno, pues ya tenemos los datos que queríamos... Ahora ya podemos hacer lo que queramos con ellos. ¿A alguno de vosotros se le ocurre qué podemos hacer? Quizás podáis conseguir alguna idea viendo alguno de nuestros posts anteriores: con Google Maps, CartoDB, DataWrapper, etc.






domingo, 23 de marzo de 2014

Ya podéis usar el GeoJSON generado por nuestra API para mostrar nuestros datos en Google Maps

Hace sólo unos días Google anunció que se podían incorporar datos en GeoJSON en Google Maps. La verdad es que esto no ha sido ninguna sorpresa, porque ya nos habían dicho algo sobre esto hace un par de semanas en el Linking Geospatial Data Workshop que se celebró en Google Campus London, y donde Alejandro Llaves, uno de los miembros del OEG-UPM, y el que aquí escribe presentamos la aplicación Map4RDF-iOS, desarrollada por el OEG-UPM y utilizando, entre otros, algunos datos de LocaliData. Podéis ver un video breve aquí.

Pues nada, hoy he decidido que sería buena idea enseñaros cómo se puede usar esta nueva funcionalidad de Google Maps para mostrar datos procedentes de nuestra API. Como siempre, con este post añadiremos un vídeo, por si os apetece más verlo en lugar de leer... Aunque os advierto que es mejor que lo leáis, porque así podréis copiar y pegar el texto HTML...

Paso 1. Creamos un HTML muy sencillo para mostrar nuestro mapa

Lo primero que hacemos es crear un HTML sencillo para poder mostrar nuestro mapa. Aquí tenéis el código que podéis copiar y pegar en un fichero con extensión HTML (por ejemplo, mapaGoogle_Paso1.html).

<!DOCTYPE html>
<html>
<head>
<title>Mostrando un mapa con datos de LocaliData</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<style>
html, body, #map-canvas {
height: 100%;
margin: 0px;
padding: 0px
}
</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
var map;
function initialize() {
// Crear un mapa centrado en Madrid y con zoom 12
map = new google.maps.Map(document.getElementById('map-canvas'), {
zoom: 12,
center: {lat: 40.422, lng: -3.709}
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map-canvas"></div>
</body>
</html>



Si abrimos este fichero HTML en nuestro navegador, veremos algo parecido a lo que se muestra en la siguiente imagen:


Paso 2. Buscar los datos que queremos mostrar en el mapa

Esto lo vamos a hacer en nuestra API de datos. Como siempre, tenéis que tener un usuario registrado para poder trastear con nuestra API. Concretamente, hoy vamos a mostrar los barrios del distrito de Salamanca. Así que buscamos cómo encontrar los datos de los barrios de un distrito, y eso lo encontramos en esta llamada:
Así que la llamada a realizar será algo así como:
http://datos.localidata.com/recurso/territorio/Provincia/Madrid/Municipio/madrid/Distrito/label/salamanca/Barrio?api_key=<<API KEY>>

Con esto se obtiene la vista en HTML de los seis barrios del distrito de Salamanca: Castellana, Fuente del Berro, Goya, Guindalera, Lista y Recoletos. Recordad añadir el parámetro api_key para que estos enlaces funcionen, o metedlo en la sesión del navegador.


Ahora ya sólo queda recordar que no estamos interesados en el HTML, sino en la vista en GeoJSON. Si miráis arriba del todo, en el menú de opciones de la derecha, veréis que hay un enlace que pone geojson. Ese es el que queremos, y si pinchamos en él veremos que la URL es algo así como:
http://datos.localidata.com/recurso/territorio/Provincia/Madrid/Municipio/madrid/Distrito/label/salamanca/Barrio.geojson?_sort=label&api_key=<<API KEY>>

Ojo!! No os lo descarguéis. Sólo hace falta copiar la URL (y si no tiene la API Key, hay que recordar también incluirla después.

Paso 3. Añadir una línea al HTML anterior

Sí, basta con sólo añadir una línea para ya tener nuestra visualización en Google Maps... La línea en cuestión es la siguiente:
      map.data.loadGeoJson('http://datos.localidata.com/recurso/territorio/Provincia/Madrid/Municipio/madrid/Distrito/label/salamanca/Barrio.geojson?api_key=<<API KEY>>');



Así de sencillo, así que nuestro HTML quedará como sigue (de nuevo, puedes copiarlo, pegarlo en un editor de texto, guardarlo con extensión HTML y abrirlo en cualquier navegador):

<!DOCTYPE html>
<html>
  <head>
    <title>Mostrando un mapa con datos de LocaliData</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <style>
      html, body, #map-canvas {
        height: 100%;
        margin: 0px;
        padding: 0px
      }
    </style>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
    <script>
      var map;
      function initialize() {
      // Crear un mapa centrado en Madrid y con zoom 12
      map = new google.maps.Map(document.getElementById('map-canvas'), {
                 zoom: 12,
                 center: {lat: 40.422, lng: -3.709}   
                });
      // Cargar el GeoJSON con los datos correspondientes al distrito de Salamanca
      map.data.loadGeoJson('http://datos.localidata.com/recurso/territorio/Provincia/Madrid/Municipio/madrid/Distrito/label/salamanca/Barrio.geojson?api_key=<<API KEY>>');
      }
      google.maps.event.addDomListener(window, 'load', initialize);
    </script>
  </head>
  <body>
    <div id="map-canvas"></div>
  </body>
</html>


Así que una vez que lo abrimos nos deberían salir nuestros polígonos...
¿Qué ha pasado? Vaya, no funciona... ¿Por qué será?

Claro, es que se nos había olvidado que si queremos ver polígonos, tendremos que decirle a nuestra API que le pase los datos a Google a través de la vista de coordenadas, en lugar de sólo pasarle el nombre y código del barrio. Así que realmente el HTML que tenemos que generar es el siguiente (fijaos en la pequeña diferencia en lo que ponemos dentro de la función loadGeoJson. Es lo que está en negrita.

<!DOCTYPE html>
<html>
  <head>
    <title>Mostrando un mapa con datos de LocaliData</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <style>
      html, body, #map-canvas {
        height: 100%;
        margin: 0px;
        padding: 0px
      }
    </style>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
    <script>
      var map;
      function initialize() {
      // Crear un mapa centrado en Madrid y con zoom 12
      map = new google.maps.Map(document.getElementById('map-canvas'), {
                 zoom: 12,
                 center: {lat: 40.422, lng: -3.709}   
                });
      // Cargar el GeoJSON con los datos correspondientes al distrito de Salamanca
      map.data.loadGeoJson('http://datos.localidata.com/recurso/territorio/Provincia/Madrid/Municipio/madrid/Distrito/label/salamanca/Barrio.geojson?api_key=<<API KEY>>&_view=coordenadas');
      }
      google.maps.event.addDomListener(window, 'load', initialize);
    </script>
  </head>
  <body>
    <div id="map-canvas"></div>
  </body>
</html>


Y ahora ya sí que podemos verlo todo bien:

Paso 4. Ahora os toca a vosotros...

¿Os atrevéis a hacerlo con otro distrito, con otros barrios, con secciones censales o con cualquier otro de nuestros datos? Nos encantaría recibir vuestras visualizaciones...




lunes, 17 de marzo de 2014

Incorporando información de los distritos de Madrid en CartoDB (I)

Escribimos este post por votación popular...

Hay varias personas que nos han contactado recientemente para que les contáramos cómo podían incorporar información de nuestra API en CartoDB. Antes de seguir, simplemente decir que CartoDB es una aplicación creada por la empresa Vizzuality, que permite visualizar con bastante facilidad datos en un mapa.

Pues aquí van algunos detalles sobre cómo hacerlo (si en lugar de leer, o además de leer, preferís ver un vídeo explicativo, aquí tenéis más o menos lo mismo. Comenzamos pidiéndole a nuestra API que nos enseñe un listado de los distritos de Madrid (obviamente, lo que os contamos aquí vale también para barrios, secciones censales, locales comerciales y prácticamente cualquiera de los elementos que os ofrecemos en nuestra API).

La llamada que tenemos que hacer tiene la siguiente pinta:
http://datos.localidata.com/recurso/territorio/Provincia/Madrid/Municipio/madrid/Distrito?_sort=label&_page=0&_pageSize=25&api_key=<TU API KEY>

Daos cuenta de que hemos establecido el tamaño de la página en 25 registros (más que suficiente, porque en Madrid hay 21 distritos). Lo que obtenemos es algo parecido a lo que mostramos en la siguiente figura:

Esta es la visualización básica de estos datos en HTML, pero aún no contiene ninguna coordenada geográfica, lo que va a hacer bastante complicado que visualicemos nuestros datos en ningún mapa... Para conseguir obtener los distritos con sus coordenadas tendremos que seleccionar la vista de coordenadas, añadiendo a la URL anterior lo siguiente: _view=coordenadas, con lo que obtendremos lo siguiente:

Es decir, ahora también tenemos un atributo con la geometría de cada uno de los distritos (de hecho, nuestra API para Madrid ofrece dos geometrías, una en el sistema de coordenadas EPSG23030 - UTM 30N - y otra en el sistema de coordenadas EPSG4326 - WGS84 -). Para los que no se quieran meter con todo este detalle, nos basta con saber que la segunda es la que podemos utilizar cuando hablamos de latitudes y longitudes, que es lo que estamos acostumbrados a utilizar con nuestro GPS.

Sin embargo, todavía no podemos importar los datos en CartoDB, porque lo que estamos mostrando no es más que los datos en HTML. Lo que realmente nos interesa es que se puedan mostrar en un formato que sea aceptado por CartoDB, así que vamos a hacer click en el enlace que tenemos al formato geojson (en la lista de enlaces que están arriba a la derecha). Con esto no hacemos otra cosa que mostrar la información en GeoJSON, que es uno de los formatos para representar datos geográficos que le encantan a CartoDB. Nos saldrá algo así:

Ahora podemos hacer dos cosas: 
Así que ya estamos preparados para entrar en CartoDB e importar la información de nuestros distritos. Para ello, entramos en CartoDB con nuestro usuario (en mi caso, por ejemplo, http://ocorcho.cartodb.com), le decimos que queremos crear una nueva tabla, le especificamos o bien el fichero que hemos guardado o bien la URL anterior, como se muestra en la siguiente imagen...

Y en unos segundos aparecerá la tabla de los 21 distritos de Madrid con sus coordenadas en la columna the_geom (la utilizada por defecto por CartoDB para expresar información de coordenadas geográficas) y toda la información adicional que tenía la vista que hemos seleccionado en nuestra API como se muestra a continuación.


A partir de este momento, ya se puede trabajar en CartoDB configurando las visualizaciones, para por ejemplo conseguir la que mostramos a continuación (seleccionando Map view, y seleccionando las columnas código, _about y label para que se visualicen cuando se pinche en cualquier polígono).


En un próximo post os contaremos algunas cosas más que se pueden hacer con estos datos en CartoDB, y con algunos más que podemos obtener de nuestra API. Stay tuned

Aquí, de nuevo, un enlace al vídeo que tiene más o menos los mismos contenidos que este blog post, por si os apetece verlo en un par de minutos:


viernes, 14 de marzo de 2014

Actualización de nuestra API


Acabamos de actualizar nuestra API (http://datos.localidata.com). Nuestra intención en las actualizaciones es añadir nuevas mejoras, corregir algún bug (siempre se nos escapa alguno) y que sea totalmente compatible con la anterior versión.

Las mejoras son las siguientes:
  • Hemos añadido como parámetros el nombre de la Provincia y del Municipio. Estamos cargando datos distintos municipios y con este cambio podréis acceder a esta información igual que lo hacéis con Madrid, simplemente cambiando el nombre del municipio y/o de la provincia.
  • Nueva vista "tabla": ha surgido la necesidad de devolver los datos sin filas repetidas. Lo normal en el formato csv es que se repitan las filas cuando hay un valor múltiple ("límites", "igual que",..). Con esta vista eliminamos las propiedades que puedan tener este tipo. Solo existe si el dato que solicitamos tiene ese tipo de propiedades.
  • Estadísticas por "método" en el portal del desarrollador. hemos agrupado nuestras URIs en cuatro grupos: "comercio", "economía", "estadística" y "territorio". Ahora podemos ver las peticiones a nuestra API agrupadas.
Los bugs solucionados son estos:
  • Rendimiento en algunas consultas.
  • Correción en la desreferenciación en nuestras URIs.
Si tenéis alguna sugerencia, mejora o habéis cazado alguna incidencia no dudéis en contárnoslo. Podéis hacerlo desde el foro en nuestro portal del desarrollador.

lunes, 10 de marzo de 2014

Visualizando los datos de nuestra API con Datawrapper

Cuando por fin tenemos los datos que necesitamos, lo normal es querer visualizarlos utilizando algún tipo de gráfico.

Esta semana os enseñamos cómo usar la herramienta "Datawrapper" con los datos de nuestra API. Esta herramienta es capaz de generar "al vuelo" las representaciones gráficas más comunes, para que puedas compartirlas o incrustarlas en cualquier web de forma rápida y eficaz.

Os vamos a explicar paso a paso el proceso para poder visualizar nuestros datos con esta aplicación web. Si queréis ver todos los pasos en vídeo podéis pulsar aquí.

Primero necesitamos conseguir los datos, nosotros para eso lo tenemos fácil. Nos vamos a la API de Localidata, y vemos cómo obtener los datos de los distritos de Madrid.



La URI por defecto es esta:

http://datos.localidata.com/recurso/territorio/Provincia/Madrid/Municipio/madrid/Distrito?api_key=API_KEY

La "tuneamos" un poco, le voy a añadir un tamaño de página de 50 (hay menos distritos), y la vista "tabla":

http://datos.localidata.com/recurso/territorio/Provincia/Madrid/Municipio/madrid/Distrito?api_key=API_KEY&_pageSize=50&_view=tabla

Además queremos los datos en formato "CSV" así que la URL final sería esta:

http://datos.localidata.com/recurso/territorio/Provincia/Madrid/Municipio/madrid/Distrito.csv?api_key=API_KEY&_pageSize=50&_view=tabla

Ahora nos vamos a la web de Datawrapper: https://datawrapper.de

Aunque podemos crear una visualización sin estar registrados luego no podremos compartirla, por lo que mejor nos damos de alta. 

Una vez registrados, en el menú superior pulsamos en la opción "Crear Gráfico":

Paso 1: Subida de datos

Aquí tenemos varias opciones, nosotros lo que hacemos el pulsar en el botón "...o Sube un archivo CSV" y en lugar de seleccionar un fichero, le pegamos nuestra "URL". Tardará unos segundos pero obtendrá todos los datos. Automáticamente estaremos en el paso 2.

Paso 2: Revisar & Describir



En este paso podemos ir columna a columna y pulsando en la esquina superior derecha de cada una, configurar el formato de cada una. También podemos ocultarla si no la queremos utilizar. 

Estos son los cambios que hemos hecho por aquí:
  1. Ocultamos la primera columna
  2. La columna "Área" la dejamos con tres decimales
  3. Ocultamos las columnas "Código" y "Código Alternativo".
  4. La columnas "Densidad comercial" y "Densidad de población" también con tres decimales.
  5. Ocultamos la columna "Municipio" y "Municipio > URI".

Siguiente paso.

Paso 3: Visualizar

En parte izquierda veremos una primera visualización de nuestros datos. Podemos cambiar de valor a través de la lista desplegable para ver como varían los datos. También podemos especificar el tamaño de nuestro gráfico si se nos queda pequeño.


En la parte derecha aparecen tres pestañas que usaremos para completar la visualización: 

a) "Selección de gráfico": nosotros vamos a quedarnos con el gráfico de Barras y dejaremos el "layout" por defecto.


b) "Refinar el gráfico": aquí podemos elegir los colores que utilizaremos y opciones de orden automático y escala (dependiendo del gráfico seleccionado tendremos diferentes opciones).




c) "Cuenta tu historia": Aquí podremos poner el título a nuestro gráfico y cumplimentar la información extra de nuestro gráfico.



Pulsamos el botón "Publicar" y ...

Paso 4: Publicar e Incrustar

Nuestro gráfico ya está publicado. A la derecha podremos ver y jugar con nuestro gráfico.



Y a la izquierda se nos generará el código par incrustar nuestro gráfico en cualquier web, e incluso una "URL" Corta para compartir nuestro gráfico.



En nuestro caso, el enlace es este:

http://cf.datawrapper.de/eFDbs/1/

Como podéis ver con servicios como este, podéis sacar mucho partido a nuestros datos.

Aquí está el vídeo que hemos enlazado arriba, por si queréis ver todo el proceso.




lunes, 3 de marzo de 2014

Incorporando datos de locales comerciales en Aluche en Excel (I)

Hoy comenzamos una pequeña serie de posts para mostraros cómo se puede enlazar nuestra API con una herramienta que muchos utilizamos casi a diario, como Microsoft Excel. Bueno, para aquellos a los que os gusta OpenOffice o LibreOffice también os enseñaremos cómo hacerlo, que no tenemos acciones de Microsoft ;-).

El ejemplo lo vamos a hacer con los datos de locales comerciales de un barrio de Madrid. Y como soy yo quien elige el barrio, vamos a hacerlo con Aluche (porque me recuerda los tiempos que pasé de pequeño allí con mis abuelos y porque tanto Juan Carlos como yo estamos muy unidos a algún que otro pueblo de Toledo, y en Aluche abundan calles con sabor toledano).

Así que empezaremos como siempre, metiéndonos en nuestro portal de datos (si todavía no habéis creado vuestro usuario, ya va siendo hora, jeje) y buscando la llamada a la API que debemos usar.

Hay varias posibilidades para obtener información de Barrios (de hecho, hay una sección entera de la API dedicada a sacar información de barrios). Pero no estamos tan interesados en los barrios como lo estamos en los locales comerciales que están en el barrio, así que la llamada que estamos buscando es la siguiente:

http://datos.localidata.com/recurso/comercio/Provincia/Madrid/Municipio/madrid/Local/Barrio/Label/<nombre del barrio>

Por tanto, como siempre, vamos a hacer la llamada correspondiente, y veamos qué obtenemos...

Ahh, como siempre, recordad poner vuestra API_key, que si no no funcionará nada y aparecerá nuestra amiga Mari. Un día os comentaremos más sobre ella.



Bueno, lo dicho, vamos a obtener la lista de locales comerciales en Aluche, y como habrá bastantes, iremos obteniéndolos de 50 en 50 (para eso ponemos el parámetro _pageSize=50). Si no establecemos el número de locales a obtener en cada página, los obtendremos de 10 en 10.
http://datos.localidata.com/recurso/comercio/Provincia/Madrid/Municipio/madrid/Local/Barrio/Label/Aluche?_sort=label&_page=0&_pageSize=50&api_key=<TU API KEY>

Y si vamos cambiando el parámetro _page podremos ir viendo los siguientes 50 (_page=1), y los siguientes 50 (_page=2), y así hasta que ya no haya más locales allá por la página 45 (porque tenemos ahora mismo 2250 locales registrados en el barrio).

Como estamos interesados en importar nuestros datos en Excel, recomiendo que saquemos los datos en el formato CSV (comma-separated values). Así que pincharemos en el enlace que aparece arriba, donde pone csv, y veamos qué sale.


Si nos fijamos en lo que aparece como URL, vemos que ahora nuestra URL original se ha convertido en la misma URL con una extensión .csv. Así que esta es otra forma de obtener un CSV directamente.

Asimismo, según tengamos configurado nuestro navegador nos saldrá algo como lo mostrado en la imagen, o el navegador nos preguntará que si queremos abrir o guardar el archivo. En cualquier caso, guardaremos el resultado como un fichero, con extensión csv. Por ejemplo, Aluche_página1.csv.

A continuación ya podemos importar en Excel. El proceso es sencillo:
  • Abrimos Excel.
  • Creamos un nuevo documento.
  • En el menú Archivo seleccionamos Importar...
  • Seleccionamos Archivo CSV (como se muestra en la figura de abajo)
  • Seguimos los pasos por defecto del importador...
  • Y nuestros datos ya están disponibles para trabajar en Excel.


Y aquí el resultado...



En los próximos posts de esta serie, os contaremos cómo sacar todos los locales comerciales de una sola vez, en un único CSV, y cómo obtener más información de cada uno de los locales comerciales, y no sólo su identificador, rótulo y dirección.