[gdal-dev] (no subject)

Frank Warmerdam warmerdam at pobox.com
Mon Mar 1 10:10:56 EST 2010


Discourse Maps wrote:
> I am simply trying to open a raster image, manipulate in NumPy and then spit
> it back out in GDAL.
> 
> I am having trouble setting null data...
> I tried: ds.GetRasterBand(1).SetNoDataValue( -9999 )
> but nothing seems to work.
...

Dear Discourse Maps,

Presumably you should be setting the nodata value on the
first band of the "dst_ds", not the source dataset.  But
I don't see any SetNoDataValue() call at all in your script.

I would suggest adding it right after the Create() call.

I would also note that the HFA driver does not have a COMPRESS=LZW
creation option, though you can use [ 'COMPRESSED=YES' ] to use
the grid compression scheme supported by the format.

> dst_format = 'HFA'
> dst_datatype = gdal.GDT_Int16
> dst_options = ['COMPRESS=LZW']
> dst_file='sequest_final.img'
> dst_xsize = nx
> dst_ysize = ny
> dst_nbands = 1
> 
> geoTransform = ds.GetGeoTransform()
> proj = ds.GetProjection()
> 
> driver = gdal.GetDriverByName( dst_format )
> dst_ds = driver.Create(dst_file, dst_xsize, dst_ysize, dst_nbands,
> dst_datatype, dst_options)
> 
> for j in range(ny):
> nxarray = data[j,:]
> nxarray.shape = (1,nx)
> print nxarray
> dst_ds.GetRasterBand(1).WriteArray(nxarray,0,j)
> dst_ds.SetGeoTransform(geoTransform)
> dst_ds.SetProjection(proj)
> dst_ds = None

Your email client has reformatted the script so it is hard
to see the indentation.  But I would advise strongly against
doing SetGeoTransform() and SetProjection() many times on the
same dataset.

Best regards,
-- 
---------------------------------------+--------------------------------------
I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | Geospatial Programmer for Rent



More information about the gdal-dev mailing list