Opened 3 years ago

Closed 19 months ago

#3119 closed defect (fixed)

r.out.,gdal -c should not write Metadata: COLOR_TABLE_RULE_RGB

Reported by: neteler Owned by: grass-dev@…
Priority: normal Milestone: 7.2.3
Component: Raster Version: svn-trunk
Keywords: r.out.gdal Cc:
CPU: Unspecified Platform: Unspecified

Description

At time, when suppressing the color table export (eg when writing out in GeoTIFF format) with

r.out.gdal -c ...

still the metadata are written:

  Metadata:
    COLOR_TABLE_RULES_COUNT=5
    COLOR_TABLE_RULE_RGB_0=1.000000e+00 1.122440e+04 255 255 0 0 255 0
    COLOR_TABLE_RULE_RGB_1=1.122440e+04 2.244780e+04 0 255 0 0 255 255
    COLOR_TABLE_RULE_RGB_2=2.244780e+04 3.367120e+04 0 255 255 0 0 255
    COLOR_TABLE_RULE_RGB_3=3.367120e+04 4.489460e+04 0 0 255 255 0 255
    COLOR_TABLE_RULE_RGB_4=4.489460e+04 5.611800e+04 255 0 255 255 0 0

The code is here:

https://trac.osgeo.org/grass/browser/grass/trunk/raster/r.out.gdal/export_band.c#L315

Perhaps the if condition here should also consider "suppress_main_colortable"?

Change History (7)

comment:1 in reply to:  description Changed 3 years ago by mmetz

Replying to neteler:

At time, when suppressing the color table export (eg when writing out in GeoTIFF format) with

r.out.gdal -c ...

still the metadata are written:

  Metadata:
    COLOR_TABLE_RULES_COUNT=5
    COLOR_TABLE_RULE_RGB_0=1.000000e+00 1.122440e+04 255 255 0 0 255 0
    COLOR_TABLE_RULE_RGB_1=1.122440e+04 2.244780e+04 0 255 0 0 255 255
    COLOR_TABLE_RULE_RGB_2=2.244780e+04 3.367120e+04 0 255 255 0 0 255
    COLOR_TABLE_RULE_RGB_3=3.367120e+04 4.489460e+04 0 0 255 255 0 255
    COLOR_TABLE_RULE_RGB_4=4.489460e+04 5.611800e+04 255 0 255 255 0 0

The code is here:

https://trac.osgeo.org/grass/browser/grass/trunk/raster/r.out.gdal/export_band.c#L315

Perhaps the if condition here should also consider "suppress_main_colortable"?

The new 'm' flag suppresses writing out GRASS color rules to metadata in order to enhance compatibility with other GIS software not using GDAL (r69128-30 for trunk, relbr72, relbr70).

comment:2 Changed 3 years ago by neteler

Thanks.

Just an idea: should -c trigger -m automatically or is there any -c use case where the GRASS color rules are still wanted in the metadata?

comment:3 in reply to:  2 Changed 3 years ago by mmetz

Replying to neteler:

Thanks.

Just an idea: should -c trigger -m automatically or is there any -c use case where the GRASS color rules are still wanted in the metadata?

The main purpose of -c is to suppress those long color tables for UInt16 in GTiff: one separate entry for each possible value which makes rendering very slow. GTiff color tables and GRASS color rules are not the same, e.g. a simple GRASS color rule such as

0 black
255 white

is expanded to 256 entries for Byte. GRASS r.in.gdal prefers GRASS color rules as custom metadata over standard color tables, therefore these GRASS color rules are wanted also with the -m flag. BTW, earlier versions of QGIS also recognized these GRASS color rules. Format-dependent color tables as such are not custom metadata, the GDAL driver decides if the selected format supports color tables. Therefore I would regard the -c and -m flags as independent of each other.

comment:4 Changed 2 years ago by neteler

Milestone: 7.2.07.2.1

Ticket retargeted after milestone closed

comment:5 Changed 2 years ago by martinl

Milestone: 7.2.17.2.2

comment:6 Changed 21 months ago by neteler

Milestone: 7.2.27.2.3

Ticket retargeted after milestone closed

comment:7 Changed 19 months ago by mmetz

Resolution: fixed
Status: newclosed

Closing as fixed.

Note: See TracTickets for help on using tickets.