Syntax FACTORY_DEF ConnectionFactory [FACTORY_NAME ] [INPUT FEATURE_TYPE [ ]* []*]* [HANDLE_ARCS [(YES|NO)]] [BREAK_BEFORE_FIELD_CHANGE []+] [BREAK_AFTER_FIELD_CHANGE []+] [END_CURRENT_WHEN ]+ [START_NEW_WHEN ]+ [ACCUM_INPUT_ATTRS ] [LIST_NAME {}] [CLOSE_WHEN ]+ [MESH_MERGE_MODE [(YES|NO)]] [OUTPUT (POINT|LINE|POLYGON|BAD_INPUT|PATH|AGGREGATE|MESH) FEATURE_TYPE [ ]* []*]* Overview This factory is used to construct new features from a collection of input features. The factory accepts features with point or linear geometry and outputs features that have a combination of the input features' geometry. Any feature received that does not have a geometry of POINT or LINE is output by the BAD_INPUT output tag. At any given time the factory is creating only one feature. The current feature being constructed is output whenever any of the following cases is true: The values of any of the BREAK_BEFORE_FIELD_CHANGE fields change from one feature to the next. When this occurs, the newly received input feature is not part of the flushed feature but rather is part of the next feature to be constructed. Values of attributes named in these clauses are transferred to the output features. KeyBuilder has been added in PR#68219 to preserve those attributes even when "Drop Incoming Attributes" accumulation mode is chosen. In the future, those fields may be substituted by keyValue strings. The values of any of the BREAK_AFTER_FIELD_CHANGE fields change from one feature to the next. When this occurs, the newly received input feature is part of the flushed feature. Values of attributes named in these clauses are transferred to the output features. The values of any of the END_CURRENT_WHEN clauses evaluate to true. When this occurs, the newly received input feature is part of the flushed feature. The values of any of the START_NEW_WHEN clauses evaluate to true. When this occurs, the newly received input feature is not part of the flushed feature but instead is the first part of the next feature. The clause specified by CLOSE_WHEN is only evaluated when one of the cases described above is true. If the CLOSE_WHEN clause is true, then the output feature is converted into a polygon provided that the feature has at least 3 coordinates. Closed features are output via the POLYGON output tag. The ACCUM_INPUT_ATTRS clause is used to choose what should be done with input features' attribute. There are three choices: NONE corresponds with "Drop All Incoming Attributes", ALL - with "Merge Incoming Attributes", and ONE - with "Get Attributes from One Representative Feature". The optional LIST_NAME clause is used to retain and associate attributes that came from each component of the output feature. When the output feature is created, all attributes of each feature joining to form the output feature are added as members of the specified attribute list. The index in the list corresponds to the index of the feature's contribution to the output feature's final geometry. If the FME_GEOMETRY_HANDLING directive is set to yes in the mapping file, arcs will be allowed as input; they will otherwise be ignored. Path Assembly Mode: If the PATH output tag is given, the factory operates in a different mode. It accepts linear (i.e. line, arc, or path) features and assembles paths from them. Paths are assembled in the same order as the segments enter the factory. All the same break methods described above can be used to designate when to output the path currently under construction. Note: Input paths are allowed. If any paths are received and LIST_NAME is given, then the number of list elements will differ from the number of path segments. The CLOSE_WHEN and FEATURE_CONNECTION clauses are invalid in this mode. In addition, the POLYGON, LINE, and POINT output tags may not be used. The output features in this mode are always paths (that is, even if only one segment arrives, it will be output as the sole segment of a path). Closed paths will be output as paths, not changed to polygons. Mesh Merge Mode: If the MESH output tag is given or MESH_MERGE_MODE keyword is YES, the factory operates in a different mode. It accepts features containing meshes only (including Aggregate, Composite Surface and MultiSurface collections of meshes). Meshes are assembled in the same order as the input meshes enter the factory. The clauses BREAK_BEFORE_FIELD_CHANGE, BREAK_AFTER_FIELD_CHANGE, FEATURE_CONNECTION, END_CURRENT_WHEN, START_NEW_WHEN, CLOSE_WHEN and HANDLE_ARCS are all invalid in this mode. In addition, the POLYGON, LINE, PATH and POINT output tags may not be used. If the BAD_INPUT tag is present, any mesh features input to the factory will be output with that tag. Assumptions The features to be connected are assumed to enter the factory in the correct order. If features are to be connected by joining at equivalent start and end points, then the ArcFactory should be used. Output Tags The ConnectionFactory supports the following output tags. POLYGON Polygon features constructed by the factory are output by this tag. LINE Linear features constructed by the factory are output using this tag. POINT Features which remain as points are output here. PATH Specifying this output tag causes the factory to operate in Path Assembly Mode; please see the description of this mode above. MESH Specifying this output tag causes the factory to operate in Mesh Merge Mode; please see the description of this mode above. BAD_INPUT Any feature whose geometry is not a point or a line (in regular mode) or an arc/line/path (in path assembly mode) is output with this tag. AGGREGATE This output tag is obsolete. Nothing is ever output with it but we still allow it to be specified because apparently it did something in the past. TO BE RESOLVED HANDLE_ARCS clause added to Syntax section above, but not documented.