Blog del Máster
en Tecnologías de la Información Geográfica y Ciencia de Datos
Espaciales

Mapa de flujos

Crear un mapa de flujos con QGIS

Los mapas de flujos se utilizan para mostrar líneas de movimiento entre puntos de origen y destino. QGIS no dispone de una herramienta específica para crear mapas de flujos, pero sí cuenta con complementos que pueden utilizarse para este propósito. En esta entrada vamos a mostrar cómo crear un mapa de flujos con QGIS utilizando el complemento Shape Tools disponible en el menú Complementos de QGIS.

Datos que vamos a utilizar

Para este ejemplo vamos a utilizar los datos del Estudio de la Movilidad con Big Data del Ministerio de Transportes, Movilidad y Agenda Urbana (MITMA). Dicho estudio analiza diariamente la movilidad de los residentes en España incluyendo Francia y Portugal. Para ello utiliza como fuente de datos el posicionamiento de los teléfonos móviles.

Estos datos llevan recogiéndose desde 2017 a través de diferentes estudios utilizando tecnologías de Big Data y de inteligencia artificial. Desde el 1 de enero de 2022 se está llevando a cabo un nuevo estudio de movilidad con una mayor desagregación de los datos respecto a estudios anteriores. Los datos de este último estudio comenzaron a publicarse a finales del pasado mes de diciembre y están disponibles en su web en forma de datos abiertos para su reutilización. El proyecto se divide en tres tipos de estudios: estudios básicos, estudios completos y rutas por carretera. Para el caso que nos ocupa vamos a utilizar los estudios básicos los cuales ofrecen diariamente tres tablas diarias: viajes, pernoctaciones y personas a nivel de distrito censal. Estas tablas también se publican con los datos agregados a nivel municipal y de grandes áreas urbanas (GAUS).

Por un tema de protección de datos las unidades territoriales deben contener un mínimo de 5.000 habitantes. Es por eso que los datos relativos a municipios con una población menor son agregados a los muncipios vecinos formando una agregación municiapl (AM). Para saber a que agregación municipal corresponde cada municipio, se puede descargar una tabla de equivalencias entre códigos INE y códigos de zonificación MITMA. También puede descargarse una tabla de equivalencias entre código MITMA y municipio al que corresponde.

Las tablas tienen una periodicidad diaria y son publicadas mensualmente en formato csv. Dada la gran cantidad de datos que contienen pueden pesar entre 1 y 2 GB dependiendo del nivel de agregación de los datos. Para saber más sobre el contenido de estas tablas se puede consultar la página del MITMA anteriormente citada.

Descargar tabla de viajes

Vamos a representar los flujos de desplazamientos totales en un día laborable con origen en la ciudad de Girona y con destino a otros municipios de fuera de la provincia. Para ello, utilizaremos la tabla viajes agregada a nivel municipal. Esta tabla consiste en una matriz de viajes (Origen/Destino) que proporciona el número de viajes y viajes-km para cada combinación de par origen-destino, hora del día, intervalo de distancia de viaje, actividad en origen, actividad en destino y perfil sociodemográfico de los viajeros.

Contenido de la tabla Viajes_municipios

Para este ejemplo hemos descargado la tabla correspondiente al lunes 3 de abril de 2023. Como puede observarse en la imagen anterior, esta tabla contiene más de 1.2.000.000 de filas o registros. Aquellos códigos de municipio con extensión _AM corresponden a agrupaciones municipales.

Crear la tabla de desplazamientos

A continuación creamos una tabla con el número de viajes o desplazamientos con origen en el municipio de Girona y destino fuera de la provincia. Para ello hemos extraído en una nueva tabla aquellos registros con el valor 17079 (código INE de Girona) en el campo origen y con valor diferente a 17 (codigo provincia de Girona) en el campo destino. La nueva tabla ha quedado reducida a tan solo 2475 registros. Esta tabla contiene el número de viajes o desplazamientos a cada municipio fuera de la provincia de Girona desagregados por hora del día, distancia, actividad y otros datos socio-demográficos. Como tan solo nos interesa el total de desplazamientos que se producen a lo largo del día, generaremos una nueva tabla con la suma del campo viajes para cada municipio de destino.. Para ello podemos utilizar la función Estadísticas por categorías.

Sumar el total de viajes por muncipio de destino.

El campo sobre el que calcularemos las estadísticas es el campo viajes, mientras que el campo destino es el que contiene las categorías (municipios) sobre las que queremos calcular el total de viajes o desplazamientos. La tabla resultante nos muestra un registro para cada municipio de destino con todas las estadísticas del campo viajes, de las cuales solo nos interesa el campo sum que es el que contiene el total de desplazamientos a cada municipio.

Resumen estadístico del número de viajes o desplazamientos por muncipio de destino

Por tanto, eliminaremos todos los campos a excepción de los marcados en amarillo en la imagen. De esta manera ya tenemos la tabla de desplazamientos que representaremos como un mapa de flujos.

Descargar las capas de zonificación

Las capas de zonificación contienen las geometrías a las cuales podemos vincular o unir la tabla de desplazamientos de forma que podamos representarlas en forma de mapa. Se trata de archivos en formato shape que pueden descargarse desde el mismo enlace que las tablas de viajes. La zonificación, al igual que las tablas, está disponible a nivel de distrito censal, municipal y GAU (grandes áreas urbanas).

