Roger André wrote:
Hi All,

I'd like to know if I can take the results of a MapServer Python mapscript 'mapImage.getBytes()' operation, and feed it into GDAL as a data source for an in-memory raster? The MapServer docs state that the results of 'getBytes' in Python is a "string of binary data". I'm not sure if GDAL can open this sort of object though.

For background purposes, the reason I would like to do this is so that I can try replacing PIL with GDAL in TileCache for the cutting of metatiles. PIL isn't properly saving the image formats generated by MapServer, whereas GDAL replicates them perfectly.

Roger,

I am not aware of a way to utilize a raw buffer as a mem dataset from
Python (though this is doable from C++).  However, you can just write
the buffer to a mem dataset.  This code snippet from the autotest suite
shows something like this:

    #######################################################
    # Setup dataset
    drv = gdal.GetDriverByName('MEM')
    gdaltest.mem_ds = drv.Create( 'mem_1.mem', 50, 3, gdal.GDT_Int32, 1 )
    ds = gdaltest.mem_ds

    raw_data = array.array('f',list(range(150))).tostring()
    ds.WriteRaster( 0, 0, 50, 3, raw_data,
                    buf_type = gdal.GDT_Float32,
                    band_list = [1] )

It is slightly more tricky with what I assume is a pixel interleaved 3
band image you would have.  Without having tested it, something like this
might work:

  mem_ds = gdal.GetDriverByName('MEM').Create('x',200,300,gdal.GDT_Byte,3)
  mem_ds.WriteRaster( 0, 0, 200, 300,
                      mapImage.getBytes(), 200, 300, gdal.GDT_Byte,
                      band_list=[1,2,3],
                      buf_pixel_space=3,
                      buf_line_space=3*200,
                      buf_band_space=1)

Good luck,

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

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

Reply via email to