[gdal-dev] Support for Terrain-RGB

Lars Ahlzen lars at ahlzen.com
Mon Jan 12 05:35:08 PST 2026


I think either "rgb-dem" or "encode-rgb" could work. While not strictly 
limited to RGB or DEMs, at least that's their typical and intended use.

Sounds like a raster driver, rather than a new raster DEM mode, would be 
advantageous. I imagine creation options might include:

- OFFSET (or BASE, as known in the terrain-RGB spec)
Defaults to -10000

- SCALE (or maybe STEP, to not to confuse it with any required scaling 
of the input?)
Defaults to 0.1

- DRIVER
Raster driver to output encoded image, e.g. PNG, WEBP, GTiff. Inferred 
from the output extension if omitted.

- BANDS
Order of raster bands to encode values into, most significant first. 
E.g. "RGB", "RGBA", "BGR", "RG".
Defaults to "RGB". If A is not included in the bands, the A channel can 
be used for alpha.

For ease of use, perhaps an ENCODING option (or similar) could provide 
preset values for the above, such as:

--co ENCODING=TERRAIN_RGB
would be equivalent to
--co OFFSET=-1000 --co SCALE=0.1 --co BANDS=RGB

-co ENCODING=TERRARIUM
would be equivalent to
--co OFFSET=-32768 --co SCALE=0.00390625 --co BANDS=RGB

This driver would allow things like:

  gdal raster convert dem.tif rgb.png --of encode-rgb --co DRIVER=PNG 
--co ENCODING=TERRARIUM

  gdal raster convert dem.tif rgb.png --of encode-rgb --co DRIVER=PNG 
--co ENCODING=TERRAIN_RGB

  gdal raster convert dem.tif rgb.png --of encode-rgb --co DRIVER=PNG 
--co BANDS=RGB --co OFFSET=-10000 --co SCALE=0.1

  gdal raster convert dem.tif rgb.png --of encode-rgb --co DRIVER=PNG 
--co BANDS=BG --co OFFSET=-1000 --co SCALE=1

  gdal raster tile --min-zoom 5 --max-zoom 15 --format ENCODE_RGB --co 
DRIVER=PNG --co ENCODING=TERRARIUM dem.tif rgb-tiles/

  gdal raster tile --min-zoom 5 --max-zoom 15 --format ENCODE_RGB --co 
DRIVER=WEBP --co LOSSLESS=YES --co BANDS=RGB --co OFFSET=-10000 --co 
SCALE=0.1 dem.tif rgb-tiles/

Certain creation options, like LOSSLESS=YES in the last example, may 
need to be passed on from the ENCODE_RGB driver to the actual output 
driver. Is that possible in general, or would it have to be handled as 
special cases for different formats?

- Lars

On 09/01/2026 07:02, Andrey VI via gdal-dev wrote:
> Why not just "rgb-dem", i.e. "RGB encoded DEM"?
>
>     Friday, January 9, 2026 3:16 AM +03:00 from rayg via gdal-dev
>     <gdal-dev at lists.osgeo.org>:
>     Maybe call it "scalar-rgb"? Because ultimately what the encoding
>     does is use the color channels to hold a single value. It doesn't
>     even have to be for elevations at all.
>     Could also add swizzle options in case BGR or some other order is
>     used. And include the alpha channel just in case, but also let
>     alpha be alpha if needed. If e.g. "A" is left off from the swizzle
>     option, then it's an actual alpha channel.
>     More general would be scalar encoding of any multichannel
>     (multiband) file, e.g. YCbCr, HSV, CMYK, etc.
>     Ray
>
>
>     On Thu, 8 Jan 2026 at 1:13 PM Even wrote:
>
>         >
>         > There's nothing especially terrain (or topography) about this afaics, 
>         > and utility seems like the right approach rather than creating a 
>         > format variant.
>
>         Actually Frédéric's intersting remark abou potential usage with "gdal
>         raster tile" would actually make the driver approach a better
>         choice....   unless we would extend "gdal raster tile" to accept a
>         pipeline to go to create a final tile from a 'raw' one, like 'gdal
>         raster tile --tile-pipeline="read ! encode-rgb --offset=-10000 ! write
>         --of PNG" --extension png  in.tif out_directory' .
>
>         But a ENCODE_RGB driver approach is more simple than implementing that.
>
>         Even
>
>         -- 
>         http://www.spatialys.com
>         My software is free, but my time generally not.
>
>         _______________________________________________
>         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
>
>
> --
> Andrey
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/gdal-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20260112/de48c186/attachment-0001.htm>


More information about the gdal-dev mailing list