¿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 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.


2
@vadp, @markusn, @mapperz y todos los demás, por favor sea descriptivo. Además del enlace, una o dos oraciones sobre por qué crees que vale la pena ver esta herramienta y qué diferencia de las demás será útil. Queremos que la respuesta sea útil en el futuro, así como de inmediato. Tarde o temprano, se produce la rotura de enlaces y si todo lo que tenemos es la URL, es difícil encontrar dónde se encarnó el proyecto.
Matt Wilkie

44
Hola usuario890, ¿podría publicar su solución final a la pregunta y marcarla como cerrada? en este caso, parece que usar los enlaces específicos del idioma le dio el rendimiento que necesita.
scw

No puedo agregar un comentario a mi propia publicación :( Pero gdal_tiler.py también admite multiprocesamiento, pero de una manera muy bruta: simplemente procesa fuentes 'n' a la vez. Sin embargo, tiene algún efecto positivo :)
Vadim

Respuestas:




1

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.



0

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:

  • Metatilización, 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.

0

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.


-1

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


El enlace ya no funciona
AndrewHarvey

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.