lunes, 16 de febrero de 2015

Generar curvas de nivel con Global Mapper o QGIS.

Este es un artículo de los básicos que quizá debimos haber hecho hace tiempo, pues extraer las curvas de nivel de un Modelo Digital del Terreno (MDT ó DEM) es una de las operaciones más frecuentes en el tratamiento de vectoriales en cartografía. Como más vale tarde que nunca, vamos a explicar como conseguirlas utilizando Global Mapper o QGIS, que tienen esta función perfectamente implementada y de una forma muy sencilla.
Abrimos en Global Mapper el archivo de relieve, en este caso el MDT25 de la hoja 157 del MTN50, disponible como toda España en el Centro de Descargas del CNIG. El formato del archivo es .asc, perfectamente reconocible por Global Mapper sin ninguna operación previa.
MDT25 de la hoja 157 cargado en Global Mapper.
A continuación seleccionamos en el menú Analysis la opción Generate Contours (from Terrain Grid):
Y se nos abre la ventana para configurar todas nuestras opciones. Destacamos en el siguiente gráfico las más significativas de la pestaña Contour Options:
El resto de pestañas de la ventana son para optimización de las curvas (Simplification), para dividir el archivo resultante en varios (Tiling) o para seleccionar zonas concretas (Contour Bounds). Una vez establecidos los parámetros deseados pulsamos OK y el programa se pone a trabajar generando las curvas; para la captura de arriba en pocos segundos el resultado es el siguiente:
Capa de curvas de nivel añadida a nuestro MDT (desactivado para verlo mejor). Hemos pinchado con la herramienta Feature info en una de las curvas, como veis concretamente una que representa la altitud de 1020 metros.
Sólo nos restaría exportar la capa en cualquiera de los múltiples y clásicos formatos vectoriales que nos permite Global Mapper (.shp, .dwg, .dxf, .kml/kmz, .gpx, etc... ) para tenerla disponible como archivo y poder utilizarla en variados softwares según nuestro propósito.
Una manera muy sencilla de conseguir las áreas en vez de las curvas es la siguiente (botón derecho sobre el MDT en el Control Center):
Secuencia creación de áreas de alturas, en este caso le hemos dicho que con un rango de 50 metros.
En pocos segundos Global Mapper nos devuelve la siguiente capa:
Capa de áreas por altura. Seleccionada con la herramienta info un área correspondiente a 900 metros.
Por supuesto esta capa de áreas puede exportarse al formato vectorial deseado exactamente igual que la de líneas perteneciente a las curvas, siendo de esta forma enormemente sencillo elaborar degradados por altura del terreno en cualquier software SIG.

En QGIS es igual de sencillo conseguir nuestras curvas de nivel a partir de un MDT. Una vez cargado en el programa (el mismo MDT en formato .asc anterior), desde el menú Ráster llegamos a esta herramienta:
Seleccionamos nombre, formato y destino del archivo de salida; el intervalo en metros entre curvas; si queremos que contengan el atributo de altitud, y si el resultado se nos cargará en la vista de mapa. En pocos segundos QGIS nos genera el archivo y lo añade a nuestra vista como capa:
En nuestro canal YouTube os dejo un vídeo resumen de cómo generar las curvas de nivel con Global Mapper y QGIS. Incluye también cómo hacerlo con gvSIG y CompeGPS. Este último, para variar, es el más lento y el que más problemas da si nos salimos de su formato vectorial propio .mpv.

