Mapas urbanos con la altura de los edificios con QGIS

Durante los últimos días, los mapas urbanos creados por Dominic Royé han tenido bastante éxito en las redes sociales por su efecto vidriera, ya que visualmente son muy atractivos. Dominic ha creado mapas relacionados tanto con el crecimiento urbano como con la altura de los edificios:

Dominic es climatólogo y actualmente becario postdoctoral en la Universidad de Santiago de Compostela. Es licenciado en Geografía y Filología Hispánica en la Universidad de Colonia y la Universidad RWTH-Aachen en 2010.

Estos mapas se han creado utilizando una capa de edificaciones proveniente del catastro. Para conseguir el efecto de vidriera, se han realizado varios ajustes:

  1. Se utiliza un fondo negro.
  2. Se ha creado una esfera con un radio de 2,5 km.
  3. Se utiliza una rampa de colores en la que se dibuja cada edifico en función de la altura de los edificios.

Dominic es un experto en el lenguaje R y muestra cómo crear los mapas de evolución urbana con R en un completo tutorial. Sin embargo, los que no somos expertos en R encontraremos cierta dificultad para conseguir estos resultados. Pues bien, también es posible conseguir estos resultados con QGIS. En esta entrada te explicaremos cómo crear mapas urbanos con la altura de los edificios con QGIS.

Importación de la capa de edificios

El primer paso es descargar la capa de los edificios del municipio que nos interese.

Para realizar este paso vamos a utilizar el plugin de QGIS Spanish Inspire Catastral Downloader que ha desarrollado Patricio Soriano. Este conjunto de datos es parte de la implementación INSPIRE, la Infraestructura de Información Espacial en Europa. La descarga utiliza el servicio ATOM, que es un tipo RSS para feeds web, lo que nos permite obtener el enlace de descarga de cada municipio.

Abrimos QGIS y vamos al menú superior Complementos > Administrar e instalar complementos… para encontrarlo rápidamente, en el buscador escribimos el texto «catastral»:

Una vez instalado, podemos ejecutarlo desde la barra de herramientas o bien desde el menú Complementos > Descarga Catastro Inspire > Descarga Catastro Inspire.

En el menú que se abre, seleccionaremos la provincia y municipio (en este tutorial vamos a utilizar el municipio de León, pero puedes emplear el municipio que quieras). Seleccionamos una carpeta de descarga y marcamos la casilla Edificios:

Una vez ejecutamos la herramienta, se creará una nueva carpeta con el código de municipio, en nuestro caso 24900. Dentro de esta carpeta encontraremos varios archivos, pero el archivo que nos interesa será el archivo A.ES.SDGC.BU.24900.building.geojson

Añadiremos el archivo a QGIS como una capa vectorial, podemos arrastrarlo tal cual al lienzo de QGIS.

Descargar capa ráster con la altura de las edificaciones

El Instituto Geográfico Nacional, a través del Centro Nacional de Información Geográfica pone a nuestra disposición un Modelo Digital de Superficies Edificación. Este modelo digital de superficies normalizado contiene la clase edificación correspondiente a la 1ª Cobertura con paso de malla de 2,5 m. Alturas normalizadas, referidas al nivel del suelo.

Podemos acceder a la descarga en el apartado MODELOS DIGITALES DE ELEVACIONES:

http://centrodedescargas.cnig.es/CentroDescargas/catalogo.do?Serie=LIDAR#

Desde aquí podemos seleccionar la opción «Por listado» y buscar nuestro municipio.

Procedemos a descargar el archivo ráster en formato .asc. En este caso es una única hoja del MTN50.

Una vez descargado el archivo (un municipio puede ocupar unos 450 MB), podemos añadirlo a QGIS para visualizar su contenido. Si hacemos clic con el botón de información veremos que el valor de altura se guarda en la banda 1:

Llevar el valor de altura a una capa de puntos

El siguiente paso es convertir la capa de edificios a puntos para poder asignar posteriormente el valor de altura a la capa de puntos.

Utilizaremos la herramienta Punto en superficie (PointOnSurface), de este modo nos garantizamos que todos los puntos estarán encima de los edificios. Para abrir la herramienta vamos a la Caja de herramientas de procesos > Geometría vectorial > algoritmo Punto en superficie.

Basta con indicar que la capa de entrada es la capa de edificios y crear un un punto para cada parte:

Ejecutamos el algoritmo y se creará un nueva capa temporal de puntos. De momento no tiene ningún atributo.

A continuación, vamos a vincular el valor de altura del ráster a cada punto.

Para ello, vamos a utilizar el plugin  Point Sampling Tool (en este blog ya hemos hablado de él).

El plugin Point Sampling Tool es capaz de recopilar atributos de una capa vectorial de tipo polígono o valores de una imagen ráster a partir de una serie de puntos de muestreo.

