[gdal-dev] Modify original ColorTable in VRT & TIFF files

lars.schylberg at blixtmail.se lars.schylberg at blixtmail.se
Fri Apr 23 02:31:13 PDT 2021


Hi again,

Some other tricks.  To extract the color table from a PNG I often use pngcheck.

pngcheck -p /data/tests/500K_large_pct.png \
| sed '1,2d' \
| awk 'NR < 257' \
| sed 's/[=].*$//' \
| sed 's/[(:)]//g' \
| sed 's/,/ /g' \
| sed 's/...//' > color.txt


You could add an extra print command if you want to write it in other format:
| awk -F, '{printf "%d,%d,%d,255\n", $1, $2, $3}'

To assemble a vrt and a tif I have used gdalbuildvrt command with the argument "-separate".
You get a new vrt that You then convert with gdal_translate.

Have fun / Lars Schylberg


22 april 2021 kl. 22:50, lars.schylberg at blixtmail.se skrev:

> Hi, 
> 
> I had to deal a lot with palette tiff images a couple of years ago.
> 
> What I did was that edited the vrt files with sed inline editing:
> 
> Some examples:
> 
> Insert a text file after the row that is: /VRTRasterBand dataType="Byte" band="1" The inserted file
> here is orig_colortable_vrt.txt:
> 
> sed -i -e '/VRTRasterBand dataType="Byte" band="1"/r orig_colortable_vrt.txt' image_6.vrt
> 
> Remove a certain line that contains "NoDataValue"
> 
> sed -i -e '/NoDataValue/d' image_6.vrt
> 
> There a also a sed commands to delete certain rows. Just read many sed examples.
> 
> Have fun / Lars Schylberg
> 
> 22 april 2021 kl. 20:25, "Hotmail" <rlelamer at hotmail.fr> skrev:
> 
>> Hi all,
>> 
>> I'm looking to modify the original ColorTable, when georeferencing, PNG => gdal_translate +
>> gdalwarp => TIFF.
>> 
>>> gdal_translate -of VRT -a_srs EPSG:4326 file_png file_vrt -a_ullr xxxx
>>> gdalwarp -s_srs EPSG:4326 -t_srs EPSG:3857 file_vrt file_tiff
>> 
>> If I open the VRT file and do the edit manually, the output TIFF file is correct.
>> The problem is that I have 524288 files ... so I would like to do the modification automatically,
>> via gdal_translate.
>> But I don't quite understand using the parameters of the command ...
>> 
>> • Original VRT & TIFF files
>> 
>> # VRT
>> <VRTRasterBand dataType="Byte" band="1">
>> <ColorInterp>Palette</ColorInterp>
>> <ColorTable>
>> <Entry c1="0" c2="0" c3="255" c4="255" />
>> <Entry c1="255" c2="255" c3="255" c4="255" />
>> <Entry c1="0" c2="0" c3="0" c4="255" />
>> [...]
>> <Entry c1="0" c2="0" c3="0" c4="255" />
>> </ColorTable>
>> </VRTRasterBand>
>> 
>> # TIFF
>> Band 1 Block=63153x1 Type=Byte, ColorInterp=Palette
>> Color Table (RGB with 256 entries)
>> 0: 0,0,0,255
>> 1: 255,255,255,255
>> 2: 0,0,0,255
>> [...]
>> 255: 0,0,0,255
>> 
>> I want this :
>> • Modified VRT and TIFF files
>> 
>> # VRT
>> <VRTRasterBand dataType="Byte" band="1">
>> <ColorInterp>Palette</ColorInterp>
>> <ColorTable>
>> <Entry c1="0" c2="0" c3="255" c4="255" />
>> <Entry c1="0" c2="255" c3="0" c4="255" />
>> <Entry c1="255" c2="0" c3="0" c4="255" />
>> [...]
>> <Entry c1="255" c2="0" c3="0" c4="255" />
>> </ColorTable>
>> </VRTRasterBand>
>> 
>> # TIFF
>> Band 1 Block=63153x1 Type=Byte, ColorInterp=Palette
>> Color Table (RGB with 256 entries)
>> 0: 0,0,255,255
>> 1: 0,255,0,255
>> 2: 255,0,0,255
>> [...]
>> 255: 255,0,0,255
>> 
>> Whatever I find, redirects me to gdaldem (which I can't use). In gdal_translate, it seems to me
>> that the parameter -colorinterp_X might be suitable
>> but I can't find any concrete examples (or I have not looked in the right place).
>> 
>> I want to impose the following parameters:
>> Band 1
>> Type = Byte
>> ColorInterp = Palette
>> Color Table (RGB with 256 entries)
>> 
>> In ColorTable:
>> Entry 0 = 0,0,255,255
>> Entry 1 = 0,255,0,255
>> Entries 2 to 255 = 255,0,0,255
>> _______________________________________________
>> gdal-dev mailing list
>> gdal-dev at lists.osgeo.org
>> https://lists.osgeo.org/mailman/listinfo/gdal-dev
> 
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/gdal-dev


More information about the gdal-dev mailing list