[gdal-dev] Convert alpha to nodata?

Even Rouault even.rouault at spatialys.com
Fri Jan 19 09:32:38 PST 2024


Hi Rob,

I can't think an easy way of doing what you want.

Well, you can definitely do that using a VRT Python pixel function, that 
would essentially do your --calc expression

Cf 
https://gdal.org/drivers/raster/vrt.html#using-derived-bands-with-pixel-functions-in-python

The example of 
https://gdal.org/drivers/raster/vrt.html#vrt-that-adds-2-or-more-rasters 
is probably the closest starting point. (you can add <SourceBand> to the 
<SimpleSource>'s to specify bands 1 and 4)

A nice exercice for (Pythonist) contributors would be to add a -f VRT 
capability to gdal_calc.py that would essentially automate the writing 
of such VRT using Python pixel functions. Just saying...

Even

Le 19/01/2024 à 17:40, Robert Coup via gdal-dev a écrit :
> Maybe it's just Friday, but I could use a pointer here :-)
>
> My input raster is a RGBA byte image, where the alpha channel value is 
> 0 or 255 (ie: effectively a mask). The output is ideally a VRT file, 
> RGB with Int16 data type, using nodata=-1.
>
> So I want to convert the alpha channel to a nodata value.
>
> The alpha/nodata/mask/band options to translate/warp haven't got me 
> very far, neither has hand-crafting various UseMaskBand/MaskBand 
> elements in a VRT.
>
> I can do it to concrete tif files with something like this, 
> repeating for R,G,B and merge the output bands together, but it's a 
> lot of processing.
>
>   gdal_calc.py -A src.tif -B src.tif \
>     --outfile out_b1.tif --co TILED=YES --type=Int16 --NoDataValue=-1 \
>     --A_band=1 --B_band=4 --calc="where(B >= 128, A, -1)"
>
> I feel like I'm probably missing a simpler path? (Which I will 
> definitely add to an Examples section somewhere)
>
> Thanks,
>
> Rob :)
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/gdal-dev

-- 
http://www.spatialys.com
My software is free, but my time generally not.



More information about the gdal-dev mailing list