Identificando los ejes comerciales de la ciudad


Por

La creciente disponibilidad de datos provenientes de los portales de Open Data que existen a día de hoy, nos permite representar a través de una mapa una gran cantidad de variables socio económicas, culturales, y de diversa índole acerca de nuestras ciudades y territorios. Esta disponibilidad creciente de datos, conjuntamente con las muchas herramientas de escritorio y aplicaciones web que existen, nos facilitan el diseño y la elaboración de cientos de mapas que podemos publicar en Internet, con el objetivo de ilustrar diferentes relatos e historias.

En este post veremos como a partir de un conjunto de datos obtenidos de alguna de estas fuentes de datos abiertas que acabamos de comentar, y con la ayuda de GRASS GIS y QGIS, en unos sencillos pasos podemos elaborar rápidamente un mapa para representar los ejes comerciales de la ciudad de Girona.

¿Cómo obtenemos los datos? Fuentes de datos abiertas.

Para el caso concreto de la ciudad de Girona podemos obtener los datos relativos al censo de actividades económicas desde el portal de datos abiertos de la ciudad. Los datos que obtenemos desde este portal se presentan en formato CSV y su licencia es Creative Commons Attibution (CC-BY), por lo que su utilización está sujeta a la mención de la autoría de estos datos (Ajuntament de Girona). Los archivos en formato CSV son un tipo de fichero muy sencillo, abierto y de tipo texto, en el cual las columnas y por tanto los valores que almacenan cada una de estas columnas, se separan (por defecto) mediante una coma, aunque también puede utilizarse el punto y coma, el tabulador, pipes, etcétera. Cada una de las líneas del fichero, corresponde a un registro en la tabla de atributos.

Aspecto del contenido del fichero CSV.

 

Un segundo conjunto de datos que se necesita para llevar a cabo la tarea que tenemos entre manos es el callejero de la ciudad. Para ello, bastará con obtener esta información desde OpenStreetMap utilizando algunas de las opciones de descarga que están a nuestro alcance:  bien la descarga directa desde el mismo sitio web, bien utilizando un portal de descargas de conjuntos de datos ya procesados como es el caso de Geofabrik, bien utilizando una API como Overpass turbo, entre otras opciones.

Procesando los datos obtenidos: la creación de tramos de calle.

El principal objetivo de este sencillo ejercicio es el de poder representar cada una de las calles de la ciudad en función del número de actividades económicas que en ellas se concentra. De este modo, podremos identificar los principales ejes de actividad económica en Girona. Ahora bien, sabemos que existe o puede existir cierta variabilidad por lo que a concentración de actividades respecta dentro de una misma calle. En calles especialmente largas, estas pueden concentrar actividad únicamente en una parte de la misma, y de no tener en cuenta esta variabilidad espacial, podríamos cometer el error de representar la totalidad de la calle, de inicio a fin, como si fuera un único eje comercial cuando la realidad puede distar. De no contemplar esta variabilidad de la concentración de actividades a lo largo de una misma calle, se estaría introduciendo un cierto sesgo en la información representada. Es por ello que en este caso, se ha optado por representar los ejes comerciales de la ciudad, utilizando como unidad mínima de referencia, los tramos de calle: la porción de calle comprendida entre dos cruces de calle. De este modo, se segmentará cada calle y se asignará a cada tramo, únicamente el número de actividades económicas que realmente le corresponde por localización.

Así pues, una vez obtenidos los datos con los cuales vamos a trabajar, deberán importarse a GRASS GIS pues va a ser necesario el uso de un par de las herramientas de este software, para llevar a cabo la asignación de actividades y su representación de la manera como se acaba de comentar.

Las líneas que representan las calles de la ciudad se estructuran originalmente del siguiente modo: una entidad de línea equivale a una única calle. Es por ello que utilizaremos el algoritmo de GRASS GIS v.clean para «romper» cada línea (calle) a cada intersección (cruce). De este modo, se generan todos los tramos de calle necesarios para la asignación de actividades económicas.

Aspecto de los ejes de calle (líneas) y actividades económicas (puntos) en GRASS GIS.

 

Procesando los datos obtenidos: reubicación de las actividades.

El fichero CSV con las actividades económicas de la ciudad almacena las coordenadas XY de cada establecimiento en dos columnas, por lo que además de importar el fichero a GRASS GIS deberá aplicarse un proceso de geocodificación, para convertir cada registro en el CSV en una nueva entidad de punto.

A continuación, es preciso desplazar todos los puntos que representan cada una de las actividades económicas al eje de calle que esté más cercano a su localización. Gracias a la capacidad de GRASS GIS de almacenar distintos tipos de geometrías en una misma capa, con la herramienta v.net se pueden mover y conectar mediante un proceso de snap, cada uno de los puntos de la capa de actividades justo sobre la línea que le corresponde, creando una nueva colección de nodos en la misma capa que originalmente ya contiene las líneas. En GRASS GIS, la información vectorial se estructura en layers y cada uno de estos layers, puede contener diferentes tipos de entidad o geometrías. Mediante un sencillo paso puede vincularse la tabla de atributos de las actividades económicas a los nuevos nodos que se han añadido a la capa de líneas, para acabar exportando de esta capa, únicamente el layer que contiene los nodos como una nueva capa de puntos, que contendrá toda la información original de las actividades económicas pero cuya localización se ha modificado para situarse justo encima de los ejes de calle.

Aspecto de la nueva capa de actividades económicas respecto a la capa original (puntos en color rojo).

 

Llegados a este punto, solamente queda por realizar el recuento de cuántos puntos caen dentro de cada uno de los arcos que forman parte de la red de calles (de intersección a intersección), y almacenar este valor en la tabla de atributos de los tramos de calle, con el objetivo final de poder elaborar los diferentes mapas temáticos utilizando varias paletas de colores, grosores de línea, etc. En cualquier caso, y cuestiones estéticas al margen, para iniciar el proceso de recuento de puntos se debe definir un buffer de 1 metro de ancho a fin de asegurar que todos y cada uno de los puntos de la capa, caen dentro del área de influencia de un tramo de calle. Antes, debe editarse la tabla de atributos de la capa vectorial de tramos de calle para eliminar los campos o columnas que no nos interesan, a la vez que se crea un nuevo campo identificador para cada tramo de calle, valor que posteriormente se utilizará para vincular el resultado del recuento de actividades con los tramos de calle originales.

Procesando los datos obtenidos: la asignación de actividades.

Ya en QGIS, con la herramienta llamada Points in polygon, se realiza el recuento de puntos que caen en el interior de cada uno de los tramos de calle, guardando este valor obtenido en un nuevo campo contador de la tabla de atributos. La salida de este algoritmo genera una nueva capa vectorial. Para finalizar, se debe vincular la capa resultante del proceso de conteo de actividades con la capa original de los tramos de calle mediante un join de tablas, para poder pintar cada uno de los tramos a partir del número de actividades que en él se encuentren. Es preciso asignar valor 0 a todos los tramos de calle en los que no hay actividad alguna y que originalmente muestran valor nulo (null) en su tabla de atributos. Con la calculadora de campos de QGIS puede llevarse a cabo esta operación de manera ágil y automática, actualizando los valores del campo que contiene el resultado del recuento:

case
when “join_contador” is null then 0
else “join_contador”
end

Una vez realizado este último paso, solo queda por dar rienda suelta a la creatividad, y diseñar los mapas temáticos que mejor representen la información que se quiere comunicar. A continuación, os mostramos un par de ejemplos muy sencillos:

Tweet about this on Twitter0Share on Facebook0Share on LinkedIn11