[gdal-dev] SetNoDataValue on Memory Raster

Even Rouault even.rouault at spatialys.com
Thu Feb 12 11:26:22 PST 2015


Brendan,

> 
> Using the Python bindings, I am having trouble getting a memory raster to
> respect SetNoDataValue. It works with a GeoTiff(if I close and then reopen
> it for reading), I presume because everything gets written when the raster
> is closed. My code:
> 
> conc_band = t_ds.GetRasterBand(1)
> conc_band.SetNoDataValue(-32768)

SetNoDataValue() only sets a parameter to indicate which value should be 
considered as nodata, but doesn't change the pixel values themselves.
Try adding
conc_band.Fill(-32768)


> thick_band = t_ds.GetRasterBand(2)
> thick_band.SetNoDataValue(-32768)

Idem, add
thick_band.Fill(-32768)

> gdal.RasterizeLayer(t_ds, [1], layer, options=['ATTRIBUTE=CONC'])
> gdal.RasterizeLayer(t_ds, [2], layer, options=['ATTRIBUTE=THICK'])
> #t_ds.FlushCache()
> conc = conc_band.ReadAsArray()
> thick = thick_band.ReadAsArray()
> 
> When I ReadAsArray, I get a 0 instead of -32768. I tried FlushCache
> (commented out above) but it did not help. How do I force the raster in
> memory to update before I reaqd it?
> 

Even

-- 
Spatialys - Geospatial professional services
http://www.spatialys.com


More information about the gdal-dev mailing list