Inicio | Apuntes breves | De Modelo Digital del Terreno a nube de puntos: como pasar MDT del IGN a modelos 3D

De Modelo Digital del Terreno a nube de puntos: como pasar MDT del IGN a modelos 3D

Domingo, 22 de Junio de 2014 22:56

asc mdt nube puntosDesde que nuestro Instituto Geográfico Nacional (IGN) en conjunción con el Centro Nacional de Información Geográfica (CNIG) dieran comienzo al proyecto PNOA (Plan Nacional de Ortofotografía Aérea) entorno a 2008, los MDTs se han convertido en un recurso de fácil acceso ya sea para trabajos de GIS, para estudio del terreno, o simplemente para trabajos de modelado 3D del paisaje.

Un MDT se describe como "una representación estadística del terreno, en forma de números digitales, por medio de un conjunto de puntos con coordenadas x,y,z respecto a un sistema de georeferenciado conocido”, es decir, un MDT es un documento con información de la elevación del terreno (eje Z) respecto a un sistema de coordenadas. El problema de estos documentos es que no suelen contener información X e Y asociada a cada valor Z, necesaria para que los podamos comprender como un modelo 3D completo (nube de puntos).

Nuestro IGN facilita MDT en formato Esri ASCII Grid (.asc) obtenidos por vuelos LIDAR o Fotogramétricos de PNOA. Las resoluciones disponibles son la MDT05, MDT25 y MDT200 de 5, 25 o 200m de tamaño de rejilla respectivamente. Todos estos documentos se pueden localizar fácilmente a través de la web de descargas del IGN donde podemos buscar por localidad, provincia, etc o a través de la conocida numeración MTN50 del IGN, donde sin duda nos será más sencillo localizar nuestras áreas de interés.

Los MDT Esri ASCII Grid, como su nombre indica están codificados en texto plano (ASCII) por lo que los podemos abrir fácilmente con un editor de textos y observaremos sus cabeceras características:

  NCOLS 1121
  NROWS 769
  XLLCENTER 511600
  YLLCENTER 4723600
  CELLSIZE 25
  99.201 100.982 103.968 …

Dado que los .asc son cuadrículas, en dichas cabeceras se especifica el número de columnas y filas (NCOLS y NROWS) las coordenadas relativas al centro de dicha cuadrícula (XLLCENTER y YLLCENTER ) y finalmente el ancho de rejilla (CELLSIZE) así como una larga ristra de números correspondientes con las elevaciones.

Junto la los MDT también podemos descargar otro tipo de documentos como ortofotos o las conocidas hojas MTN en formato ráster o vectorial.

Para trabajar con el formato Esri ASCII Grid podríamos usar directamente la herramienta ArcGIS de Esri, pero dato que es una herramienta propietaria, vamos a usar la herramienta libre gdal_translate perteneciente a la suite de herramientas GDAL ( Geospatial Data Abstraction Library ), disponible para todos los sistemas operativos.

Instalación en Mac Os X

Si estamos usando Mac OsX podemos descargarnos los binarios y posteriormente solo hay que añadir la ruta del framework GDAL a nuestro path, en esta URL podemos encontrar información del proceso:

echo 'export PATH=/Library/Frameworks/GDAL.framework/Programs:$PATH' >> ~/.bash_profile
source ~/.bash_profile

Instalación en Linux (Ubuntu)

En Ubuntu si instalamos desde los repositorios, es probable que no nos instale la última versión, por lo que también es probable que la función "translate" no este disponible. Para ello descargamos al menos la versión 1.11 de:

http://download.osgeo.org/gdal/1.11.0/

Posteriormente ejecutamos la típica secuencia de compilado:

./configure
make
sudo make install

Y finalmente si ejecutamos:

gdalinfo --version

Y nos arroja un error relativo a que no se encuentra la librería libgdal.so.1 debemos ejecutar ldconfig:

cd /etc/ld.so.conf.d
sudo ldconfig

