[gdal-dev] gdal2tiles 3.11.3 dies when source files have transparency

Scott public at postholer.com
Mon Sep 29 09:03:22 PDT 2025


Hey Stefan,

I don't have a direct answer to your question. But, I noticed you are 
using gdal 3.11.3. I would encourage you to try the gdal cli version. It 
doesn't rely on python and has a whole bunch of options. Something like:

echo "Creating complete.gdalg.json..."
gdal raster mosaic \
    --input="cache/*.tif" \
    --output="complete.gdalg.json" \
    --resolution=highest \
    --overwrite

echo "Creating tiles..."
gdal raster tile \
    --input=complete.gdalg.json \
    --min-zoom=12 --max-zoom=14 \
    --skip-blank --overview-resampling=cubic \
    --co ZLEVEL=9 --add-alpha \
    --output=tilesDir \
    --progress

Documentation can be found here:
https://gdal.org/en/stable/programs/gdal_raster_tile.html#gdal-raster-tile

Hope that helps!
Scott


On 9/29/25 08:41, Stefan Gofferje via gdal-dev wrote:
> Hi all,
> 
> I have 4 large GeoTIFF files from which I want to create XYZ tiles. I 
> have tried various combinations with gdal_merge, gdalbuildvrt and 
> gdal_translate and the result is the same:
> 
> When the source file contains transparency such as
> 
> gdalbuildvrt -srcnodata 0 VVVH.vrt ${LIST}
> gdal_merge -n 0 -a_nodata 0 -o VVVH.tif ${LIST}
> 
> etc...
> 
> gdal2tiles dies complaining that the source file cannot be found in 
> the /tmp directory.
> 
> I call gdal2tiles like this:
> /usr/bin/gdal2tiles -x --processes 8 --xyz -z 8-14 VVVH.vrt tiles
> or
> /usr/bin/gdal2tiles -x --processes 8 --xyz -z 8-14 VVVH.tif tiles
> depending on what source file I created.
> 
> I really would like to have tiles which are transparent where the source 
> files are instead of black.
> 
> Example output:
> 
> 0multiprocessing.pool.RemoteTraceback:
> """
> Traceback (most recent call last):
>    File "/usr/lib/python3.12/multiprocessing/pool.py", line 125, in worker
>      result = (True, func(*args, **kwds))
>                      ^^^^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3.12/multiprocessing/pool.py", line 48, in mapstar
>      return list(map(*args))
>             ^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3/dist-packages/osgeo_utils/gdal2tiles.py", line 
> 1335, in create_base_tile
>      alpha = alphaband.ReadRaster(rx, ry, rxsize, rysize, wxsize, wysize)
>              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3/dist-packages/osgeo/gdal.py", line 8756, in 
> ReadRaster
>      return _gdal.Band_ReadRaster1(self, xoff, yoff, xsize, ysize,
>             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> RuntimeError: /tmp/tmpg8iuy420/VVVH.tif: No such file or directory
> May be caused by: /tmp/tmpg8iuy420/VVVH.tif: No such file or directory
> """
> 
> The above exception was the direct cause of the following exception:
> 
> Traceback (most recent call last):
>    File "/usr/bin/gdal2tiles", line 33, in <module>
>      sys.exit(load_entry_point('GDAL==3.11.3', 'console_scripts', 
> 'gdal2tiles')())
> 
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3/dist-packages/osgeo_utils/gdal2tiles.py", line 
> 4625, in main
>      return submain(argv, called_from_main=called_from_main)
>             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3/dist-packages/osgeo_utils/auxiliary/util.py", 
> line 46, in enable_exceptions_wrapper
>      return fun(*args, **kwargs)
>             ^^^^^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3/dist-packages/osgeo_utils/gdal2tiles.py", line 
> 4655, in submain
>      multi_threaded_tiling(input_file, output_folder, options, pool)
>    File "/usr/lib/python3/dist-packages/osgeo_utils/auxiliary/util.py", 
> line 46, in enable_exceptions_wrapper
>      return fun(*args, **kwargs)
>             ^^^^^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3/dist-packages/osgeo_utils/gdal2tiles.py", line 
> 4549, in multi_threaded_tiling
>      for _ in pool.imap_unordered(
>    File "/usr/lib/python3.12/multiprocessing/pool.py", line 451, in 
> <genexpr>
>      return (item for chunk in result for item in chunk)
>             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3.12/multiprocessing/pool.py", line 873, in next
>      raise value
> RuntimeError: /tmp/tmpg8iuy420/VVVH.tif: No such file or directory
> May be caused by: /tmp/tmpg8iuy420/VVVH.tif: No such file or directory
> 
> 
> 



More information about the gdal-dev mailing list