[Gdal-dev] ArcSDE Raster Driver for GDAL

Howard Butler hobu at iastate.edu
Fri Dec 8 17:56:07 EST 2006


Folks,

I have received a commitment for funding the development of a GDAL  
driver for ESRI ArcSDE rasters.   I am providing the technical  
proposal to the PSC to ask for permission to implement and include it  
in GDAL, and I ask for detailed technical feedback on it if anyone  
has any.

Thanks

Howard

	ESRI ArcSDE Raster Driver for GDAL
========================================

Purpose
=======

To implement a new GDAL driver for reading ESRI ArcSDE Raster data.


Technical Details
=================

Overall
-------

The ESRI ArcSDE (SDE) Raster driver will connect through the SDE C  
API SDK to
read raster data from SDE servers, and it will require linkage to the
C API SDK (available for Linux, Windows, and Solaris ) as well as a
license to use the SDK (often an SDE license itself, or permission/ 
agreement
from ESRI to redistribute).

OGR already provides vector read support for ArcSDE.  Configuration
infrastructure is already in place on both the Linux and Windows  
platform
for the vector side.  This infrastructure will also be utilized for the
raster side.

Observations
------------

* This driver implementation will only provide *read* support for ArcSDE
   Rasters.  Storing rasters in ArcSDE with the GDAL library or GDAL  
tools
   will not be implemented, but it should be possible to implement it  
at a
   future time.

* Due to library/linking limitations, support for ArcSDE Rasters on
   Solaris will require that GDAL with ArcSDE raster (and vector)  
support
   be compiled with the Sun Pro compiler.

* "Direct connect", or direct database connection and data extraction
   *will not* be provided by this driver.  Usage of this driver will  
require
   linkage to the ArcSDE C API SDK.

* ArcSDE supports n-band imagery, and the driver will take
   advantage of this feature.

* ArcSDE supports the concept of "raster catalogs," where multiple  
rasters
   are mosaic'd into a common layer with a common color table and  
combined
   extent.  The ArcSDE raster driver will attempt to play nice with  
these
   layers, but there may be unforeseen complications.

* ArcSDE internal colormaps will be supported.

Performance Considerations
--------------------------

* ArcSDE connections typically take 1-2 seconds for authentication  
and setup
   via the ArcSDE C API.  This penalty will be taken upon each  
GDALOpen call.

* For applications like MapServer, it will be important to support
   "fast-large-reads," and this will probably mean overriding the  
RasterIO
   machinery within GDAL.  This usage model is probably most  
prevalent in
   pure data format transformation operations as well.

* The "lots-of-small-reads" usage model could be problematic to make  
performant
   due to network overhead and database overhead (ArcSDE makes
   database joins for each request which will be unavoidable).

Specification Features
----------------------

The ArcSDE GDAL raster driver will attempt to take advantage of most
of the features that ArcSDE provides with respect to rasters.  These  
items
include:

*  Proper NODATA support

*  Reasonable attempts to access data stored in all the various
    formats (LZW, JP2K, etc) ArcSDE provides will be made.

*  Properly configured and stored ArcSDE Raster Catalogs *should* be
    supported, given that all data in the catalog are stored in a  
similar
    format.

*  GDAL configuration options will be provided to adjust operations  
of the
    ArcSDE raster driver to accommodate certain performance  
considerations.

*  "Plugin" support for the ArcSDE raster driver will be provided in  
a manner
    similar to the ArcSDE vector driver.  This will optionally allow  
a user
    to dynamically load the driver at runtime.  Additionally, this  
will allow
    users of MS4W to take advantage of the driver if they have the  
ArcSDE
    C API SDK.

*  The driver will take advantage of internally stored overviews of the
    data.  Externally generating overviews using GDAL and storing and  
reading
    them via disk will not be supported initially.

Connection Specification
------------------------

A connection to an ArcSDE raster layer will be specified in a similar  
fashion
to a vector layer:

-- SDE:sdemachine,port:5151,database,username,password,layername

A practical and convenient solution for multiple raster "layers"  
would need to
be identified to query the entire database to report information on  
all of the
raster layers available.  One approach might be to follow the SUBDATASET
metadata model that HDF uses, although in databases with lots of  
layers, this
could perform poorly.


Spatial referencing
--------------------

OSR (contained in the GDAL source tree) provides extensive functionality
for transforming back and forth between ESRI-encoded SRS WKT.  This
functionality will be utilized to support coordinate systems that are
properly described within ArcSDE raster layers.  It will continue to be
possible to override SRS information manually in a similar fashion to
other GDAL drivers.


Testing
-------

ArcSDE versions 9.1 and 9.2 will be tested.
Accommodations to use earlier versions of ArcSDE will be made where  
appropriate
(and identified), but testing of the driver will not happen on those  
versions
of either the SDK or the server itself.  Both 32-bit Linux and Windows
environments will be tested.  Initially, 64-bit platforms will not be  
tested,
but any issues that are identified will be corrected.

RGB, RGBA, and multi-band imagery will be used as test cases.  A raster
catalog of typical color ortho imagery will be used to test the "catalog
layer" case. Usage with GDAL VRT will be tested.


Documentation
-------------

Standard "user" documentation will be written for the ArcSDE raster  
driver
in HTML format.

Intellectual Property
---------------------

The ArcSDE raster driver will become a regular part of the GDAL library,
and its source code and documentation will be released under the normal
GDAL open source license.





More information about the Gdal-dev mailing list