Este proceso lanzará la configuración y ya debería funcionar.

Una vez instalado GDAL simplemente ejecutamos:

 gdal_translate -of XYZ MDT05-0120-LIDAR/MDT05-0120-H29-LIDAR.asc MDT05-0120-LIDAR/MDT05-0120-H29-LIDAR.xyz 

El proceso de conversión simplemente toma las coordenadas del centro de la cuadrícular y las extrapola al resto de valores de elevación. Si examinamos el documento XYZ generado observaremos los valores XY correspondientes a las coordenadas de nuestra cuadrícula y Z, como las elevaciones:

  511600 4742800 99.2009963989257812
  511625 4742800 100.982002258300781
  511650 4742800 103.968002319335938

De esta forma ya tenemos los datos de elevación acompañados de las coordenadas X e Y y listo para ser cargado en cualquier herramienta de modelado 3D. En nuestro caso para continuar con el proceso vamos a usar MeshLab.

MDT asc to wireframe Una vez cargado nuestro modelo XYZ en Meslab vamos a Filters > Point Set > Surface Reconstruction: Poisson, e introducimos los valores Octree Depth de 10 y Solver Divide de 8, siendo posible introducir otros valores si queremos modelos más simplificados.

Tras aplicar este filtro, ya tenemos nuestro MDT en forma de la típica malla 3D la cual podemos iluminar o aplicar una textura fácilmente.

Para continuar con el ejercicio del trabajo con MDT en Meshlab, vamos a aplicar una textura a este modelo con una imagen ráster formada por una hoja MTN correspondiente a una región de mi MDT.

Las hojas MTN vienen en formato TIFF, por lo que hay que convertirlas a JPG o PNG para ser usadas con Meshlab. A continuación vamos a File > Import Raster, de forma que nuestra imagen es cargada en el layout de Meshlab. Debemos hacer un Reset del Trackball para recuperar nuestro modelo en el layout.

alinearA continuación viene la tarea más ardua, que es la de encajar nuestro modelo 3D con nuestra imagen ráster acercando-alejando el modelo, o desplazándolo hasta encajar la imagen con el relieve. Para concluir con éxito el proceso deberíamos localizar puntos geográficos evidentes entre modelo y hoja MTN u ortofoto para hacerlos encajar. Usando el botón derecho del ratón y la rueda del mismo, o en Mac la tecla Ctrl podemos modificar la trasparencia de nuestra imagen ráster para revisar el nivel de ajuste entre ráster y modelo 3D

registar_camaraA continuación necesitamos “registrar” nuestra imágen raster como cámara, para ello vamos a Filters > Camera > Set Raster Camera, dejamos la opción Current Trackball y activamos Get Shot y Apply para establecer la relación entre cámara y modelo. Este punto es importante, sino nuestra imagen ráster no quedara bien registrada como cámara.

A continuación vamos a Filters > Texture > Parameterization + Texturing from Registerd Rasters, y simplemente elegimos la resolución de nuestro mapa UV, lo cual es fundamental para conservar el detalle de nuestra hoja MTN u ortofoto y el nombre de la textura.

mdt asc meshlab Con estos simples pasos ya tenemos un modelo 3D formado por una malla, con su textura formada por un mapa UV tomado de una ortofoto, mapa topográfico, etc,…

Con GDAL podemos ver lo fácil que es disponer de un modelo XYZ a partir de documentos ASC con información de elevaciones. Cabe citar que gdal_translate nos permite realizar decenas de conversiones entre documentos con información geográfica, así que vale la pena explorarla como una herramienta de altísimo potencial si trabajamos con modelos 3D o SIG.

MDT to rasterPor ejemplo si usamos la opción “-of JPEG” o "-of PNG" podemos exportar nuestro MDT como imagen ráster, tal y como podemos ver en la imagen de la izquierda.

x-rite Professional LED Lighting, DSLR Support and Accessories for Photo and Video BabelColor asociacion española de imagen cientifica y forense