[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
type.
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