Usando QGIS para conocer cuál es el banco con mejor cobertura en Barcelona

¿Podemos saber cuál de los bancos en Barcelona dispone de la mejor cobertura? En este post intentaremos responder esta pregunta a partir de los datos geográficos de OpenStreetMaps y QGIS.

Para empezar, definamos lo que entenderemos por mejor cobertura: un banco tiene mejor cobertura mientras más baja sea la distancia media desde un punto aleatorio de la ciudad hasta las 3 sucursales más cercanas.

Esta definición nos pide que tengamos tres componentes: una lista de puntos aleatorios en la ciudad de Barcelona, una lista con las ubicaciones de las agencias de los diferentes bancos y un programa para calcular la agencia más cercana a cada uno de los puntos aleatorios.  

QGIS y OpenStreetMap para obtener los datos geográficos

QGIS es una herramienta de software libre para el tratamiento de datos geográficos que nos permite conectarnos a diferentes fuentes así como realizar análisis muy variados.

Los datos geográficos de la ciudad de Barcelona los podemos obtener de OpenStreetMap. Para ello, primero creamos una conexión XYZ desde el menu del browser colocando la siguiente dirección como URL: https://tile.openstreetmap.org/{z}/{x}/{y}.png

Una vez creada la conexión, añadimos la capa al proyecto y obtendremos el mapa de OpenStreetMap en la ventana:

Para definir Barcelona en este mapa, podemos añadir una capa poligonal al proyecto donde definamos manualmente lo que queremos que sea Barcelona. Para esto hay que ir al menú Layer > Create Layer > New Shapefile Layer:

Una vez creada la capa, si la seleccionamos con click derecho y clicamos en Toggle Editing nos aparecerá la opción de añadir un polígono con el cual podremos dibujar en la capa lo que queremos delimitar como Barcelona:

Este polígono nos servirá tanto para generar puntos aleatoriamente en su extensión como para hacer las consultas a OpenStreetMap. Podemos hacer consultas a la base de datos de OpenStreetMap a través de QuickOSM, un plugin de QGIS para interactuar con esta página. Una vez instalado QuickOSM, presionando la lupa con fondo verde que nos aparece en la barra de herramientas, podemos realizar la consulta y convertirla en una capa extra en nuestro proyecto:

QuickOSM puede generar 2 capas, una para las observaciones que están almacenadas como polígonos y otra con las observaciones almacenadas como puntos.

Para utilizar la capa de polígonos podemos extraer el centroide de cada uno de los polígonos y unirla a la capa de puntos. Esto se puede lograr a través de la herramienta de centroides de QGIS que se encuentra en Vector > Geometry Tools > Centroids, la cual nos generará una nueva capa con los centroides y las características asociadas.

Finalmente, debemos unir la capa de puntos y la de centroides. Para esto, usamos Vector > Data Management Tools > Merge Vector Layers y proporcionamos las dos capas que queremos unir. El algoritmo hará la unión y creará una nueva capa llamada Merged:

QuickOSM puede en ocasiones generar puntos fuera del área que habíamos delimitado con nuestro polígono trazado a mano. Para lidiar con estos puntos basta con utilizar la herramienta de selección y borrar los puntos seleccionados. Hay que recordar que, para poder usar la herramienta de selección, se debe tener seleccionada una capa en la ventana de capas y activar la edición de la misma:

Como vemos, ahora tendremos una capa cuyos puntos coinciden en el mapa con los bancos:

Los puntos aleatorios los podemos generar en el menú Vector > Research Tools > Random Points Inside Polygon:

Ahora debemos crear una capa con las agencias de cada uno de los bancos por separado. Nos centraremos en 4 bancos: BBVA, Caixabank, Sabadell y Santander. Para quedarnos con los puntos de cada uno de estos bancos, duplicamos la capa de bancos 5 veces y las renombramos con los puntos del banco que nos quedaremos en cada una. Luego hacemos clic derecho sobre la capa y clic en Open Attribute Table, seleccionamos las observaciones que no son del banco que queremos en la capa y las eliminamos.

Modificando los colores deberíamos tener un mapa como este:

Calculando la distancia para conocer el banco más cercano

Con nuestros puntos aleatorios ya podemos calcular la distancia desde cada uno de esos puntos a la agencia más cercana de cada banco. Para ello, vamos a hacer una matriz de distancias que compare cada una de nuestras capas de banco con los puntos aleatorios. Esto lo podemos conseguir yendo a Vector > Analysis Tools > Distance Matrix:

Una vez le hayamos dado “Run”, QGIS nos creará una capa con el mismo número de puntos que haya en nuestra capa de puntos aleatorios y con medidas como la distancia media al punto desde los 3 vecinos más cercanos y su desviación estándar:

Después de haber creado cada una de las capas, podemos unirlas usando el mismo procedimiento que implementamos anteriormente. En esta nueva capa añadiremos el valor medio y la desviación estándar de la distancia media (columna “MEAN”) desde cada uno de los puntos aleatorios agrupando por cada uno de los bancos. Para ello, podemos clicar en el ábaco que nos aparece en la parte superior y colocamos las siguientes fórmulas:

Ahora, quedándonos con una línea por banco (solo hace falta que filtremos por InputID igual a 1) y eliminando las columnas innecesarias, podremos ver fácilmente la información que buscábamos:

Vemos que, en general, los bancos analizados tienen una cobertura similar y que, desde un punto aleatorio de la ciudad, podemos encontrar un banco en promedio a un kilómetro de distancia.

Para una lista completa de todos los valores que puedan colocarse en la consulta véase este enlace.

Hasta aquí nuestro post de hoy. Si te ha parecido interesante, te animamos a visitar la categoría Data Analytics para ver todos los posts relacionados y a compartirlo en redes con tus contactos. ¡Hasta pronto!
Carlos Rodriguez
Carlos Rodriguez
Artículos: 10