Cómo generar curvas de nivel a partir de un CSV con QGIS

curvas de nivel a partir de un CSV

En un mapa, la altitud se indica mediante las curvas de nivel. Una curva de nivel es una línea que, en un mapa, une los puntos (cotas) que tienen el mismo valor de altitud. Estas suelen representarse en tonalidades marrones para el terreno y en tonalidades azules para glaciares y mares y océanos.

Las curvas de nivel cumplen las siguientes directrices de manera genérica:

  • No se cortan ni se cruzan (a no ser que representen una cueva o un saliente en el relieve).
  • Se acumulan cuando el relieve es más abrupto y están más espaciadas cuando el relieve es más suave.
  • La línea de máxima pendiente entre dos curvas de nivel es aquella que las une mediante la distancia más corta.

Una cuestión que muchos alumnos nos plantean en nuestros cursos es, ¿puedo extraer de un archivo de cotas las curvas de nivel?.

La respuesta es sí, es posible.

En el siguiente tutorial vamos a mostrarte cómo generar curvas de nivel a partir de un CSV (archivo de texto delimitado por comas), con las cotas . Para ello, llevaremos a cabo un proceso conocido como interpolación espacial.

Si quieres seguir el proceso puedes descargarte los datos necesarios pinchando aquí.

¿Qué es la interpolación espacial?

Por interpolación espacial se entiende “el procedimiento que permite calcular el valor de una variable en una posición del espacio, conociendo los valores de esa variable en otras posiciones (Burrough y McDonnell, 1998).

La interpolación espacial se suele utilizar cuando los datos no cubren totalmente el área de interés, y para convertir observaciones discretas en datos continuos, pero también es necesaria en otros casos:

  • Cuando una superficie deba cambiar de resolución espacial.
  • Cuando una superficie debe cambiar de orientación (por rotación de los ejes).
  • Cuando se necesita transformar el modelo de datos.
  • Cuando se desea calcular elevaciones puntuales a lo largo de una isolínea.

interpolación espacial - curvas de nivel a partir de un CSV

Existen muchos métodos de interpolación espacial, los más conocidos y ampliamente utilizados son el método de Distancia Inversa Ponderada (IDW) y el método de Redes Irregulares Trianguladas (TIN).

En este proceso que nos ocupa emplearemos el segundo método mencionado.

Método de Red Triangulada o TIN

El TIN es un modelo de datos vectorial que, básicamente, compartimenta el espacio mediante facetas triangulares cuyos vértices son los puntos muestrales. Desde el punto de vista de la interpolación, puede considerarse un método local y exacto, y que asigna a cada punto a interpolar un valor que depende del que posean los tres puntos muestrales más cercanos, y estos puntos son los vértices del triángulo que lo contiene.

TIN para generar las curvas de nivel a partir de un CSV

Comenzamos!!!.

1) Crear shapefile de cotas a partir de .csv

En primer lugar, debemos importar los valores de cota (valor Z) a una capa vectorial (shapefile), emplearemos para ello la herramienta Añadir capa de texto delimitado  Añadir_CSV en QGIS .

Tras seleccionar dicha herramienta, introduce los siguientes parámetros en la misma:

  • Nombre de archivo: csv
  • Nombre de la capa: shp
  • Formato de archivo: Delimitadores personalizados (punto y coma)
  • Opciones de registro: Marca la casilla El primer registro tiene los nombres de campo
  • Definición de geometría: Coordenadas del punto (indica los campos para las coordenadas X e Y)

Herramienta_CSV

Haz clic en Aceptar y se creará una capa virtual, es decir, está guardada en memoria. Si deseamos que la capa sea “estable”, y poder utilizarla con posterioridad al cierre del proyecto, hay que exportarla. Para ello, deberías hacer clic derecho de ratón sobre la misma en la Tabla de Contenidos (ToC), seleccionar la opción Guardar como… e indicar una ruta de alojamiento para la nueva capa.

Debes guardarla en ETRS89 UTM Zone 30N (EPSG: 25830).

guardar_capa

2) Creación del MDT mediante el método TIN

El siguiente paso es, mediante interpolación espacial, emplear el método TIN para extraer el MDT a partir de la nueva capa de puntos que acabamos de generar. De ella necesitaremos el valor de cota que viene reflejado en el campo Z.

Abre la herramienta Interpolación del menú Ráster/Interpolación.

Plugin_Interpolacion

Introduce en ella los siguientes parámetros en la sección Entrada:

  • Capas vectoriales: cotas
  • Atributo de interpolación: Campo Z
  • Haz clic en el botón Añadir

Entrada_TIN

Introduce ahora los siguientes parámetros en la sección Salida:

  • Método de interpolación: Interpolación triangular (TIN)
  • Haz clic sobre el botón Establecer extensión actual

Ahora debemos establecer un tamaño de celdilla para la resolución del archivo de salida, dependiendo de la calidad muestral del archivo de cotas esta puede ser mayor o menor. En nuestro caso vamos a establecer un tamaño de celdilla de 50 metros:

  • Tamaño X de celda: 50
  • Tamaño Y de celda: 50
  • Indica el nombre del archivo de salida y su ubicación

Salida_TIN

Haz clic en Aceptar para generar el MDT, dependiendo de las características técnicas del ordenador este proceso puede tardar varios minutos.

3) Extracción de curvas de nivel

El último paso sería extraer nuestra capa de curvas de nivel a partir del MDT generado en el paso anterior.

