Syntax FACTORY_DEF GeneralizeFactory [FACTORY_NAME ] [INPUT FEATURE_TYPE [ ]* [GROUP_BY [+]*] [FLUSH_WHEN_GROUPS_CHANGE (Yes|No)] [REJECT_INVALID_GEOM ] [REJECT_NOT_DEFAULT ] ALGORITHM (Douglas|DouglasWithArcFitting|Thin|ThinNoPoint|Deveau|Wang|McMaster|McMasterWeightedDistance|NURBfit|Inflection|Regression|Fillet) PRESERVE_SHARED_BOUNDARIES (Yes|No) PRESERVE_PATH_SEGEMENTS (Yes|No) [TOLERANCE ] [NUMWEDGES ] [ANGLE ] [NUMNEIGHBORS ] [DISPLACEMENT ] [WEIGHTINGPOWER ] [DEGREE ] [SEGMENT_LENGTH ] [FILLET_RADIUS ] [CLEANING_TOLERANCE (NONE|AUTO|)] OUTPUT GENERALIZED FEATURE_TYPE [ ]* []* Overview Transforms or measures geometry features based on a specified algorithm. Clauses ALGORITHM (Douglas|DouglasWithArcFitting|Thin|ThinNoPoint|Deveau|Wang|McMaster|McMasterWeightedDistance|NURBfit|Inflection|Regression) Douglas: The Douglas-Peucker algorithm will remove vertices which cause a deviation of less than the Generalization Tolerance, but the location of remaining vertices are not altered. Thus, this algorithm is good at reducing the number of points in a line, it is not very good at preserving the shape or the spatial relationship of the line relative to other entities. DouglasWithArcFitting: This is the Douglas algorithm, modified. Simplifies the input polyline into a path with a fewer number of vertices, constructed of line and arc segments. The algorithm ensures that the resulting line is within tolerance of the original along its whole length. The algorithm prefers single line segments over arcs, and prefers arcs over multiple line segments. Thin: The Thin algorithm will remove vertices that are less than the Generalization Tolerance distance away from an adjacent vertex. The begin and end points are never moved, unless the entire length of the feature being thinned is less than the tolerance, in which case the feature is replaced by a point feature holding the final coordinate. ThinNoPoint: The ThinNoPoint algorithm will remove vertices that are less than the Generalization Tolerance distance away from an adjacent vertex. The begin and end points are never moved, even when the entire length of the feature being thinned is less than the tolerance, in which case the feature is replaced by a linear feature connecting the first point to the last point. Deveau: The Deveau algorithm removes vertices which contribute less to the overall shape of the feature, and may introduce new vertices at positions not originally in the feature as it works. The inherent behavior of the algorithm is such that it invalidates the z coordinate of the vertices, and any measures. Therefore the output features will always be 2D, and have no measures on them. It requires the Smoothness Factor parameter and the Sharpness Angle parameter to be specified. Wang: The Wang algorithm will iteratively combine, eliminate and exaggerate bends until the input line feature has no bend that is smaller than the given tolerance value. McMaster: The McMaster algorithm calculates a new location for each point by first taking the average value of the x and y coordinates of the point and a number of neighboring points. It then slides the averaged point towards the original point according to a specified displacement value. The overall effect is that each point will be pulled towards its neighboring points. McMasterWeightedDistance: The McMaster Weighted Distance algorithm performs the same operations as the McMaster algorithm only it uses inverse distance weighting to take into account the distance from each neighbor to the point being moved. The overall effect is that points further away will have less "pull" than points close by. NURBfit: The NURBfit algorithm will fit lines using B-Spline curves of given polynomial degree. The resulting lines will follow these curves with given segment length. The higher the degree, the smoother the line. An example of usage is smoothing contour lines to remove spikes and simulate the work of a cartographic craftsman. Inflection: The Inflection algorithm will calculate the location of the inflection points along a line and return the list of these points. Inflection points are measures of the sinuosity of a line. Regression: Orthogonal Distance Regression algorithm replaces the feature's geometry with a line that minimizes the orthogonal distance between it and the original geometry's points. Orthogonal distance means the shortest (perpendicular) distance between a point and a line. Fillet: Rounds corners with a given radius. If an arc with the given radius will not fit in a corner, that corner will be skipped. REJECT_INVALID_GEOM When REJECT_INVALID_GEOM is Yes, the factory will output invalid features to Rejected port. REJECT_NOT_DEFAULT This parameter is to help preserve backwards behaviour. In the past, some parameters would cause an error if they were out of range, and some parameters, in some modes (eg. Nurbfit and Deveau), would quietly be coerced to a valid range. This parameter specifies that ALL out of range parameters should consistently error (or reject, depending on the value of REJECT_INVALID_GEOM). PRESERVE_SHARED_BOUNDARIES (Yes|No) If No is selected each feature will be treated and generalized individually without regard to its neighboring features. If the area features originally formed a coverage, there will be gaps and overlaps in the coverage. If you want the coverage to be maintained while doing area boundary generalization, choose Yes. PRESERVE_PATH_SEGMENTS (Yes|No) If No is selected, all paths will be stroked before being generalized. If Yes is selected, the nodes at the ends of the paths will be preserved. [TOLERANCE ] This parameter is used by all four generalizing algorithms. It is measured in ground units (units of measure of the feature coordinates). Range: float >= 0 [NUMWEDGES ] This parameter is used by the Deveau algorithm only. It controls the number of simultaneous wedges considered when floating bands around the points in the set. The larger this value is, the more aggressive the generalization. Range: 1 <= int <= 30 [ANGLE ] This parameter is used by the Deveau algorithm only. It sets the tolerance for spikes that will be blunted. Vertex points at angles less than the value given from the previous two points are not moved. The angle is measured in degrees. Range: 0 <= float <= 180 [NUMNEIGHBORS ] This parameter specifies the number of neighbors to consider for each point. For example, a value of 2 specifies that the 2 points to the left of each point, the point itself, and the 2 points to the right will be considered. For the Inflection Points algorithm, this parameter specifies the number of neighboring points on either side that will affect the inflection calculation. A higher number has the effect of smoothing the line and may result in fewer inflection points. A value of 0 means no filtering. Range: int >= 0 [DISPLACEMENT ] This parameter specifies the location between the original and average points to move the point. For example, a value of 50 will place the point at the halfway point between the averaged point and the point's original location. Range: 0 <= float <= 100 [WEIGHTINGPOWER ] This parameter is used by the McMaster Weighted Distance algorithm only. It is used to determine the weight of each neighboring point. Range: float >= 0 [DEGREE ] This parameter specifies the degree of the polynomial used to approximate the curve. The higher the degree, the smoother the line. Range: int >= 2 [SEGMENT_LENGTH ] This parameter specifies the length of the output segments. If this is set to 0, then the output curve will have 10x the number of points in the input. Range: float >= 0 [FILLET_RADIUS ] The radius at which to fillet corners in ground units. Range: float > 0 [CLEANING_TOLERANCE (NONE|AUTO|)] If the CLEANING_TOLERANCE keyword does not exist or has the value "NONE", no cleaning will be performed. If the CLEANING_TOLERANCE directive specifies a non-negative number, areas withinn this tolerance will be merged when preserving shared boundaries. If the CLEANING_TOLERANCE is AUTO, a cleaning tolerance will be automatically generated based on the input areas. [GROUP_BY []+]* This clause allows for processing features in groups based on one or more attributes on the input features. Processing will only be performed on input features whose group by attributes (as specified by this clause) are identical. [FLUSH_WHEN_GROUPS_CHANGE (Yes|No)] If the GROUP_BY clause is specified, this clause (when set to Yes) will cause the factory to process and output the current group immediately when an attribute that does not belong to the current group is encountered. Output Tags The GeneralizeFactory supports the following output tag. GENERALIZED Generalized features are outputted here.