15 comentarios:

  1. EXCELENTE TRABAJO.....SI ME ENCUENTRO EN PANAMÁ (Centro América).....COMO HAGO PARA TENER EL ARCHIVO DEL RELIEVE...??? AGRADECIDO.....EMAIL: jbotacio@hotmail.com

    ResponderEliminar
    Respuestas
    1. Desconozco si es posible acceder a los datos de relieve en algún organismo de tu país (en España son públicos y gratuitos); si no tienes esa suerte, se pueden conseguir de todas las partes del mundo en webs como http://gdem.ersdac.jspacesystems.or.jp/index.jsp
      Saludos.

      Eliminar
  2. En primer lugar quiero agradecer el excelente tutorial realizado.
    En segundo lugar quiero pedir disculpas si la terminología o el lugar de plantear esta duda no es correcto, pero llevo relativamente poco tiempo siguiendo este apasionante mundo
    El caso es que me ha surgido una duda/problema y tal vez puedan ayudarme. Me he descargado del IGN la hoja 558 fichero MDT05-0558-H30-LIDAR.asc y en lugar de generar las curvas he intentado superponerlas con el fichero vectorial BCN0201L_CUR_NIV.shp que pertenece a la misma cuadrícula y todo ello bajo un sistema de referencia de coordenadas WGS84 / UTM zone 29N y el fichero DEM me aparece en Portugal y el de curvas sobre Madrid utilizando QGIS. En cambio, si utilizao Global Mapper se superpone perfectamente.
    Sabrían qué puedo estar haciendo mal?
    Muchas gracias

    ResponderEliminar
    Respuestas
    1. Ainss, el tema de la proyecciones... Algo que todos los aficionados novatos odiamos y no entendemos (yo el primero). He descargado el MDT y los 4 archivos BCN, todo de la hoja 558. Esa hoja por cierto es claramente zona 30, no recuerdo ahora donde empieza la 29 exactamente, pero es allá para la mitad de Cáceres más o menos.
      Como bien dices, Global Mapper sin problemas: con las curvas de nivel ni pregunta. Con el MDT si (le decimos UTM zona 30 datum ETRS89 y listo).
      QGIS tampoco pregunta con las curvas de nivel (las abre y listo). Y las abre en la proyección ETRS89/ETRS-TM30 EPSG:3042 (en la que están hechos los archivos BCN). Luego abrimos el MDT y al cargarlo nos dice que como la proyección no está definida lo abre por defecto en WGS84 EPSG:4326. Pincha con el botón derecho sobre el MDT en la lista de capas y selecciona "Establecer SRC de la capa". Y en la lista buscas el ETRS89 / ETRS-TM30 que es el de las curvas de nivel y aceptas. El MDT se colocará en el mismo sitio de las curvas, que es ahí Por Villanueva de la Cañada, Brunete y esa zona.
      Esto de las proyecciones como te digo, una maldita locura que apenas me molesto en entender... Con que los archivos se me abran en su sitio me doy con un canto en los dientes, jajaja... Saludos y gracias!!!

      Eliminar
    2. Madre mía lo que me queda por aprender, voy al lío y os cuento.
      Muchísimas gracias Javier

      Eliminar
    3. Ahora funciona perfectamente!!!! Eres un crack
      Un saludo y enhorabuena.

      Eliminar
    4. De nada Juan Carlos, muchas gracias a ti y me alegro que esté solucionado!!!

      Eliminar
  3. Hola Javier, muchas gracias por tu magnífica web.

    Soy un principiante en Qgis y no me termina de salir el tema de las proyecciones. Intento cuadrar el MDT y el BCN200 de la provincia de Granada pero me sale la capa vectorial como si estuviera en Senegal y además más pequeña. He probado ponerlo todo en ETRS89 tal como dices en el comentario anterior pero no me funciona.

    A ver si me puedes echar una mano.

    Un saludo!

    ResponderEliminar
    Respuestas
    1. Como digo, una locura las proyecciones, para mi el primero... He descargado los archivos BCN200_GRANADA.zip y MDT200-GRANADA.zip y haciendo esto a mi me funciona: abres primero cualquier archivo de la BCN200 (yo lo he hecho con BCN200_0202L_CURV_NIV.shp); QGIS no pregunta proyección. Si damos click derecho sobre el nombre de la capa y en "Establecer SRC de la capa", vemos que lo ha abierto en ETRS89. Abre luego el MDT200-GRANADA-H30.asc y lo pone en las quimbambas y en WGS 84. Haz click derecho en el MDT y "Establecer SRC de la capa" y lo pones en ETRS89 / UTM zone 30N. Aceptas y los archivos ya los tienes en el mismo sitio... pero no me preguntes mucho por qué!!! jaja.. Saludos!!!

      Eliminar
  4. Mi consulta es como hacer para que luego de exportar un area x al autocad me resulta que las cotas en las curvas de nivel están en sentido horizontal y no alineadas a cada curva de nivel como hago para corregirlo.

    ResponderEliminar
    Respuestas
    1. Personalmente nunca he manejado AutoCad, asi que no puedo ayudarte. A ver si alguien sabe algo.... Saludos.

      Eliminar
  5. Por favor como hago para suavizar las curvas de nivel
    Porque me salen con poligonales en vez de curvas

    ResponderEliminar
    Respuestas
    1. Quizá es que partes de un DEM de relieve muy pobre, con muy poca resolución y entonces no tiene los suficientes datos para generar un punto cada pocos metros...

      Eliminar