En nuestro ejemplo utilizaremos la zonificación por municipios, la cual a su vez está disponible en dos tipos de geometrías: polígonos y puntos (centroides de los polígonos). Se trata de una zonificación definida por el MITMA y que no coincide exactamente con la delimitación municipa ya que los municipios de menos de 5.000 habitantes forman una agrupación municipal. Las capas de zonificación municipal incluyen además las zonas NUTS-3 para Francia y Portugal. Estos zonas se corresponden, en el caso de Francia, con los departamentos, mientras que en el caso de Portugal se trata de simples grupos de municipios que a nivel estadístico son tratados de forma conjunta.

Descargaremos las dos geometrías disponibles. Los centroides nos servirán para definir las coordenadas de origen y destino de los fllujos de desplazamiento. Los polígonos servirán como base de referencia sobre la que mostrar dichos flujos.

Unir tabla de desplazamientos a la capa zonificación

Una vez hemos descargado la zonificación de municipios unimos la tabla de desplazamientos a la capa de centroides. Para ello utilizaremos la función Unión vectorial de QGIS utilizando destino como campo de unión en la primera y el campo id en la segunda.

Unión de la tabla de desplazamientos a la capa de centroides

Como resultado, la tabla de atributos de la capa de centroides incorpora el campo sum con el número de desplazamientos. Las filas valor nulo indican que el municipio correspondiente no han recibido ningún desplazamiento con origen Girona en el día analizado.

Opcionalmente podemos unir la tabla nombres_municipios.csv a las capas de zonificación de municipios. De esta forma podemos identificar facilmente el nombre de cada municipio o agrupación municipal.

Calcular las coordenadas de los centroides

Para poder generar las líneas de flujos necesitaremos añadir a la tabla de atributos lde la capa centroides las coordenadas de origen y de destino. Con la calculadora de campos de QGIS, calcularemos las coordenadas X, Y de los centroides. La coordenada X será el campo X_Destino, mientras que la coordenada Y será el campo Y_Destino. Además añadiremos los campos X_OrigenY_Origen y copiaremos en ellos las coordenadas X, Y del municipio de origen (Girona)..

Calculo de la coordenada X de los centroides en el campo X_Destino

Una vez calculadas las coordenadas de origen y destino de los centroides, el aspecto de la tabla de atributos será el de la siguiente imagen.

Tabla de atributos de la capa centroides con las coordenadas de origen y destino

El campo id, contiene el código de municipio. El campo Desplazamientos_otros_municipios_sum contiene el número de viajes o desplazamientos a cada municipio o agrupación municipal. Los campos X_Destino e Y_Destino contienen las coordenadas X,Y respectivamente de cada muncipio de destino. Los campos X_Origen e Y_Origen contienen las coordenadas del centroide de Girona y debe repetirse en cada una de las filas. Como se observa en la imagen, la fila correspondiente a Girona está seleccionada en verde y las coordenadas de origen y destino son, obviamente, las mismas. El valor nulo en Desplazamientos_otros_municipios_sum indica que o bien no ha habido desplazamientos a dicho municipio o bien se trata de un municipio de la provincia de Girona.

Crear capa de flujos de desplazamientos

Una vez obtenidas las coordenadas de origen y destino en la capa centroides. solo queda calcular las líneas de flujo entre el punto de origen y los puntos de destino. Para ello utilizaremos el complemento Shape Tools, que hemos comentado al principio, y más en concreto la función la herramienta XY to line que encontraremos en la Caja de procesos,  Shape tools , Vector geometry.

Antes que nada seleccionaremos en la capa centroides aquellos que no tengan valor nulo en el campo con el número de desplazamientos. De esta forma solo generaremos líneas a aquellos puntos donde haya desplazamientos. Seguidamente ya podemos ejecutar XY to line donde indicaremos la capa de centroides, los campos con las coordenadas XY de origen y los campos con las coordenadas XY de destino, además de otros parámetros opcionales. Es importante seleccionar la opción objetos seleccionados solamente e indicar el CRS de la capa de entrada y de salida. En nuestro caso la capa de entrada está en ETRS89/UTM zona 30N que es la proyección oficial en España.

Crear un mapa de flujos con QGIS
Parámetros para la creación de la capa de flujos de desplazamiento.

Como resultado obtenemos una capa de líneas que une las coordenadas de origen con cada una de las coordenadas de destino de los desplazamientos.

Crear un mapa de flujos con QGIS
Capa de líneas de flujo de desplazamientos

Para finalizar mejoraremos la interpretación del mapa representando las líneas de flujos con un color y grosor graduado en función del número de desplazamientos.

Crear un mapa de flujos con QGIS
Mapa de flujos de desplazamiento con origen Girona representados por total de viajes.

Conclusiones

En esta entrada hemos visto como crear un mapa de flujos con QGIS utilizando los datos de movilidad del MIITMA. Como se puede intuir, estos datos que hemos utilizado como ejemplo tienen un potencial enorme a la hora de realizar análisis de movilidad. Lo que hemos visto en esta entrada es un pequeño ejemplo extraido de una de las prácticas que se ofrecen en el módulo de Fuentes y Adquisición de Datos del master UNIGIS.

Ferran Orduña
Geógrafo postgraduado en SIG. Trabajo en el Servicio de SIG y Teledetección (SIGTE) de la Universitat de Girona desde su creación en 1995 desarrollando tareas de técnico SIG, formación y soporte en la creación de materiales docentes.


Suscríbete a nuestra newsletter