Syntax FACTORY_DEF SnappingFactory [FACTORY_NAME ] [INPUT [BASE|CANDIDATE] FEATURE_TYPE [ ]* []*]* SNAP_TYPE (END_NODE|VERTEX) SNAP_TOLERANCE [HANDLE_ARCS_ELLIPSES_AND_TEXT [(YES|NO)]] [EXTEND_LINES_TO_SNAP (ALWAYS|FORWARD_ONLY|NEVER)] [SAVE_SHORT_LINES [(YES|NO)] [GROUP_BY []+] [OUTPUT (SNAPPED|UNTOUCHED) FEATURE_TYPE [ ]* []*]* Overview Note: This factory is not supported by FME Base Edition. This factory takes a series of features that match the input specification and performs snapping on the features that lie within the specified tolerance from other features that match the input specification. This factory can be used to perform some cleaning operations on data during a translation. The factory operates in two modes: The input BASE clause is not specified, resulting in a snapping "free-for- all" between the CANDIDATE features where the features are within the SNAP_TOLERANCE value. The BASE clause is specified, and therefore no snapping is performed within the BASE features and within the CANDIDATE features. In this mode only CANDIDATE features are snapped to BASE features. There are currently three types of snapping done by the factory, and this is specified by the SNAP_TYPE directive. When the value for SNAP_TYPE is ALL_SNAP, then features are processed using the new snapping functionality within the Intersector. EXTEND_LINES_TO_SNAP and SAVE_SHORT_LINES parameter are both ignored. When the value for SNAP_TYPE is END_NODE, then features are processed as described below. The end nodes of linear features are considered as candidates for snapping. All other vertices will remain unchanged. Point features are also snapped if they are within the specified snapping tolerance. Polygon features are unchanged. The EXTEND_LINES_TO_SNAP clause may be specified, causing the factory to add another point to the line to complete the snap rather than move the existing vertex. If the clause is given the value ALWAYS, then a line is always added to complete the snap. If the value is FORWARD_ONLY, then the snapping is only done if the new point is closer to the existing endpoint than the previous point, thereby assuring that the line does not have a hard change in direction. When SNAP_TYPE is VERTEX: Vertex-to-vertex snapping will be performed for vertices that are within of each other. Point features will be snapped together (or to a linear feature). Area features will be altered by this operation as its vertices are snapped. The EXTEND_LINES_TO_SNAP clause is ignored. SNAP_TOLERANCE specifies the distance that the snapping occurs between features. This distance is in ground units. If the GROUP_BY clause is given, then each feature will only be snapped to other features that contain the same values as itself in the attributes specified by this clause. Any feature that undergoes dimensional collapse as a result of being snapped will be logged as "degenerate" and dropped. "Dimensional collapse" refers to a line or area that becomes a point, or an area that becomes a line. If SAVE_SHORT_LINES is specified, any features entering the factory whose length is less than or equal to the tolerance will be treated specially: they will be output as UNTOUCHED, and other features (but not other short features) will be able to snap to them. If the option is not selected, features like this will collapse to a single point and will be dropped. If the FME_GEOMETRY_HANDLING directive is set to "yes" in the mapping file, arcs are snapped as linear features, and ellipses are not snapped; otherwise, arcs and ellipses are both snapped as point features located at their respective center points. Output Tags The SnappingFactory supports two output tags. SNAPPED Features whose geometry is changed by the factory are output through this tag. UNTOUCHED Features that leave the factory without being changed are output through this tag. TO BE RESOLVED HANDLE_ARCS_ELLIPSES_AND_TEXT clause added to Syntax section above, but not documented.