¿Cómo cortar una 'imagen en mosaico' de un dataset ráster usando GDAL?

22

Estoy trabajando en una aplicación que necesita crear mosaicos (jpeg) a partir de un dataset ráster dado. Mi inclinación inicial fue usar gdal2tiles.py, pero su rendimiento parece que podría mejorarse.

Eso 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 dataset ráster usando GDAL? Y por 'imagen en mosaico', me refiero a un simple jpeg o png.

En mi prototipo, uso los enlaces MapScript C # MapScript para hacer el trabajo. Es decir, creo un objeto de mapa, recorro todos los límites de mosaico que necesito cortar, establezca la extensión de los objetos de mapa y luego guarde la imagen resultante. El rendimiento de este enfoque es significativamente mejor que el de gdal2tiles.py, pero me pregunto si uso GDAL directamente si no puedo hacerlo aún más rápido. ¿Alguien puede sugerir un flujo de trabajo similar con los métodos de GDAL?

EDITAR: Después de investigar un poco más hoy, encontré la respuesta justo delante de mí. Si ha descargado FWTools, las carpetas csharp \ apps contienen varias clases para demostrar los enlaces GDAL de C #. En mi caso, GDALRead.cs y GDALReadDirect.cs eran lo que estaba buscando.

    
pregunta user890 13.01.2011 - 15:16

7 respuestas

4

Alguien ha dedicado tiempo a hacer que gdal2tiles.py use varios procesadores: paralelo gdal

He usado esto y parece funcionar. Utiliza con éxito los 4 núcleos al 100% y reduce el tiempo total para crear las fichas hasta la cuarta parte del tiempo original.

    
respondido por el hazzey 28.06.2013 - 02:35
2

¿Intentaste esto? enlace

    
respondido por el markusN 13.01.2011 - 23:09
1

En mi empresa, escribimos scripts de Python personalizados, utilizando gdal_warp (fue antes de que supiéramos que existía gdal2tiles). Fue más rápido que g2t, especialmente cuando lo reescribimos para que se ejecutara en muchos núcleos (usando la agrupación de hilos de Python). También produjo azulejos de mayor calidad (la interpolación de lanczos en g2t parece funcionar mal, en gdal_warp los azulejos resultantes fueron sorprendentes).

Se necesita un poco de esfuerzo para escribir los scripts, necesita calcular manualmente los cuadros delimitadores resultantes, configurar algunas opciones para proyecciones, etc.

    
respondido por el stachu 22.08.2011 - 10:00
0

MapCruncher

enlace

funciona bien y puede usarse para cortar imágenes

    
respondido por el Mapperz 13.01.2011 - 17:02
0

Otra opción es utilizar TileCache (WMS-C). Aunque nunca he usado gdal2tiles, no esperaría que TileCache trajera un mejor rendimiento.

De todos modos, las siguientes estrategias pueden acelerar el mosaico:

  • Metatiling, si usa TileCache (me pregunto si gdal2tiles tiene una característica similar).
  • En caso de que los datos ráster sean una gran ortofoto, use un formato como ECW . Dado que este formato presenta descompresión parcial , al usar este formato puede obtener una ganancia de rendimiento significativa.
respondido por el dariapra 11.04.2011 - 13:11
0
La secuencia de comandos

gdal_tiler.py de enlace 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 fuente a RGB.

    
respondido por el user1923 10.02.2011 - 10:28
-1

Gdal2tiles_parallel enlace Si se realiza un geopackage o MBTILES, no se necesita python, se hace de forma nativa con gdal_translate.EXE. también debe ejecutar gdaladdo para agregar más de un nivel de zoom. También uso qtiles / qmetatiles para qgis desktop. Todavía nada puede competir con el software comercial maptiler pro. Si necesita una carpeta de mosaicos, simplemente convierta MBTILES a TMS O XYZ con mbUtil python

    
respondido por el GeospatialInformationTech 25.06.2017 - 16:58

Lea otras preguntas en las etiquetas