Spatial Archive and Interchange Format (SAIF) Reader

The Spatial Archive and Interchange Format (SAIF) features a powerful object-oriented data model described in an easy-to-use data definition language called Class Syntax Notation (CSN).

SAIF is the standard archive and interchange format for geographic data in the province of British Columbia. SAIF was developed to address both data interchange and data archival issues.1 As a result, SAIF is an excellent format for storing geographic data in a vendor-neutral manner. FME enables data stored in SAIF to be easily translated to any of the popular vendor formats.

Historical Fact: How did Safe Software get its name?

When Safe Software was founded, this format played a key role. Since "SAIF" is pronounced "safe," we decided to take the name Safe Software as a play on the SAIF format name.

We applied for the domain name in 1993, when the Internet was in its infancy. It is "safe" to say that we would not be able to get this name today!

Overview

SAIF uses the latest paradigm in data modeling. It employs an object-oriented data model supporting multiple inheritance. SAIF was designed to be user-extensible allowing users to easily create new class definitions. While designed with spatial data in mind, SAIF can be used just as effectively to model any type of data.

SAIF also supports other advanced data modeling concepts not found in any of the other formats.

  • Object Referencing:  SAIF enables objects within a single dataset to reference component objects. For example, if the geometry of a linear feature defines both a river bank and a lot boundary, then SAIF enables both the river and the lot boundary to reference the same linear feature.
  • Direct Support for Multimedia Datatypes:  SAIF enables multimedia datatypes such as JPEG, Graphic Interchange Format (GIF), Sound Files, or any other type of file to be stored directly within a dataset. Attributes which describe the embedded information are also stored in the file.
  • Object Linking:  SAIF enables objects within a SAIF dataset to refer to other objects and to associate attributes with these links.

SAIF datasets have the following structure:

SAIF Folder

SAIF datasets are composed of a collection of addressable objects. Each addressable object is identified with a unique identifier stored in the SAIF folder, along with the object’s class information and the object’s location within the dataset.

Unlike other file-based data storage formats, SAIF uses the folder to support random retrieval of data. For example, if a SAIF dataset contains Roads, Railroads, Rivers, and so on, you can quickly retrieve the Roads objects from the dataset without having to read features of any other type. Each addressable object in SAIF is generally used to hold a collection of features of the same type. For example, one addressable object may hold all of the Roads while another addressable object holds the Railroads, and a third addressable object contains the Rivers. This organization of data fits well with that used by most Geographical Information Systems (GIS) products.

Tip: Tip: To read every feature in a SAIF dataset, you can omit the IDs directive.

The <ReaderKeyword>_IDs statement within an FME mapping file is used to identify the objects to be retrieved from a SAIF dataset.

Upon opening a SAIF dataset, the SAIF reader logs the contents of the SAIF dataset to the FME log file.

SAIF Schema

The second major component of a SAIF dataset is the SAIF Schema. The SAIF Schema contains the class definitions for all objects stored within the SAIF dataset. Every SAIF feature within the dataset is defined by the data model stored in this portion of the dataset. The class definitions are specified the Class Syntax Notation (CSN). CSN is an easy to read notation, used specifically for defining classes in SAIF. See the Spatial Archive and Interchange Format: Formal Specification Release 3.2 for a complete description of SAIF and CSN.

SAIF Object Definitions

The third, and final, component of a SAIF dataset contains the feature data. The feature data within SAIF is stored in Object Syntax Notation (OSN). OSN is used specifically for defining objects in SAIF. See the Spatial Archive and Interchange Format: Formal Specification Release 3.2 for a complete description of SAIF and OSN.

The object definitions are broken down into smaller units called object sets. Each object set contains a collection of objects. For discussion purposes, it is assumed that there is a one-to-one correspondence between addressable objects and object sets, and you can use them interchangeably. The distinction between these two concepts is beyond the scope of this document.

For a more detailed description of the organizations of a SAIF dataset, see the SAIF Toolkit API Programmer’s Reference Manual Release 1.1.

Reader Overview

The SAIF reader module produces FME features from the features held in a SAIF dataset.

The SAIF reader first opens the SAIF dataset, retrieving the coordinate system and folder information. The SAIF reader extracts features from the SAIF dataset, one at a time, and passes them on to the rest of the FME.

Each feature has its coordinate system tagged with the coordinate system read from the SAIF file.