[gdal-dev] How to decrease file size of colored raster bands?
Scott
public at postholer.com
Thu Jun 1 09:47:37 PDT 2023
As a test you can skip the whole python debacle and try this:
gdal_translate -f COG -co COMPRESS=DEFLATE -scale 0 255 -ot Byte
source.tif target.tif
On 6/1/23 07:35, afernandez wrote:
> Hello,
> I'm generating a raster file with GDAL. The pseudo-code (where the
> raster is loaded as 'var') for the colored version reads:
> # Initial manipulations
> dims = var.dimensions
> shape = var.shape
> driver_name = 'GTIFF'
> driver = gdal.GetDriverByName(driver_name)
> np_dtype = var.dtype
> type_code = gdal_array.NumericTypeCodeToGDALTypeCode(np_dtype)
> gdal_ds = driver.Create(_my_path_, cols, rows, 1,
> gdal.GDT_UInt16)
> gdal_ds.SetProjection(_my_projection_)
> gdal_ds.SetGeoTransform(_my_transformation_)
> # Creation of the bands and scaled matrix
> band = gdal_ds.GetRasterBand(1)
> data = var[_chosen_index_]
> data = ma.getdata(data)
> data_scaled = np.interp(data, (data.min(), data.max()), (0,
> 255))
> data_scaled2 = data_scaled.astype(int) # This is to rescale
> into integers so that it can color the layer
> # *** Lines to set up the color palette ***
> # Write the array to band once everything has been rescaled
> band.WriteArray(data_scaled2)
> gdal_ds.FlushCache()
> This works well but the problem is that the generated file becomes too
> large and difficult to work with. If I change to a black and white
> representation by simply changing the 7th line to:
> gdal_ds = driver.Create(out_path, cols, rows, 1, type_code)
> The new file has a size smaller than 1% of the colored one. I was
> wondering if there is anything intermediate (with colors but generating
> a smaller size) or if I would need a more radical approach such as using
> a driver different from GTIFF or something else.
> Thanks.
>
> _______________________________________________
> 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