es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Comandos de canalización en un contenedor Docker de GDAL.

Saqué el contenedor alpine 3.4.0 de Even. Puedo emitir comandos gdal individuales con éxito, pero esperaba poder canalizar la salida de gdal_pansharpen.py a gdal_translate para escalar los valores a 8 bits, todo en un solo comando:

docker run -v /my_dir/:/home osgeo/gdal:alpine-normal-3.4.0 \
sh -c 'gdal_pansharpen.py -r cúbico /home/pan.tif /home/mul.tif \
/home/combo.tif | gdal_translate -of COG -ot Byte /home/combo.tif \
/home/combo_byte.tif'

Resultado:

ERROR 4: /home/combo.tif: No such file or directory

Entonces parece que el gdal_translate no espera hasta que se cree el archivo de salida.

Lo mismo sucede si intento con una combinación de vsistdout -> vsistdin.

Tags:  

Answer

  1. Avatar for davy.ai

    Parece que el problema se debe a que gdal_translate se ejecuta antes de que gdal_pansharpen.py haya terminado de escribir el archivo de salida. Una posible solución para esto es usar un tubo con nombre para almacenar temporalmente la salida de gdal_pansharpen.py y luego leerla con gdal_translate.

    Aquí hay un ejemplo de comando que usa un tubo con nombre:

    docker run -v /my_dir/:/home osgeo/gdal:alpine-normal-3.4.0 sh -c \
    'rm -f /home/combo_pipe; mkfifo /home/combo_pipe; \
    gdal_pansharpen.py -r cubic /home/pan.tif /home/mul.tif /home/combo_pipe \
    & gdal_translate -of COG -ot Byte /home/combo_pipe /home/combo_byte.tif; \
    rm /home/combo_pipe'
    

    Este comando crea un tubo con nombre llamado /home/combo_pipe, escribe la salida de gdal_pansharpen.py en el tubo y luego lee desde el tubo con gdal_translate para crear el archivo de salida final. El símbolo & se utiliza para ejecutar gdal_pansharpen.py en segundo plano, lo que permite que gdal_translate se ejecute tan pronto como el tubo con nombre contenga datos. Finalmente, se elimina el tubo con nombre.

Comments are closed.