Este plugin crea una nueva capa de puntos en la que se guardarán los atributos o valores tomados de un ráster o capa vectorial de tipo polígono. En nuestro caso, los valores de altura de un MDS.

El plugin Point Sampling Tool puede descargarse e instalarse desde el Administrador de complementos de QGIS, a través del menú Complementos.

PST install

Una vez instalado, puedes encontrar el plugin en el menú Complementos > Analyses > Point Sampling Tool.

En la ventana de la herramienta debemos de especificar los siguientes parámetros:

  • Layer containing sampling points: Indica aquí la capa vectorial de tipo punto con los centroides de los edificios.
  • Layers with fields/bands to get values from: Indica aquí el ráster del que queremos extraer los valores de celda, es decir, el MDS de edificaciones.
  • Output point vector layer: Guarda el resultado como Punto_altura en formato GeoPackage.
  • Puedes marcar la casilla Add created layer to the ToC para que se añada el resultado de forma automática a QGIS una vez ejecutado y finalizado el proceso:

Pulsa el botón Aceptar para iniciar la ejecución del algoritmo.

Una vez se añada el resultado a la interfaz de QGIS, accede a la tabla de atributos para comprobar que el proceso se ha realizado con éxito.

El último paso sería asociar este valor de altura a la capa de edificios y, de este modo, ya tendríamos el valor de altura de los edificios en la capa vectorial de edificaciones disponible para representar.

Unir la capa de edificios con la capa de puntos que contiene la altura

Para asociar el valor de altura del terreno (puntos) a la capa de edificaciones (polígonos) podemos emplear la herramienta Unir atributos por localización… que se encuentra en el menú Vectorial > Herramientas de gestión de datos.

En la ventana de la herramienta introduce los siguientes parámetros:

  • Capa de entrada: A.ES.SDGC.BU.24900.building
  • Unir capa: Punto_altura.gpkg
  • Predicado geométrico: selecciona intersects
  • Deja por defecto tanto los campos a añadir de la capa de entrada como de unión, ya que nos interesan todos.
  • Tipo de unión: Se trata de una unión uno a uno, ya que sólo puede haber un centroide por manzana
  • Capa unida: Denomina al resultado, por ejemplo, edificios con altura y guárdalo como geojson por ejemplo:

Pulsa el botón Ejecutar y observa la tabla de atributos de la nueva capa y el campo de altura (NDSM-edifi):

Representación de la capa

En las propiedades de la capa iremos a la pestaña Simbología, allí seleccionaremos la opción Graduado sobre el campo NDSM-Edifi aplicando el modo Equal Count (Quantile) y estableceremos 10 clases:

Para mejorar la visualización sobre el fondo negro eliminaremos el color del contorno. Para ello,  en la opción Simbolo > Configurar símbolo… en estilo de marca seleccionaremos la opción «Sin plumilla», esto eliminará los bordes

Aceptamos y se eliminará el borde. Ya tenemos una aproximación muy cercana de cómo se verá el mapa final:

Fondo negro

El siguiente paso es mostrar un fondo negro. Para modificar el fondo debemos ir al menú superior Proyecto > Propiedades… pestaña general y en «Color de fondo» seleccionamos el color Negro y aceptamos:

Creación del buffer de 2,5 km

Para visualizar mejor la distribución de la altura de los edificios, Dominic en sus mapas limita la representación de los edificios a un radio de 2,5 km desde el centro de la ciudad.

Para crear un área de influencia o buffer en QGIS necesitamos crear primero un punto, este punto debemos digitalizarlo en el centro de la ciudad. En el caso de nuestra ciudad, León, estableceremos como centro la Plaza de Santo Domingo.

Creamos una nueva capa de tipo puntual, para ello nos dirigimos al menú superior Capa > Crear capa… > Nueva capa de archivo shape.

Completaremos el tipo de geometría y estableceremos el EPSG en el del proyecto (EPSG:25830) que es en el que estamos trabajando:

Ponemos en edición la capa y creamos un punto en la ubicación deseada y guardamos los cambios.

A continuación crearemos un buffer. En la Caja de herramientas de Procesos seleccionamos el algoritmo Buffer:

  • Como capa de entrada seleccionaremos la capa centroide.
  • Distancia: 2500 metros.
  • Segmentos 30 (El parámetro segmentos controla el número de segmentos de línea a usar para aproximar a un cuarto de círculo al crear desplazamientos redondeados).
  • Asignamos un nombre y ubicación a la capa de salida.

Al ejecutar se creará el buffer.

Recorte de los edificios utilizando la opción de polígonos invertidos

Para mostrar únicamente los edificios que están dentro de esta zona de influencia, una de las opciones sería realizar un corte. Mediante la operación Cortar, nos quedaríamos sólo con los edificios ubicados dentro del polígono.

