ESRI ArcSDE
OGR optionally supports reading ESRI ArcSDE database instances. ArcSDE is
a middleware spatial solution for storing spatial data in a variety of backend
relational databases. The OGR ArcSDE driver depends on being built with the
ESRI provided ArcSDE client libraries.
ArcSDE instances are accessed with a datasource name of the following
form. The server, instance, username and password fields are required. The instance
is the port number of the SDE server, which generally defaults to 5151.
If the layer parameter is specified then the SDE driver is able to skip reading
the summary metadata for each layer; skipping this step can be a significant time savings.
Note: Only GDAL 1.6+ supports querying against versions and write
operations. Older versions only support querying against the base (SDE.DEFAULT) version
and no writing operations.
SDE:server,instance,database,username,password[,layer]
To specify a version to query against, you *must* specify a layer as well.
The SDE.DEFAULT version will be used when no version name is specified.
SDE:server,instance,database,username,password,layer,[version]
You can also request to create a new version if it does not already exist.
If the child version already exists, it will be used unless the SDE_VERSIONOVERWRITE
environment variable is set to "TRUE". In that case, the version will be deleted
and recreated.
SDE:server,instance,database,username,password,layer,[parentversion],[childversion]
The OGR ArcSDE driver does not support reading CAD data (treated as BLOB
attribute), annotation properties, measure values at vertices, or raster data.
The ExecuteSQL() method does not get passed through to the underlying
database. For now it is interpreted by the limited OGR SQL handler.
Spatial indexes are used to accelerate spatial queries.
The driver has been tested with ArcSDE 9.x, and should work with newer
versions, as well as ArcSDE 8.2 or 8.3. Both 2D and 3D geometries are
supported. Curve geometries are approximated as line strings (actually
still TODO).
ArcSDE is generally sensitive to case-specific, fully-qualified tablenames.
While you may be able to use short names for some operations, others (notably deleting)
will require a fully-qualified name. Because of this fact, it is generally best
to always use fully-qualified table names.
Layer Creation Options
-
OVERWRITE: This can be set to allow an existing layer to be
overwritten during the layer creation process. If set, and the value
is not "NO", the layer will first be deleted prior to creating a new
layer of the same name as an existing layer. Set to "NO" explicitly,
or do not include the option to treat attempts to create new layers
which collide with existing layers of the same name as an error.
Off by default.
-
GEOMETRY_NAME: By default OGR creates new layers with the
geometry (feature) column named `SHAPE'. If you wish to use a different
name, it can be supplied with the GEOMETRY_NAME layer creation option.
-
SDE_FID: Can be set to override the default name of the feature
ID column. The default is "OBJECTID".
-
SDE_KEYWORD: The DBTUNE keyword with which to create the layer.
Defaults to "DEFAULTS".
-
SDE_DESCRIPTION: The text description of the layer. Defaults to
"Created by GDAL/OGR 1.6" (Also used as the version description when
creating a new child version from a parent version.)
-
SDE_MULTIVERSION: If this creation option is set is set to
"FALSE", multi-versioning will be disabled for the layer at creation
time. By default, multiversion tables are created when layers are created
on an SDE datasource.
Environment variables
- OGR_SDE_GETLAYERTYPE: This may be "TRUE" to determine the
geometry type from the database. Otherwise, the SDE driver will always
return an Unknown geometry type.
- OGR_SDE_SEARCHORDER: This may be "ATTRIBUTE_FIRST" to tell ArcSDE
to filter based on attributes *before* using a spatial filter or
"SPATIAL_FIRST" to use the spatial filter. By default, it uses the
spatial filter first.
-
SDE_VERSIONOVERWRITE: If set to "TRUE", the specified child
version will be deleted before being recreated. Note that this action
does nothing to reconsile any edits that existed on that version before
doing so and essentially throws them away.
Examples
See the ogr_sde.py test script for some example connection strings and usage of the driver.