22 votos

¿Cómo cortar una "imagen en mosaico" a partir de un conjunto de datos ráster utilizando GDAL?

Estoy trabajando en una aplicación que necesita crear mosaicos (jpeg) a partir de un conjunto de datos raster. Mi inclinación inicial era utilizar gdal2tiles.py, pero su rendimiento parece que podría mejorarse.

Esto me lleva a formular la siguiente pregunta: ¿Cuál sería la forma más rápida de cortar una "imagen en mosaico" de un conjunto de datos raster utilizando GDAL? Y por 'imagen en mosaico', me refiero a un simple jpeg o png.

En mi prototipo, utilizo los enlaces MapScript de MapServer C# para realizar el trabajo. Es decir, creo un objeto de mapa, recorro todos los límites de las baldosas que necesito cortar, establezco la extensión de los objetos de mapa y luego guardo la imagen resultante. El rendimiento de este enfoque es significativamente mejor que el de gdal2tiles.py, pero me pregunto si al usar GDAL directamente no puedo hacerlo aún más rápido. ¿Puede alguien sugerir un flujo de trabajo similar con métodos GDAL?

EDIT: Después de investigar un poco más hoy, he encontrado la respuesta justo delante de mí. Si ha descargado FWTools, el csharp \apps contiene una serie de clases para demostrar los enlaces C# GDAL. En mi caso, GDALRead.cs y GDALReadDirect.cs eran lo que estaba buscando.

5voto

keno Puntos 1682

Alguien ha dedicado tiempo a hacer que gdal2tiles.py utilice múltiples procesadores: gdal paralelo

Lo he utilizado y parece que funciona. Utiliza con éxito los 4 núcleos al 100% y reduce el tiempo total para crear los azulejos a 1/4 del tiempo original.

2voto

1voto

alexandrul Puntos 1190

En mi empresa escribíamos scripts personalizados en python, usando gdal_warp (era antes de saber que existía gdal2tiles). Era más rápido que g2t, especialmente cuando lo reescribimos para ejecutarlo en muchos núcleos (usando threadpool de python). También produjo azulejos de mayor calidad (lanczos interpolación en g2t parece funcionar mal, en gdal_warp azulejos resultantes fueron sorprendentes).

Se necesita un poco de esfuerzo para escribir los scripts, es necesario calcular manualmente las cajas delimitadoras resultantes, configurar algunas opciones para las proyecciones, etc.

0voto

Erik Öjebo Puntos 6937

MapCruncher

http://research.microsoft.com/en-us/um/redmond/projects/mapcruncher/

funciona bien y se puede utilizar para cortar imágenes

0voto

Script gdal_tiler.py de http://code.google.com/p/tilers-tools podría ser una opción útil.

Por lo general, muestra un rendimiento muy bueno en comparación con gdal2tiles.py y debería funcionar con cualquier fuente GDAL (conjunto de datos), en particular, no requiere una conversión de un conjunto de datos de origen a RGB.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X