Sin embargo, QGIS tiene una opción de representación denominada polígonos invertidos, que sirve para crear máscaras y nos evita realizar el geoproceso de Cortar.

En la capa Buffer León vamos al menú Simbología y realizamos los siguientes ajuste:

  • Seleccionamos la opción de representación Polígonos invertidos.
  • Establecemos el color de relleno en negro.
  • En Simple Fill > estilo de marca: sin plumilla (para eliminar el borde).

Al aceptar, veremos la capa de edificios con un aspecto similar al definitivo:

Composición final del mapa

Bien, en la composición final, realizaremos los siguientes ajustes:

  • Ajustaremos el tamaño de la página a un cuadrado.
  • Agregamos un título y la fuente de los datos.
  • A la leyenda le eliminamos el fondo, ponemos los textos en blanco y modificamos las medidas de los símbolos.

El resultado es el siguiente:

A continuación os mostramos otro ejemplo con los edificios de Barcelona. En este caso ha sido necesario combinar dos ráster de altura, ya que la zona centro se divide en varias hojas del MTN50.

Si quieres aprender a crear estos mapas urbanos, inscríbete en el curso online de QGIS aplicado a Urbanismo y a Catastro.

11 comentarios en «Mapas urbanos con la altura de los edificios con QGIS»

  1. Hola, Gracias por este tutorial es perfecto, tuve un problema al final en las propriedades de capa lo hago todo bien me salen las diferentes alturas graduadas segun el color pero al pinchar aceptar no me salen los colores en la capa

  2. Hola genio. Muy buen tutorial. Soy muy novato, me perdí en el paso
    «Ponemos en edición la capa y creamos un punto en la ubicación deseada y guardamos los cambios.»
    donde es esa edición de capa y como creo ese punto? de donde obtengo la información de la unicacion deseada?

    • Hola Julián,
      Este es un tutorial avanzado, damos por hecho que el lector está familiarizado con el uso de las funciones básicas de QGIS. La creación de nuevas geometrías se realiza desde el menú superior Capa > Crear capa.. y seleccionar una opción de tipo punto. Para poner en edición la capa debes ir al botón «Conmutar edición». La ubicación deseada es la que tú prefieras, pues será la que establezca el centro del mapa. En cualquier caso tenemos un estupendo curso de QGIS básico – intermedio en el que te enseñamos con detenimiento cómo comenzar a trabajar con QGIS. Saludos

  3. Super bien explicado, muchas gracias! He intentado realizar cada paso pero justo cuando he hecho la comprobación después de ejecutar el point sampling point, me salen los valores nulos en la columna del raster. Quizás me he saltado algún paso o se deba a un problema al cargar el archivo, si pudieras ayudar te lo agradecería.

    Muchas gracias!

    • Hola Patricia,
      Si salen algunos valores nulos no es problema, si salen todos lo más probable es que las capas no estén en el mismo sistema de coordenadas. Aunque visualmente parezca que están en la misma zona, asegúrate de que ambas capas compartan el mismo SRC. Saludos

  4. Buenas noches,

    Por un lado…Gran tutorial!
    Es muy interesante el acercamiento! Aún así entiendo que la selección de los Quantiles sobre igualdad de intervalos parte de la búsqueda de un documento más bien llamativo a nivel gráfico que por la riqueza de información de este, no?

    Por otro lado,tras este minitutorial me planteo hacer vuestro curso de QGIS, ¡tiene una pinta tremenda! Lo único que me echa para atrás es la carga de trabajo en proporción al tiempo en cuanto a los ejercicios.

    Un saludo!
    Jyang Ho

    • Buenas Jyang,
      Muchas gracias por tu comentario, efectivamente la selección de quantiles es un tema estético, simplemente eso. Me alegro de que te interesen los cursos, es cierto que son cursos muy prácticos y necesitarás tiempo disponible para realizar todos los ejercicios y aprovechar bien el curso. Saludos!

  5. Buenos días, en el paso «Unir la capa de edificios con la capa de puntos que contiene la altura» se empieza a ejecutar el algoritmo y me indica lo siguiente «No spatial index exists for join layer, performance will be severely degraded». Se va ejecutando pero tardaría unas 20 horas, así que de momento no lo consigo. Los puntos que tengo en mi ciudad son unos 40000.
    Tienes alguna idea de como podría solucionar esta problemática?
    Saludos

    • Hola Carlos,
      Este paso concreto no debería demorar más de 2 minutos si usas un GeoPackage como capa de puntos con la altura (un GeoPackage incluye índices espaciales). Hemos hecho el ejercicio también con el municipio de Barcelona y tampoco hemos tenido problema en este paso. Dime que municipio estás probando para intentar replicar el problema. Saludos

Los comentarios están cerrados.