An aggregate is a collection of geometries of any type that is treated as a single unit. Aggregates may or may not be homogenous and/or hierarchical.
A hierarchical geometry is a collection of geometries that may, in turn, contain other collections (aggregates or multis) to an arbitrary depth. A typical case of a hierarchical geometry is an aggregate that contains aggregates. This nested behavior allows for the representation of hierarchical relationships between geometries.
For example, a hierarchical aggregate named House may contain other aggregates named Roof and Walls, where Walls is an aggregate that contains four faces. Properties associated with the house as a whole may be stored as traits at the top level, but properties that only pertain to a sub-group, such as shingle type, may be stored as traits on aggregate Roof.
Optionally, aggregates may possess a transformation matrix. Aggregates may also have front or back appearances, and may be single or double sided.
A homogeneous aggregate is made up of features of the same fme_type.
Note: Aggregates that contain other collections (aggregates or multis) do not preclude them from being homogeneous. Only the "leaf" nodes of an aggregate must share the same type.
For example, a collection of only surface geometries within an aggregate would be considered a homogeneous aggregate (fme_type
= fme_surface
).
Some types of homogeneous aggregates may also be represented as multi geometries. For example, a collection of only Points could equally be represented as a MultiPoint Geometry.
A non-homogeneous aggregate is made up of features of differing geometry types.
For example, a collection of point, line, and polygon geometries within an aggregate would be considered a non-homogeneous aggregate, (fme_type
= fme_collection
).