Eliminar bordes en negro de una tile

En esta entrada voy a comentar cómo solventar el problema de los bordes negros que aparecen en una tile cuando se intentan superponer en una única imagen.

El punto de partida es un conjunto de tiles que queremos unificar en una única imagen escalable con zoom, para poder visualizarla por ejemplo en OpenLayers y que no se vea pixelada, pero nos encontramos con el siguiente problema:

Al unir las imágenes satelitales en formato tif nos quedan unos bordes en color negro que no parece que sean muy bonitos. Nos quedaría una cosa tal que así:

orto_foto_img

Para solucionar este problema debemos hacer lo siguiente:

Debemos generar un archivo de índice virtual (VRT). que es una vista de todos los componentes del mosaico original como si fuera un solo TIFF. En este índice se le indica el valor de los datos que serán “No Data” en este caso “0 0 0” (un cero en cada banda de la imagen).

gdalbuildvrt orto_index.vrt -srcnodata “0 0 0” -vrtnodata “0 0 0” *.tif

Este comando genera el archivo orto_index.vrt que puede ser utilizado por posteriores comandos como entrada.

A continuación se puede llamar a la generación de la pirámide con el comando gdal_retile.py, para ello hay que realizar lo siguiente:

1. Ejecutar el comando de gdal_retile

gdal_retile.py -levels 3 -ps 2048 2048 -co "TILED=YES" -co "BLOCKXSIZE=256" -co "TILED=YES" -co "BLOCKXSIZE=256" -co "BLOCKYSIZE=256" -targetDir tiles  -s_srs EPSG:32719 -targetDir tiles orto_index.vrt

2. Entramos en la carpeta tiles y creamos un directorio nuevo que se denominará 0, que se corresponderá con el nivel cero de la pirámide.

cd tiles

mkdir 0

3. Movemos todos los tif a 0

mv *.tif 0

Ya con esto tendríamos la imagen montada por niveles y tendríamos solucionado el problema de los bordes negros en las tiles. Como resultado final tras el gdal_retile tendremos una image pyramid que podemos por ejemplo cargarla en un GeoServer, de forma que se pueda servir en un mapa.

Para cargarla en el GeoServer únicamente habría que crear un Image Mosaic por cada uno de los niveles que se han generado mediante el comando anterior. Ésto nos servirá para tener los ficheros de propiedades correspondientes de cada nivel, así como el fichero .proj que lo empleará posteriormente GeoServer para procesar la Image Pyramid.

Por último creamos un Image Pyramid Store en GeoServer donde la url apuntase al directorio raíz de la pirámide creada anteriormente y damos de alta una nueva capa.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s