Estoy trabajando en una aplicación que necesita crear mosaicos (jpeg) a partir de un conjunto de datos ráster dado. Mi inclinación inicial era usar gdal2tiles.py, pero su rendimiento parece que podría mejorarse.
Eso me lleva a hacer 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, utilizo los enlaces MapServer C # MapScript para hacer el trabajo. Es decir, creo un objeto de mapa, recorro todos los límites de mosaico 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 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 GDAL?
EDITAR: Después de investigar un poco más hoy, encontré la respuesta justo frente a mí. Si ha descargado FWTools, las carpetas csharp \ apps contienen varias clases para demostrar los enlaces C # GDAL. En mi caso, GDALRead.cs y GDALReadDirect.cs eran lo que estaba buscando.
Respuestas:
Alguien ha pasado el tiempo para hacer que gdal2tiles.py use múltiples procesadores: gdal paralelo
He usado esto y parece funcionar. Utiliza con éxito los 4 núcleos al 100% y reduce el tiempo total para crear los mosaicos a un cuarto del tiempo original.
fuente
¿Intentaste esto? http://www.klokan.cz/projects/gdal2tiles/
fuente
En mi empresa, escribimos scripts de Python personalizados, usando gdal_warp (fue antes de que supiéramos que existían gdal2tiles). Fue más rápido que g2t, especialmente cuando lo reescribimos para que se ejecute en muchos núcleos (usando python threadpool). También produjo mosaicos de mayor calidad (la interpolación de lanczos en g2t parece funcionar mal, en gdal_warp los mosaicos resultantes fueron sorprendentes).
Se necesita un poco de esfuerzo para escribir los scripts, debe calcular manualmente los cuadros delimitadores resultantes, configurar algunas opciones para proyecciones, etc.
fuente
MapCruncher
http://research.microsoft.com/en-us/um/redmond/projects/mapcruncher/
funciona bien y se puede usar para cortar imágenes
fuente
Otra opción es usar TileCache (WMS-C). Aunque nunca he usado gdal2tiles, no esperaría que TileCache trajera un rendimiento mejorado.
De todos modos, las siguientes estrategias pueden acelerar el mosaico:
fuente
El 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 la conversión de un conjunto de datos fuente a RGB.
fuente
Gdal2tiles_parallel https://gitlab.com/GitLabRGI/erdc/geopackage-python Si geopackage o MBTILES no se necesita python, eso se hace de forma nativa con gdal_translate.EXE. también necesita 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
fuente