Syntax FACTORY_DEF ArcFactory [FACTORY_NAME ] [INPUT FEATURE_TYPE [ ]* []*]* [GROUP_BY []+]* (END_NODED|VERTEX_NODED) [BREAK_ACROSS_GROUPS [(yes|no)]] [PRESERVE_ORIENTATION [(yes|no)]] [CLOSE_LOOPS [(yes|no)]] [HANDLE_ARCS_AND_ELLIPSES [(yes|no)]] [CONSIDER_NODE_ELEVATION [(yes|no)]] [CONNECT_Z_MODE (EXTEND|AVERAGE|FIRST_WINS|LAST_WINS|IGNORE_Z)] [ACCUMULATE_ATTRIBUTES (yes|no|none|all|one)] [LIST_NAME {}] [LIST_ATTRS_TO_INCLUDE []* ] [LIST_ATTRS_TO_INCLUDE_MODE (ALL|SELECTED)] [LINES_AS_SEGMENTS [(YES|NO)]] [DEAGGREGATE_INPUT (Deaggregate|Reject)] [BREAK_CONNECTION_ATTRIBUTES []+]* [BREAK_CONNECTION_ACROSS_SETS [(yes|no)]] [OUTPUT (LINE|NODES_BEFORE_PSEUDO_REMOVAL| NODES_AFTER_PSEUDO_REMOVAL|REJECTED| INVALID_GEOMETRY) FEATURE_TYPE [ ]* []*]* Overview This factory takes linear or polygonal features and outputs their component lines with all duplicates and pseudo-nodes removed. Linear features leaving the factory are only broken at topologically significant nodes. This factory is useful for determining the arcs required to divide a surface into regions, or to connect arcs that have the same attribute values. The input features may be grouped based on attribute values specified in the GROUP_BY clause. No attributes are carried across from the INPUT features to the OUTPUT features. However, all OUTPUT features have the GROUP_BY attributes added to them before being output. If BREAK_ACROSS_GROUPS is present, then the factory will consider all nodes from all groups of features when deciding on topologically significant points. If BREAK_ACROSS_GROUPS is not specified, then each group will be considered separately. The input features may also be grouped based on attribute values specified in the BREAK_CONNECTION_ATTRIBUTES clause. Features with different break connection attributes will not be joined. If BREAK_CONNECTION_ACROSS_SETS is yes, two features in the same connection set will not be joined if they share a node with a feature in a different connection set. The END_NODED and VERTEX_NODED directives tell the factory about the topology of the input features. END_NODED indicates that all features begin and end at topologically significant points, and that none of their vertices connect with any other features. VERTEX_NODED indicates that every vertex may be topologically significant and must be considered when looking to join features together. If CLOSE_LOOPS is present, then the factory closes any loops that do not share a node with any other lines in the data set. Such loops are output as polygons by the OUTPUT LINE clause. If CLOSE_LOOPS is not present, then loops will be output in two pieces, broken at arbitrary points. Note: When the CLOSE_LOOPS clause is used, the ArcFactory is more efficient at forming polygons than the PolygonFactory in scenarios where the polygons do not share edges. If PRESERVE_ORIENTATION is present, then the factory will not alter the direction of any of the input line segments in order to join them together. If PRESERVE_ORIENTATION is not present, the directionality of each input line may or may not be adjusted as the new lines are formed. If CONSIDER_NODE_ELEVATION is present, then the Z value will be used to determine if lines are joined. If CONDISER_NODE_ELEVATION is false or absent, then the Z value will not be considered when decided to join two lines. CONNECT_Z_MODE specifies how differing Z values should be treated, if two segments with differing Z values are being joined. EXTEND will add a vertical line segment to connect the points with differing Z values. AVERAGE will move the overlapping endpoints to have a Z value halfway between the two old endpoints. FIRST_WINS will take the Z value of the first of the two overlapping endpoints encountered. LAST_WINS will take the Z value of the last of the two overlapping endpoints encountered. IGNORE will preserve all Z values, and use paths to connect line segments that are not contiguous in Z. If yes or all is specified for the ACCUMULATE_ATTRIBUTES clause, the attributes of each input feature are merged onto the feature being output. If grouped, the attributes of each input feature within a group are merged onto the group's output feature. If no or none is specified for the clause, no user attributes will be carried across from the input features to the output features. If LIST_NAME is given, then a list will be created on each output feature, containing an element for each input feature which contributed to that geometry, in order of appearance. The optional LIST_ATTRS_TO_INCLUDE_MODE will specify if ALL attributes should be added to a list, or if only the SELECTED attributes (specified with the LIST_ATTRS_TO_INCLUDE clause) should be added to the list. If this value is not specified, it defaults to ALL. If the LINES_AS_SEGMENTS directive is given, then when lines originating from different input curves are concatenated into a longer curve in the output, they will be left as separate segments in a path. By default, such lines will be joined into longer lines in the output unless they have different properties (e.g. traits, measures, geometry name). The factory also enables users to get the unique set of nodes both before and after the ArcFactory processing. If the user wants the set of nodes as defined by the input set of arcs, then they are output via the NODES_BEFORE_PSEUDO_REMOVAL output tag. If the user wants the set of nodes as defined by the output set of arcs, then they are output via the NODES_AFTER_PSEUDO_REMOVAL. Tip: END_NODED does not make sense when polygons are input to the ArcFactory. In the context of this factory, the term arc does not refer to a portion of a circle, but rather to a topologically significant linestring Assumptions This factory assumes that all input lines are already topologically noded. The factory also assumes that the input polygons and arcs have already been processed by a GIS product that has ensured the data is clean. The ArcFactory does not provide any snapping or intersection capabilities. Output Tags The ArcFactory supports the following output tags. LINE All linear features produced by this factory are output according to the OUTPUT clause identified by this tag. NODES_BEFORE_PSEUDO_REMOVAL This tag tells the factory to output the node features before removal of the pseudo nodes. Pseudo nodes are those nodes which are not topologically significant. That is, these nodes will be removed by the ArcFactory processing. This results in each arc endpoint being output once. If multiple arcs share an endpoint, then it is output only once. Nodes in which exactly two arcs share the same endpoint are also output. NODES_AFTER_PSEUDO_REMOVAL This tag tells the factory to output the node features after removal of the pseudo nodes. These are the nodes which form the end points of the arcs that are output from the factory. REJECTED This tag tells the factory to output any input features that had an invalid geometry, and couldn't be processed. TO BE RESOLVED Output Tag INVALID_GEOMETRY added to Syntax section above, but not documented.