BoundingBoxAccumulator
Takes a set of point, linear, polygonal, and/or aggregate features, and creates a two-dimensional bounding box, which contains all features. The bounding box is defined as the minimum enclosing rectangle for all input features. The minimum rectangle is such that all sides of the rectangle are parallel to the x axis and the y axis.
The input features may be partitioned into groups based on attribute values using the Group By parameter, and one bounding box feature is output for each group. If the Group By parameter is not specified, then all input features will be processed together and a single bounding box will be output. If a given bounding box has zero area, it will become a line or a point.
Parameters
Transformer
One bounding box feature is output for each unique combination of values of the attributes specified in the Group By parameter. The bounding box is the smallest rectangle that contains all the features that were members of the group. If Group By attributes are not specified, a single feature is output that represents the bounding box of all the features.
Note: How parallel processing works with FME: see About Parallel Processing for detailed information.
This parameter determines whether or not the transformer should perform the work across parallel processes. If it is enabled, a process will be launched for each group specified by the Group By parameter.
Parallel Processing Levels
For example, on a quad-core machine, minimal parallelism will result in two simultaneous FME processes. Extreme parallelism on an 8-core machine would result in 16 simultaneous processes.
You can experiment with this feature and view the information in the Windows Task Manager and the Workbench Log window.
No: This is the default behavior. Processing will only occur in this transformer once all input is present.
By Group: This transformer will process input groups in order. Changes of the value of the Group By parameter on the input stream will trigger batch processing on the currently accumulating group. This will improve overall speed if groups are large/complex, but could cause undesired behavior if input groups are not truly ordered.
Using Ordered input can provide performance gains in some scenarios, however, it is not always preferable, or even possible. Consider the following when using it, with both one- and two-input transformers.
Single Datasets/Feature Types: Are generally the optimal candidates for Ordered processing. If you know that the dataset is correctly ordered by the Group By attribute, using Input is Ordered By can improve performance, depending on the size and complexity of the data.
If the input is coming from a database, using ORDER BY in a SQL statement to have the database pre-order the data can be an extremely effective way to improve performance. Consider using a Database Readers with a SQL statement, or the SQLCreator transformer.
Multiple Datasets/Feature Types: Since all features matching a Group By value need to arrive before any features (of any feature type or dataset) belonging to the next group, using Ordering with multiple feature types is more complicated than processing a single feature type.
Multiple feature types and features from multiple datasets will not generally naturally occur in the correct order.
One approach is to send all features through a Sorter, sorting on the expected Group By attribute. The Sorter is a feature-holding transformer, collecting all input features, performing the sort, and then releasing them all. They can then be sent through an appropriate filter (TestFilter, AttributeFilter, GeometryFilter, or others), which are not feature-holding, and will release the features one at a time to the transformer using Input is Ordered By, now in the expected order.
The processing overhead of sorting and filtering may negate the performance gains you will get from using Input is Ordered By. In this case, using Group By without using Input is Ordered By may be the equivalent and simpler approach.
In all cases when using Input is Ordered By, if you are not sure that the incoming features are properly ordered, they should be sorted (if a single feature type), or sorted and then filtered (for more than one feature or geometry type).
As with many scenarios, testing different approaches in your workspace with your data is the only definitive way to identify performance gains.
Parameters
The Topfer index is a rule of thumb that dictates the number of source and destination features a generalized map should maintain. This parameter defaults to No. If you choose Yes, the Topfer Index Attribute and Source and Destination Scale parameters are enabled.
If you set the Calculate Topfer Index parameter to Yes, an attribute containing the Topfer index will be attached to both the BoundingBox and Original output features.
The following formulas are used to calculate the scale factors of the source and destination data:
N-destination = N-source*((S-source/S-destination)**0.5)
where:
N-destination = number of features output
N-source = number of features in input
S-source = scale of source map
S-destination = scale of destination map
Example
Editing Transformer Parameters
Using a set of menu options, transformer parameters can be assigned by referencing other elements in the workspace. More advanced functions, such as an advanced editor and an arithmetic editor, are also available in some transformers. To access a menu of these options, click beside the applicable parameter. For more information, see Transformer Parameter Menu Options.
Transformer Categories
Related Transformers
To retrieve the bounds of a feature into attributes, use the BoundsExtractor.
To replace a feature with its bounding box, use the BoundingBoxReplacer.
Search FME Knowledge Center
Search for samples and information about this transformer on the FME Knowledge Center.
Tags Keywords: MBR "minimum bounding rectangle" neatline envelope "Topfer index"