You can use a RasterExpressionEvaluator to create additional band(s) based on the values of other bands.
Additional bands can be displayed in arcmap by changing the setting of the layer symbology to stretched and selecting the appropriate band.
My personal preference is for GeoTiffs when working with ArcMap, though be advise that there is a 2GB limit.
Thank you for your response @jdh. But I don't I think I explained myself properly.
The 10 distinct combinations of the 4 RGBA bands are colours and the new band that I want is just a number that represents each of these colours. Therefore I don't think I can use the RasterExpressionEvaluator for this, as far as I am aware. I thought perhaps the answer lies in palettes. So I tried to define a palette using the AttributeCreator by adding the following text into the text editor:
RGBA32 0 0,0,0,0 1 0,0,254,255 2 50,101,254,255 3 127,127,0,255 4 254,203,0,255 5 254,152,0,255 6 254,0,0,255 7 254,0,254,255 8 229,254,254,255
I followed this with the RasterPaletteAdder:
However I keep getting this error:
@RasterPaletteAttributes: A selected band has intepretation 'RED8', which is not a valid interpretation for a band with palettes. Please ensure that only bands with an interpretation of UINT8, UINT16, or UINT32 are selected. @SelectRaster may be used to modify selection
I feel like I'm on the right track but am missing something...
Hi, @aquamarine. Have you tried using the RasterInterpretationCoercer before your RasterPaletteAdder? You can force the interpretation to UINT8.
Hi, @aquamarine. Have you tried using the RasterInterpretationCoercer before your RasterPaletteAdder? You can force the interpretation to UINT8.
Thanks @courtney_m
Adding the RasterInterpretationCoercer and forcing it to UINT8 solved the problem! Are you able to explain why I needed to do this? I am not very familiar with raster interpretations and bands and palettes so am a bit perplexed with all this.
Regards
In that case you want to use a RasterPaletteGenerator which will convert selected bands to a new band with a palette.
Thanks @courtney_m
Adding the RasterInterpretationCoercer and forcing it to UINT8 solved the problem! Are you able to explain why I needed to do this? I am not very familiar with raster interpretations and bands and palettes so am a bit perplexed with all this.
Regards
Only rasters with an interpretation of UInt8, UInt16, or UInt32 can contain a palette. So in order to add a palette to your raster, you have to first do a transformation on the raster to force it to have an appropriate interpretation.
In that case you want to use a RasterPaletteGenerator which will convert selected bands to a new band with a palette.
Thansk @jdh
this method also works for me. It is probably better for me to use the RasterPaletteGenerator than the RasterPaletteAdder in this case, because I am exporting to GeoTiffs and GeoTiffs can only have 1 band.
Hi @aquamarine, as @jdh suggested, you can use the RasterPaletteGenerator to transform an RGB24 or RGBA32 raster into a UInt8, UInt16, or UInt32 single band raster with a palette. However, you cannot specify which destination cell value should be mapped to a specific (R,G,B) or (R,G,B,A) combination. In other words, the order of the palette entries cannot be controlled.
If you need to specify the destination single cell value corresponding to a specific (R,G,B) or (R,G,B,A) combination, the RasterExpressionEvaluator would still be a solution.
For example, assuming the mapping rule between each destination cell value and original (R,G,B) combination has been given as:
0 0,0,0
1 0,0,254
2 50,101,254
3 127,127,0
4 254,203,0
5 254,152,0
6 254,0,0
7 254,0,254
8 229,254,254
These two RasterExpressionEvaluators transform an RGB24 raster into a UInt8 single band raster. See also the attached demo:
rgb-raster-to-single-band-raster-demo.fmw (FME 2017.0)
Hi @aquamarine, as @jdh suggested, you can use the RasterPaletteGenerator to transform an RGB24 or RGBA32 raster into a UInt8, UInt16, or UInt32 single band raster with a palette. However, you cannot specify which destination cell value should be mapped to a specific (R,G,B) or (R,G,B,A) combination. In other words, the order of the palette entries cannot be controlled.
If you need to specify the destination single cell value corresponding to a specific (R,G,B) or (R,G,B,A) combination, the RasterExpressionEvaluator would still be a solution.
For example, assuming the mapping rule between each destination cell value and original (R,G,B) combination has been given as:
0 0,0,0
1 0,0,254
2 50,101,254
3 127,127,0
4 254,203,0
5 254,152,0
6 254,0,0
7 254,0,254
8 229,254,254
These two RasterExpressionEvaluators transform an RGB24 raster into a UInt8 single band raster. See also the attached demo:
rgb-raster-to-single-band-raster-demo.fmw (FME 2017.0)
Thank you @takashi . I don't need to change the order of the palette entries in this case, but in future this information on how to use the RasterExpressionEvaluator could come in very handy. Thanks!!