Esri Shapefile Feature Representation

In addition to the generic FME feature attributes that FME Workbench adds to all features (see About Feature Type Attributes), this format also adds format-specific attributes (Format Attributes).

Shapefile features consist of geometry and a set of user-defined attributes.

Geometry types can be two-dimensional (2D), 2D plus measures (2DM), 3D, or 3D plus measures (3DM).

shape_first_feature is set as the default geometry for a Shapefile writer feature type, unless the writer is created through generating a workspace, or if the writer schema definition was copied from a Shapefile reader.

A shapefile defines a set of features that share the same geometry type and the same list of user-defined attributes. In other words, all features belonging to the same shapefile have the same value for the fme_type attribute and the same list of user-defined attributes. The values of the user-defined attributes can vary from feature to feature within the same shapefile. The geometry type and the names of the user-defined attributes for an individual shapefile are specified in the feature type parameters for that shapefile. The feature type of a shapefile feature is the same as the baseName specified in the feature type name.

There is one exception where the geometry type indicated in the feature type parameters may not be the type of file that is actually created. If the feature type indicates that a point file is to be created, but the first actual feature written to that file is instead a multipoint, a multipoint file will be created instead. (The same is true for pointz/multipointz and pointm/multipointm files.)

Note: As of Esri ArcGIS Desktop 9.3, shapefiles of type shape_null are no longer valid. Any feature type parameters with fme_type set to fme_null will be output instead as a Point2D filled with null geometries.

Polyline and Polygon Features

When reading a polyline feature with multiple parts, the FME representation consists of an aggregate of lines. Similarly, when reading a polygon feature with multiple parts, the FME representation consists of an aggregate of polygons.

Conversely, when writing aggregates of lines or polygons, FME will output multi-part polyline and polygon shapefile features.

3D Polygon or Multipatch Geometry Types

When providing 3D data to the Shapefile writer, the 3D polygon or multipatch geometry types can either split or preserve the 3D geometries. By default, 3D surfaces and solids are mapped to multipatches to preserve their representation as single objects.

If 3D geometries are instead provided to 3D polygon destination feature types, the surfaces and solids will be converted to individual component polygons.

See Esri Shapefile Writer Parameters.

Reading Records Marked as Deleted

The .dbf file that stores feature attribution supports marking individual records as deleted without removing the record from the file. Historically, this would be done because it was faster to change a small portion of the file to indicate the record should be ignored than it was to remove the record by rewriting the file without it being present. This is still true, although the delay is far less noticeable on modern hardware. Some software packages take advantage of this and use the flag in the .dbf to indicate that the corresponding geometry is deleted and may not actually remove the records from the dataset.

ArcGIS does not check the flag in the .dbf file and will read all records in the dataset. FME will also read Shapefile datasets in the same manner, but will issue a log message when such records are encountered. Note: Writing datasets with deleted records will not preserve the deleted property, and rereading the original GIS package with this behavior may result in records previously marked as deleted reappearing after round-tripping through FME.