[gdal-dev] Can GDAL open binary buffer contents as input for MEM
format?
Roger André
randre at gmail.com
Sat Jan 16 17:05:38 EST 2010
Hi Frank,
Thanks for the example. How can I specify alpha in that, for one of the
quantized 8-bit PNG's (with alpha) that MapServer produces?
They look like this:
Metadata:
Software=UMN Mapserver
Corner Coordinates:
Upper Left ( 0.0, 0.0)
Lower Left ( 0.0, 256.0)
Upper Right ( 256.0, 0.0)
Lower Right ( 256.0, 256.0)
Center ( 128.0, 128.0)
Band 1 Block=256x1 Type=Byte, ColorInterp=Palette
NoData Value=0
Color Table (RGB with 85 entries)
0: 0,0,0,0
1: 251,0,0,64
2: 250,0,0,54
3: 253,0,0,114
4: 254,0,0,176
5: 254,0,0,224
6: 254,0,0,228
7: 254,0,0,252
8: 253,0,0,168
9: 254,0,0,170
10: 254,0,0,234
11: 254,0,0,246
12: 254,0,0,230
13: 252,0,0,194
14: 253,0,0,232
15: 254,0,0,248
16: 254,0,0,226
17: 253,0,0,252
18: 254,0,0,244
19: 254,0,0,240
20: 253,0,0,248
21: 254,0,0,192
22: 250,0,0,98
23: 252,0,0,98
24: 253,0,0,236
25: 251,0,0,144
26: 253,0,0,208
27: 252,0,0,252
28: 253,0,0,250
29: 253,0,0,226
30: 254,0,0,212
31: 253,0,0,242
32: 250,0,0,112
33: 253,0,0,238
34: 253,0,0,222
35: 254,0,0,208
36: 253,0,0,234
37: 254,0,0,236
38: 254,0,0,232
39: 252,0,0,150
40: 253,0,0,240
41: 251,0,0,114
42: 253,0,0,244
43: 254,0,0,222
44: 231,0,0,255
45: 202,0,0,255
46: 249,0,0,255
47: 96,0,0,255
48: 63,0,0,255
49: 229,0,0,255
50: 89,0,0,255
51: 248,0,0,255
52: 192,0,0,255
53: 230,0,0,255
54: 88,0,0,255
55: 176,0,0,255
56: 225,0,0,255
57: 206,0,0,255
58: 64,0,0,255
59: 53,0,0,255
60: 113,0,0,255
61: 169,0,0,255
62: 183,0,0,255
63: 252,0,0,255
64: 184,0,0,255
65: 251,0,0,255
66: 247,0,0,255
67: 189,0,0,255
68: 224,0,0,255
69: 250,0,0,255
70: 244,0,0,255
71: 243,0,0,255
72: 227,0,0,255
73: 241,0,0,255
74: 253,0,0,255
75: 246,0,0,255
76: 167,0,0,255
77: 168,0,0,255
78: 254,0,0,255
79: 242,0,0,255
80: 245,0,0,255
81: 44,0,0,255
82: 161,0,0,255
83: 0,0,0,255
84: 255,0,0,255
Roger
--
On Sat, Jan 16, 2010 at 1:26 PM, Frank Warmerdam <warmerdam at pobox.com>wrote:
> 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,
> warmerdam at pobox.com
> light and sound - activate the windows | http://pobox.com/~warmerdam<http://pobox.com/%7Ewarmerdam>
> and watch the world go round - Rush | Geospatial Programmer for Rent
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/gdal-dev/attachments/20100116/b29a78e0/attachment.html
More information about the gdal-dev
mailing list