En este breve artículo a modo de tutorial o guía sobre cómo extraer curvas de nivel con QGIS se muestra paso por paso el proceso de extracción, guardado y representación de curvas altimétricas con este Sistema de Información Geográfica.
Capas necesarias para generar curvas de nivel con QGIS
Para poder extraer las curvas de nivel con QGIS de cualquier área determinada vamos a necesitar dos elementos básicos.
En primer lugar, necesitaremos contar con los datos para generar dichas curvas de nivel. Los datos pueden provenir de distintas fuentes. Concretamente, tenemos dos opciones.
Para la primera opción es necesario contar con una capa de puntos de elevación. Esos puntos se podrán interpolar para obtener líneas o curvas de nivel.
En su defecto, deberemos contar con un archivo ráster que contenga información altimétrica. Es decir, con un Modelo Digital del Terreno (MDT) o Modelo Digital de Elevaciones (MDE).
Además de los datos de partida, vamos a requerir de una serie de herramientas en nuestro Sistema de Información Geográfica. En este caso, utilizaremos la herramienta destinada a extraer curvas de nivel de un archivo MDT con la que cuenta QGIS.
Obtener curvas de nivel en QGIS a partir de un MDT (DEM)
El archivo con el que trabajaremos en este caso es un Modelo Digital del Terreno descargado del Instituto Geográfico Nacional a resolución de 5 metros y en formato ASCII (.asc).
El MDT pertenece a un municipio situado en un valle pirenaico rodeado con una compleja orografía, que nos servirá para poder visualizar aún mejor el proceso y el resultado de extracción de las curvas de nivel.
En primer lugar, cargaremos la capa ráster que contenga el MDT en QGIS para poder visualizarlo, mediante la herramienta “añadir capa ráster”.
Herramienta para extracción de curvas de nivel
A continuación, nos dirigiremos al menú ráster > extracción > curvas de nivel. Una vez abierta la herramienta de extracción de curvas de nivel, asignaremos nuestro MDT a la capa de entrada, asignaremos una ruta y nombre de archivo de salida (las curvas de nivel en formato vectorial) y finalmente el intervalo entre las curvas de nivel.
Finalmente, e importante, activaremos la opción de añadir nombre de atributo. De este modo, el propio QGIS asignará un nuevo campo que incorporará los valores de altitud de cada una de las líneas a la capa de curvas de nivel.
Por defecto, el nombre del campo que asigna para dichas curvas es ALT. Podemos asignar el que más nos interese. Posteriormente, podremos consultar la altitud que representa la línea en cuestión y realizar selecciones por valores de altura.
Aceptamos y a continuación se nos generará la capa vectorial en la ruta asignada. Podemos cargar la capa generada en QGIS si no hemos marcado la opción de cargar la vista del mapa al terminar el proceso. Deberíamos visualizar las curvas de nivel de forma parecida a la siguiente.
Como vemos, las curvas de nivel extraídas del MDT son tremendamente densas. Esto es debido a diversos factores. En primer lugar, se debe a la propia orografía del área de estudio elegida; en segundo lugar, debido a la resolución del archivo ráster; y por último debido al valor de intervalo asignado entre curvas. En nuestro caso, asignamos un intervalo cada 50 metros y el área tiene zonas montañosas importantes.
El siguiente paso será representar correctamente las curvas de nivel según nuestras necesidades, adecuándose a los requisitos cartográficos del proyecto, y asignar etiquetas para mostrar valores de altitud, etcétera.
Representar las curvas de nivel en QGIS
Previamente se había marcado la opción de generar un nuevo campo con los atributos de altura al crear el archivo de curvas de nivel. Por ello, al abrir la tabla de atributos de la capa, podemos ver como aparecen los valores de altura para cada una de las líneas existentes.
De este modo, QGIS nos va a permitir representar de forma graduada las curvas de nivel según el factor altura del campo que contiene esa información. En nuestro caso, como dejamos el nombre por defecto, el campo “ALT” contiene los valores de elevación.
Representación por intervalos
Para poder representar las curvas de nivel de forma graduada lo haremos abriendo el panel de simbología (en el panel de capas: botón derecho sobre la capa > propiedades > estilo). Escogeremos la opción “graduado” y como columna, lógicamente, seleccionaremos en nuestro caso “ALT”. Elegiremos una paleta de color y asignaremos clasificar.
Podremos variar el número de clases a representar de forma graduada, así como el valor entre intervalos. Adecuaremos, si fuera necesario, los valores máximos y mínimos de cada intervalo. Aplicaremos los cambios una vez ajustados.
De este modo las curvas de nivel se mostrarán graduadas en cuanto a color en función de su valor de altura contenido en la columna “ALT”. Resulta útil, por ejemplo, si debemos representar las curvas adaptadas a tintas hipsométricas o si existiera, por ejemplo, curvas situadas por debajo del nivel del mar, etcétera.
Representación mediante graduación cromática
Otra opción es desear mostrar las curvas de nivel sin una clasificación de intervalos, sino únicamente como una transición o graduado suave de un color a otro. En este caso, en estilo escogeremos la opción “categorizado” y cargaremos todos los valores del atributo altura, asignando una paleta de color de transición entre dos o más colores.
En este caso no existirán los intervalos, sino que cada una de las curvas recibirá un color comprendido entre cada uno de los dos situados a cada extremo de la paleta escogida. Se trata de una opción útil para representar efectos de profundidad y altitud, a modo de complemento a las clásicas tintas hipsométricas.
Aislar y exportar las curvas de nivel
Una de las necesidades que se nos puede plantear es la de tener que representar las curvas de nivel principales o maestras cada ciertos metros, de forma distinta a las demás (secundarias o auxiliares).
Una de las opciones existentes pasa por seleccionar y exportar las curvas de nivel principales. Para ello, primeramente procederemos a seleccionar tan sólo aquellas curvas que sean múltiples, por ejemplo, de 250 metros comprendidas en nuestro área de estudio.
En nuestro caso, conociendo los valores de altura máxima y mínima, determinamos que los valores a seleccionar serán 500, 750, 1000, 1250, 1500, 1750, 2000 y 2250 metros. Para seleccionar las líneas que representan las curvas con dichos valores podemos hacerlo directamente mediante la tabla de atributos.
Sin embargo, como las líneas no son cerradas, sino que quedan interrumpidas por los límites del MDT, deberíamos seleccionar múltiples líneas para una sola curva de nivel.
Selección de múltiples curvas de nivel
A pesar de que el área de estudio para el ejemplo es pequeña, el proceso de seleccionar todas las curvas de nivel identificadas puede llevarnos un tiempo largo para áreas mayores. No se trata de un procedimiento eficiente para seleccionar curvas de nivel y aumenta las probabilidades de error.
Por ello, utilizaremos alternativamente la selección por atributos de QGIS, introduciendo directamente los valores de altitud de las curvas de nivel que nos interesan. En el menú de selección superior de QGIS haremos clic en “seleccionar por expresión”.
A continuación, se nos desplegará un panel en el que deberemos introducir una expresión indicando que queremos seleccionar los valores de la columna “ALT” coincidentes con los establecidos cada 250 metros. Podemos hacerlo rápidamente introduciendo una expresión como la siguiente.
Haciendo clic en seleccionar quedarán resaltadas las líneas referentes a los valores indicados en la expresión. Podemos cerrar el panel de “selección por expresión”.
A continuación, lo que haremos será exportar las entidades seleccionadas como una nueva capa vectorial. Para ello, clic derecho sobre la capa de curvas de nivel > guardar como y asignamos tipo de archivo, ruta y nombre. Marcaremos la opción de guardar únicamente las entidades seleccionadas.
Selección inversa para exportar capas diferenciadas
Seguidamente, realizaremos una selección inversa (CTRL + I, o alternativamente desde el menú de selección > “invertir selección de objetos”). Ahora tenemos seleccionadas todas las entidades excepto las que habíamos guardado anteriormente cada 250 metros. En otras palabras: están seleccionadas las curvas auxiliares en vez de las curvas maestras.
Lo que haremos a continuación será guardar también estas entidades seleccionadas como otra capa vectorial, utilizando el mismo procedimiento.
Ahora contamos con dos archivos distintos de curvas de nivel. El primero de ellos comprende las curvas de nivel principales o maestras (cada 250 metros) y el segundo aquellas curvas auxiliares con valores intermedios, es decir, situadas entre las curvas maestras. Así, podremos representar de forma distinta las curvas de nivel, asignando simbología y etiquetado alternativo según sean curvas auxiliares o maestras.
Cargando las capas podemos visualizarlas independientemente, asignando colores, grosores o tipologías de línea distintas. Además, podremos generar productos derivados del MDT como por ejemplo capas de sombras o hillshades, asignando transparencia y mejorando la visualización de las capas.
Etiquetar las curvas de nivel en QGIS
Una vez diferenciadas podremos asignar el etiquetado según los valores de las capas, pues al exportar las selecciones como nuevas capas se conservan los atributos y columnas de la capa original.
Para realizar el etiquetado podemos hacer clic derecho sobre la capa > propiedades > etiquetas. A continuación, seleccionaremos el atributo con el que etiquetar las líneas de curvas de nivel que volverá a ser el atributo “ALT” que habremos conservado.
Podremos modificar las opciones referentes al texto, al reborde o buffer para destacar la etiqueta o el orden de las etiquetas.
Además, tratando de etiquetar elementos lineales como lo son las curvas de nivel, es interesante activar la opción de ubicación “curvo”. De esta manera la etiqueta se emplazará siguiendo el contorno de la línea curva, adaptándose a ella.
Deberemos establecer igualmente los valores de repetición para no masificar nuestro mapa con etiquetas, y evitando que estas sean escasas.
Finalmente, una vez configuradas la simbología y las etiquetas obtendremos una vista final que deberemos ajustar para adecuaremos a la producción cartográfica necesaria.
consulta, como puedo agregar una etiqueta «metros» pero abreviado (m) a mis curvas de nivel? que quede así por ejemplo: 100 m que aparezca esa «m».
Hola Sebastian,
gracias por tu comentario. Para poder añadir unidades (por ejemplo, «m», «cm», «ha», «km»…) a las etiquetas de un campo de cualquier capa vectorial, deberás acceder a las propiedades de capa. Desde allí, en el menú de etiquetas acceder al diálogo de expresiones (símbolo ℰ morado) e introducir una expresión similar a: «nombre de campo» || «unidad».
Por ejemplo, suponiendo que tenemos las cotas de las curvas de nivel en una capa vectorial de líneas almacenadas dentro del campo «elevacion» y queremos etiquetar cada línea con su elevación seguida de «m», deberíamos introducir la siguiente expresión: elevacion || ‘ m’.
Con eso te debería funcionar. Espero que te sirva de ayuda.
Un saludo!
Estimados,
instalé el QR 3.10 y en el menú ráster no me muestra la oción extraer. Que puede estar pasando?
Hola Rodrigo,
prueba a activar el panel de procesos. Puedes hacerlo haciendo click derecho sobre el menú superior. En él, dentro del panel de búsqueda, trata de localizar dicho geoproceso. Además, asegúrate de tener activados los proveedores desde configuración de QGIS.
Saludos!
Hola! Una duda, como puedo exportar curvas de nivel con elevaciones de Qgis a Autocad? muchas gracias…
hola¡ Cómo puedo cerrar las curvas de nivel para guardarlas como poligonos y luego usarlas para extraer datos de un raster como mascara. Es una cuenca, tengo las curvas de nivel y el shape de la cuenca. Como tienen geometría diferente no pude unirlas de una vez sin antes transforma el shape en linea, luego uní la linea con las curvas y está bien pero cuando intento convertir esto a poligonos el resultado descarta muchas curvas y solo muestra un shape con algunas. espero me haya dado a entender. lo que necesito finalmente es extraer información de un raster con datos distintos a altitud a partir de unos intervalos de altura.
Una consulta, llego a generar el las curvas de nivel, la capa tiene infomación y al darle zoom a la capa me muestra el área en la que estopy trabajando, pero no logro visualizarlas. Qué puede ser?