[gdal-dev] empty Gtiff from Python

Vincent Schut schut at sarvision.nl
Fri Oct 28 04:57:56 EDT 2011


Tom van der Putte wrote:
> Hi List,
>
> I'm trying to save a numpy array to a GTiff, which should be quite 
> straightforward, considering all the examples available on the web. 
> However, I get an file that is not readable by Qgis, is regarded by 
> ArcMap to have only 0 and gdalinfo displays nothing on the values.
>
> I start with a ndarray, dtype = int32, shape = ( 10,10). It has 
> integer values between 1 and 10. The code is as follows:
>
> import numpy as np
> from osgeo import gdal
> from osgeo import osr
>
> #np array
> a = np.ones((10,10))
>
> #coord-system
> sr_str = 'LOCAL_CS["arbitrary"]'
> sr = osr.SpatialReference( sr_str )
>
> #driver
> driver = gdal.GetDriverByName("GTiff")
>
> #dataset
> ds = driver.Create("D:\\temp\\output.tif", 10, 10, 1, gdal.GDT_Byte)
> ds.SetProjection( sr_str )
> ds.SetGeoTransform((0, 1, 0,0, 0,1))
>
> #write and close
> ds.GetRasterBand(1).WriteArray(a)
> ds = None

Tom,

don't know if you can use WriteArray this way... what I always do, is:

from osgeo import gdal_array
# to write numpy array:
gdal_array.BandWriteAsArray(ds.GetRasterBand(1), a)

Best,
Vincent.
>
> The corresponding gdalinfo is:
> *********
> Raster dataset parameters:
>   Projection: 
> LOCAL_CS["arbitrary",UNIT["metre",1,AUTHORITY["EPSG","9001"]]]
>   RasterCount: 1
>   RasterSize (10,10)
> Using driver GeoTIFF
>   Metadata:
>     0:  AREA_OR_POINT=Area
>
>   Image Structure Metadata:
>     0:  INTERLEAVE=BAND
>
> Corner Coordinates:
>   Upper Left (0, 0)
>   Lower Left (0, 10)
>   Upper Right (10, 0)
>   Lower Right (10, 10)
>   Center (5, 5)
>
> Coordinate System is:
> LOCAL_CS["arbitrary",
>     UNIT["metre",1,
>         AUTHORITY["EPSG","9001"]]]
> Band 1 :
>    DataType: Byte
>    ColorInterpretation: Gray
>    Description:
>    Size (10,10)
>    BlockSize (10,10)
> *********
>
> I have tried both version 1.6.3 (I'm trying to make a Qgis plugin, and 
> thus restricted to 1.6.3) as well as 1.8.1. I have also tried ds = 
> driver.Create("D:\\temp\\output.tif", 10, 10, 1, gdal.GDT_Int32), but 
> that didn't make much difference.
>
> I tried to make a Surfer grid (GSBG), and this somewhat worked: it 
> gave a nice picture, but the values were off the charts.
>
> Any clues as to what I'm missing here? Cheers,
>
> Tom van der Putte
>
>
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/gdal-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/gdal-dev/attachments/20111028/41a3422a/attachment.html


More information about the gdal-dev mailing list