Probably the problem is with data type. You obviously have data of float type and you give GDT_Byte to the gdal.GetDriverByName('GTiff').Create(). Either try to create array with Byte data or give GDT_Float32. In the latter case the produced geotiff will have 32 bits fo each pixel. It is not supported by simple viewers but should be read with ArcGIS.

On 02/01/2012 03:31 AM, questions anon wrote:
no I quickly checked that!
myarray is:
[[ 16.15035553  16.14380074  16.15581551 ...,  18.06388149  18.08930645
    18.08825245]
  [ 16.2154911   16.21180592  16.23977184 ...,  18.1085537   18.12040272
    18.12342682]
  [ 16.32851467  16.29202938  16.28964043 ...,  18.16753635  18.14905453
    18.16632977]
  ...,
  [ 30.50812759  30.58384018  30.66707535 ...,  26.31020527  26.47789459
    27.11495361]
  [ 30.76499577  30.76497536  30.79138317 ...,  26.45928288  26.64059887
    27.03641129]
  [ 31.01263275  30.96269417  30.9933857  ...,  26.78247185  26.77845631
    26.97975636]]

On Wed, Feb 1, 2012 at 1:25 PM, Kyle Shannon <ksshan...@gmail.com
<mailto:ksshan...@gmail.com>> wrote:

    Is 'myarray' full of zeros?

    /**
      *
      * Kyle Shannon
      * ksshan...@gmail.com <mailto:ksshan...@gmail.com>
      *
      */



    On Tue, Jan 31, 2012 at 19:20, questions anon
    <questions.a...@gmail.com <mailto:questions.a...@gmail.com>> wrote:

        thanks Frank, following your instructions with:

        src_ds=gdal_array.OpenArray(myarray)
        dst_ds =
        
gdal.GetDriverByName('GTiff').Create('E:/test/rasterise/mynewraster.tif',ncols,
        nrows, 1 ,gdal.GDT_Byte)
        dst_ds.SetGeoTransform(geotransform)
        dst_ds.GetRasterBand(1).WriteArray(myarray)

        I do not receive any error messages but the tiff produced are
        all just zeros. Is there a step I am missing?
        thanks


        On Wed, Feb 1, 2012 at 12:07 PM, Frank Warmerdam
        <warmer...@pobox.com <mailto:warmer...@pobox.com>> wrote:

            On Tue, Jan 31, 2012 at 4:38 PM, questions anon
            <questions.a...@gmail.com <mailto:questions.a...@gmail.com>>
            wrote:
             > I need to output my numpy array as a raster so that
            someone else can access
             > the data in ArcGIS. So basically the steps I need are:
             > read numpy array into gdal
             > convert to raster
             > use latitude and longitude and array size to set projection
             >
             > I am really struggling with gdal because I can't seem to
            find enough
             > documentation about each step to understand what it is doing.
             > Here are some of the steps I think I need:
             >
             > myarray=myarray
             > #the extent and shape of my array
             > xmin,ymin,xmax,ymax=[139.8,-39.2,150.0,-33.6]
             > ncols,nrows=[193,106]
             > xres=(xmax-xmin)/float(ncols)
             > yres=(ymax-ymin)/float(nrows)
             > geotransform=(xmin,xres,0,ymax,0, -yres)
             >
             > from osgeo import gdal
             > from osgeo import gdal_array
             >
             > src_ds=gdal_array.OpenArray(myarray)
             >
             > dst_ds =
             >
            
gdal.GetDriverByName('GTiff').Create('E:/test/rasterise/mynewraster.tif',ncols,
             > nrows, 1 ,gdal.GDT_Byte)
             > dst_rb = dst_ds.GetRasterBand(0)
             > dst_ds.SetGeoTransform(geotransform)
             > output = gdal.RasterizeLayer(dst_ds)

            Dear "Questions Anon",

            There are a variety of Python related information at:

            http://trac.osgeo.org/gdal/wiki/GdalOgrInPython

            One serious issue with the above is that
            "gdal.RasterizeLayer()" is used to
            turn vector data into raster data - for instance to
            rasterize polygon features
            into an existing raster file.  I think you want to write
            your array into a
            raster file.  I think you can just call
            "dst_ds.WriteArray(myarray)".

            Alternatively if that method does not exist on the dataset, you
            can write the one band like:

              dst_ds.GetRasterBand(1).WriteArray(myarray)

            Some of the samples referenced from the GdalOgrInPython
            should be
            helpful though I understand it can be hard to know where to
            look.

            Best regards,
            --
            
---------------------------------------+--------------------------------------
            I set the clouds in motion - turn up   | Frank Warmerdam,
            warmer...@pobox.com <mailto:warmer...@pobox.com>
            light and sound - activate the windows |
            http://pobox.com/~warmerdam <http://pobox.com/%7Ewarmerdam>
            and watch the world go round - Rush    | Geospatial Software
            Developer



        _______________________________________________
        gdal-dev mailing list
        gdal-dev@lists.osgeo.org <mailto:gdal-dev@lists.osgeo.org>
        http://lists.osgeo.org/mailman/listinfo/gdal-dev





_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to