Does FME process features on an individual basis or as a group - How might this affect my translation process

From fmepedia


To help you forward this info a TinyURL (http://tinyurl.com/) has been defined.
  The URL for this page can be quoted as: http://tinyurl.com/okwm7  





Q) Does FME process features on an individual basis or as a group? How might this affect my translation process?

A) By default FME processes features on an individual basis; that is each feature is processed separately within each transformer before being passed on to the next. This is because most transformers work on Feature-Based Restructuring where the processing of one feature does not affect the next. Length measurement is one example of this; measuring the length of a line doesn't affect the length of the next (FME doesn't work at the quantum level).


However, some transformers work on Group-Based Restructuring where the processing of one feature DOES affect the next. Change Detection is one example of this; you can't detect whether a feature has changed unless you compare it against every other feature.


One consequence of group based processing is a hit on the available memory. If the process involves every feature in the dataset they must all be held in memory whilst that process is carried out, as opposed to a feature-based process which can read a feature into memory and release it to move onto the next. The Sorter transformer is a good example of the group-processing type of function.


A second consequence is that some transformers will give different results depending on how features are being processed. For example, a GlobalVariableSetter / GlobalVariableRetriever combination may not give the expected results if you don't consider how features are being processed (the first feature through a GlobalVariableSetter will go straight on through the GlobalVariableRetriever and retrieve the value it set itself - but if you insert a Sorter transformer between to hold up the features then the last feature will pass the GVSetter before the first passes the GVRetriever thus retrieving a different value) - Confused? Check out the attached workspace.

Attached Files
filesizedate
FME Internals Example1.zip5.0 kB09/25/06
User Comments Add a new comment