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.
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:
Este comando crea un tubo con nombre llamado
/home/combo_pipe
, escribe la salida degdal_pansharpen.py
en el tubo y luego lee desde el tubo congdal_translate
para crear el archivo de salida final. El símbolo&
se utiliza para ejecutargdal_pansharpen.py
en segundo plano, lo que permite quegdal_translate
se ejecute tan pronto como el tubo con nombre contenga datos. Finalmente, se elimina el tubo con nombre.