Para ello, seleccionamos la herramienta Curvas de nivel del menú Ráster/Extracción

Curvas_Nivel

Introduce en ella los siguientes parámetros:

  • Archivo ráster de entrada: MDT generado en el paso anterior
  • Archivo de salida para curvas de nivel: indica una ruta y nombre de archivo
  • Intervalo entre curvas de nivel: 10 metros (equidistancia)
  • Marca la casilla Nombre de atributo e indica el nombre del campo que recogerá el valor de la curva de nivel.

extraccion_curvas

Pulsa en Aceptar y listo!.

MDTyCurvas

Let’s connect!

Date de alta en nuestra newsletter
y recibe este ebook gratuito

Y una vez al mes recibirás las últimas novedades del sector GIS y de nuestros cursos

21 comentarios en «Cómo generar curvas de nivel a partir de un CSV con QGIS»

  1. Hola Diego¡¡
    ¿Ya no está el archivo para seguir el tutorial? Parece que hay un error y no se descarga. Me gustaría poder realizar la prueba. ¿puedes volver a colocarlo?

    Espero que sí.

    Saludos.

  2. Buenas tardes;
    Me gustaría cómo se podría (si es que se puede) cambiar el paso entre las curvas de nivel una vez tenemoss generadas las líneas en una capa.
    Un saludo y gracias.

    • Hola Miguel Ángel,

      Una vez tengas el MDT necesario para extraer la información altimétrica puedes indicar la equidistancia de las curvas de nivel en la herramienta Ráster/Extracción/Curvas de nivel al valor deseado en Intervalo entre curvas de nivel.

      Este valor debes de considerarlo en función de si se trata de una zona abrupta o de escaso relieve para que el archivo final sea representativo de la misma.

      Un saludo!

  3. Buenas tardes

    Me gustaria saber como alinear las etiquetas de altitud de las curvas de nivel, de manera que aparezcan en orden alineadas una encima de la otra en una zona del mapa, y no aleatoriamente

    Muchas gracias

    Saludos

    Ibai

    • Hola Ibai,

      Puedes etiquetar las curvas de nivel de forma alineada con la herramienta Contour Annotation de las ArcToolbox (Cartography Tools/Annotation) seleccionando el tipo ENABLE LADDERING.

      Un saludo!

  4. Buenas tardes

    He seguido todos tus paso. Pero al exportar el archivo en .dxf y abrirlo en Autocad 2007, no veo nada. ¿Que me falla?

  5. Hola, buenas tardes y de antemano gracias a Diego. Hice todos los pasos para generar el DEM, pero al final lo que me entrega es un ráster con mínimos y máximos «nan», cómo remedio ésto?. De nuevo, gracias!.

  6. Hola!! gracias por la info!
    Tengo el siguiente problema… quiero que la extensión exceda la Extensión actual. Es posible esto?

    Muchas gracias!

    J.

    • Hola Josefina,

      Puedes introducir manualmente la extensión deseada a través de las coordenadas de la misma, pero si excede la extensión del archivo solo obtendrás datos en la extensión del archivo. Fuera de esa extensión los valores serán nulos.

      Un saludo!

  7. Hola,
    Estoy empleando el MDT del Ministerio de Fomento para generar un mapa con curvas de nivel de Asturias. He conseguido generar el mapa y exportarlo en formato .dxf a Autocad, pero no encuentro la manera de colocar a cada curva de nivel etiquetas indicando su cota. ¿Es esto posible?
    Saludos,
    Pelayo.

    • Hola Pelayo,

      Con QGIS no he encontrado la forma de realizar este proceso. Si bien con ArcGIS puede ser posible de la siguiente forma:

      Partiendo de un shapefile con un campo que guarda la altitud asociada a cada curva de nivel lo convertimos a 3D con la herramienta Feature to 3D by attribute (donde el atributo es el campo mencionado).

      Este archivo generado lo debes de convertir a CAD mediante la herramienta Export to CAD del grupo Conversion Tools/To CAD.

      De este modo podrías obtener un dwg con las etiquetas con las cotas de las curvas de nivel..

      Un saludo!

    • Hola Roberto,

      El campo de valor de altitud debe de ser decimal (double). Crea por tanto un campo de este tipo con la calculadora de campos y otórgale los valores del campo Z que hemos extraído del archivo .csv

      Un saludo!

  8. Hola, construí las curvas de nivel a partir del srtm que descargue del IGN, luego genere las curvas de nivel, pero al agregar las etiquetas de las curvas de nivel me da valores que no corresponden a los reales. Abri la tabla de atributos pero no me aparece el campo de alturas sino uno de ID que corresponde al numero de curva y no de la altura.
    Cual fue el error? o debo calcularlas? como lo soluciono?

    • Hola Romina,

      Al emplear la herramienta Curvas de nivel en QGIS debes de marcar la casilla de verificación para generar el campo de altitud, como indicamos en el tutorial, de lo contrario no se genera esta información.

      Un saludo!

    • Hola Fernando,

      Si posees un archivo .csv con las coordenadas de los nodos puedes incluirlos como capa puntual a través de la herramienta Añadir capa de texto delimitado.
      Una vez creada dicha capa de tipo punto puedes convertir la capa puntual a capa de tipo línea mediante el plugin Points2One, uniendo los nodos para generar líneas.

      Un saludo!

Los comentarios están cerrados.