FSS

The GeoDMS can read and write data from an own primary data format, called FSS, with the FSS storagemanager. This format has the following advantages:

  1. It is a binary, fast format.
  2. It can store vector-data, grid-data and non spatial data.
  3. It supports the hierarchical structures of GeoDMS configurations.
  4. It support both storing and reading tiled/segmented data.

The disadvantage of the format is that is is only supported by the GeoDMS. We therefore advice to use the FSS as exchange format between GeoDMS projects.

example

Writing FSS:

unit<uint32> place := XML/woonplaats/ParsedXML/bag_LVC_Woonplaats
,   StorageName = "= FSSDir + '/place.fss'"
{
   attribute<rdc_mm> geom (polygon) := XML/woonplaats/geoBuilder/result;
   attribute<string> id             := bag_LVC_identificatie;
   attribute<string> name           := bag_LVC_woonplaatsNaam;
   container meta
   {
      attribute<string> status (..) := bag_LVC_woonplaatsStatus;
   }
}

Reading FSS:

unit<uint32> place
:   StorageName     = "= FSSDir + '/place.fss'"
,   StorageReadOnly = "True"
{
   attribute<geometries/rdc_mm> geom (polygon);
   attribute<string>            id;
   attribute<string>            name;

   container meta
   {
      attribute<string> status (..);
   }
}

A FSS Storage always need to configured for a unit as in the storage the number of entries is stored. Configuring a FSS for a container results in an error while reading the data.

The three attributes geom, id and name are stored as files with their name and .dmsdata extension in the woonplaats.fss folder (or with their name and a consecutive number in case of tiled/segmented data.

The attribute status is stored in a subfolder woonplaats.fss/meta. If data is stored in such subfolders, reading the data from the fss files requires this same hierarchy in your configuration (as in the example).

The value types of the attribute read from the fss files need to match with the value type of the writing configuration script. Use this script to determine these value types and the hierarchy of the fss storage.

Reading FSS with a subfolder using a for each loop

unit<uint32> place
: StorageName     = "= FSSDir + '/place.fss'"
, StorageReadOnly = "True"
{
  attribute<geometries/rdc_mm> geom (polygon);
  attribute<string>            id;
  attribute<string>            name;

  container meta :=
      for_each_ndv(
          status_types/name
         , place
         , string
      );
}