[Image-SIG] PIL and Remote Sensing

Frank Warmerdam warmerda@home.com
Mon, 21 Sep 1998 00:45:54 -0400

Fredrik and other Imaging SIGers,

I have downloaded, built, and installed Python, and the Image 0.3b2.  I
have also reviewed the PIL docs at your site, and the web document on 
extending Python.  I have also subscribed to the python imaging sig. Interesting stuff!

I come from a satellite remote sensing background, and I am interested
in how to integrate support for satelite imagery into Python and PIL.
I am the primary author of the GDB API at PCI.  GDB is a C API that
abstracts access to a variety of remote sensing raster formats (as well
as GIS vector formats). I am striking out on my own, and hoping to build
a library tentatively called GDAL (GeoSpatial Data Abstraction Library)
which would do something similar, but be free. 

A few things occur to me from this:

 o Does PIL always load the whole image, once it decides it needs some
   of it?  This could make it difficult to work with very large images.

 o It seems that multi-band images (more than four bands) would have to
   handled as image sequences of "L" images.  Is that correct?

 o It appears that 16bit data can only be supported as 32 bit floating
   point, though I understand you are considering a builtin 16bit data

 o There is no obvious way of supporting virtual file formats.  For 
   instance, in GDB there are some formats which aren't really related
   to files.  For instance the file "VD0" opens a socket connection to
   another process, and accesses it's video memory as an image.  I get
   the impression with PIL that the binary file is already opened, and
   the handled passed into the driver.
   On the other hand I was impressed by the way this file can be binary
   data from a stream, or an in memory string. 

I have reviewed some of your image file format support plugins, and 
they strike a familiar cord. :-)  I was trying to think about ways of
plugging in existing multi-format libraries, like GDB, or my hoped for
GDAL.  For instance, to add GDB I would need to call out to GDB from
the _open() method which doesn't seem to match the pattern of any of
your existing formats.  

I was thinking, it might be easiest to write an interface to the library
as another extension, and then have PIL load that extention in a
driver, which would allow it to call the Python interface from the 
PIL driver easily.  I presume that the object for the purposes of this
other library in Python could be placed into the ``info'' dictionary for
specialized use.


Is there any work on a Python library for vector data support anywhere?

Best regards,

Who can give them back their lives | Frank Warmerdam, Software Developer
and all those wasted years? - Rush | URL http://members.home.com/warmerda
                                   | warmerda@home.com