ESRI Shapefile
All varieties of ESRI Shapefiles should be available for reading, and
simple 3D files can be created.
Normally the OGR Shapefile driver treats a whole directory of shapefiles
as a dataset, and a single shapefile within that directory as a layer. In
this case the directory name should be used as the dataset name. However,
it is also possible to use one of the files (.shp, .shx or .dbf) in a
shapefile set as the dataset name, and then it will be treated as a dataset
with one layer.
Currently the shapefile driver always returns polygons, rather than
multipolygons, even for polygons with multiple outer rings. This is a
violation of the OGR (and Simple Features) data model, and will be corrected
at some point in the future. The new ESRI measure values are discarded
if encountered.
If a .prj files in old Arc/Info style or new ESRI OGC WKT style is present,
it will be read and used to associate a projection with features.
Creation Issues
The Shapefile driver treats a directory as a dataset, and each Shapefile
set (.shp, .shx, and .dbf) as a layer. The dataset name will be treated
as a directory name. If the directory already exists it is used and
existing files in the directory are ignored. If the directory does not
exist it will be created.
As a special case attempts to create a new dataset with the extension .shp
will result in a single file set being created instead of a directory.
ESRI shapefiles can only store one kind of geometry per layer (shapefile).
On creation this is may be set based on the source file (if a uniform geometry
type is known from the source driver), or it may be set directly by the
user with the layer creation option SHPT (shown below). If not set the
layer creation will fail. If geometries of incompatible types are written
to the layer, the output will be terminated with an error.
Note that this can make it very difficult to translate a mixed geometry layer
from another format into Shapefile format using ogr2ogr, since ogr2ogr has
no support for separating out geometries from a source layer.
Shapefile feature attributes are stored in an associated .dbf file, and so
attributes suffer a number of limitations:
- Attribute names can only be up to 12 characters long. Longer names will
be silently truncated. This may result in non-unique column names, which
will definately cause problems later.
- Only Integer, Real and String field types are supported. The various
list, and binary field types cannot be created.
- The field width and precision are directly used to establish storage
size in the .dbf file. This means that strings longer than the field
width, or numbers that don't fit into the indicated field format will suffer
truncation.
- Integer fields without an explicit width are treated as width 11.
- Real (floating point) fields without an explicit width are treated as
width 24 with 15 decimal places of precision.
- String fields without an assigned width are treated as 80 characters.
Also, .dbf files are required to have at least one field. If none are created
by the application an "FID" field will be automatically created and populated
with the record number.
Dataset Creation Options
None
Layer Creation Options
SHPT=type: Override the type of shapefile created. Can be one of
NULL for a simple .dbf file with no .shp file,
POINT, ARC, POLYGON or MULTIPOINT for 2D, or
POINTZ, ARCZ, POLYGONZ or MULTIPOINTZ for 3D. Shapefiles with measure
values are not supported, nor are MULTIPATCH files.
See Also