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).

Attribute Name

Contents

SHAPE_GEOMETRY

The type of the geometry read from the shapefile. This attribute will contain one of:

  • shapefile_point
  • shapefile_multipoint
  • shapefile_polyline
  • shapefile_polygon
  • shapefile_null
  • shapefile_multipatch

Default: No default

shapefile_measures

This is present for features that have measures when reading only if the reader parameter Treat Measures as Elevation is not specified or is set to No.

To write measures using this attribute, make sure the writer parameter Treat Measures as Elevation is not specified or is set to No, and simply build this list with one value for each vertex in the feature being written.

This is a comma-separated list of floating values which correspond to the vertex measures. The first value is for the first vertex, second for the second, and so on. NaN (Not a Number) values are represented by the string NaN.

Shapefile writer feature types can specify an additional geometry type: 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 shapefile_null are no longer valid. While it is possible to set the geometry type to shapefile_null, the actual file 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.