GeometryValidator

Detects selected issues in input features, and optionally repairs detected issues. Each input feature is processed individually.

The GeometryValidator is a very powerful transformer, suitable for advanced users. The help topic consists of a number of reference sections:

Input Dependencies for Issues

Output Dependencies for Issues, Assuming Input Dependencies Respected

Input Ports

Output Ports

Parameters

Note: To fully understand the choices and information in these parameters, please refer to other sections of this help topic.

Validation

Issue Detection and Repair

For more information about the issues that are detected and/or repaired, see GeometryValidator Issues Table.

Issue detection only occurs within geometries, including geometric properties such as text rotation and arc sweep angle. That means attributes, traits, geometry names, and other non-geometric properties are not processed.

Features with a geometry unsuited to a test (like line features in a test for area orientation) count as a pass and no repair is attempted.

In general, input geometry types are preserved unless they cannot be.

For example, an arc that degenerates into a point cannot remain an arc and at the same time be non-degenerate. So, when the issue Degenerate and Corrupt Geometries is selected, and Attempt Repair is set to Yes, the arc should be repaired into a point.

As another example, a donut that contains a non-degenerate outer shell, a degenerate hole, and a non-degenerate hole can remain a donut after degeneracy repair. The donut simply drops the degenerate hole, and remains a donut.

If an input geometry contains multiple issues, but only a subset of them is being detected and repaired, expect undefined behavior. For example, if an arc containing a NaN (Not a Number) is being repaired only for degeneracy and corruption, the number of NaNs in that arc could increase. As another example, if you attempt to repair self-intersections in a degenerate geometry, it may come out with a different geometry type and lose its coordinates.

In general, the detection and repair of some issues depends on the absence of other issues. Further, during the repair of a particular issue, other issues may be created. If input issue dependencies are respected, it should be expected that the output of an issue repair operation should no longer contain that issue.

Input Dependencies for Issues

The detection and repair of the following issues depends on the absence of other issues:

Degenerate or Corrupt Geometries no NaNs or infinities in input

Self-Intersections in 2D

Tip: To avoid undefined behavior, select Degenerate or Corrupt Geometries and Contains NaN (Not a Number) or Infinity before selecting Self-Intersections in 2D.

no NaNs, infinities, degeneracies, or corruptions in input
Non-Planar Surfaces no NaNs or infinities in input
Invalid Solid Boundaries or Invalid Solid Voids no NaNs or infinities, duplicate consecutive coordinates, degeneracies or corruptions, or self-intersections within individual faces in input
Invalid Solid Voids no invalid solid boundaries

Output Dependencies for Issues, Assuming Input Dependencies Respected

Repairing the following issues can produce other issues:

Contains -0, NaN, or Infinity can produce degenerate output
Degenerate or Corrupt Geometries can produce self-intersecting output
Contains Null Geometry Parts can produce degenerate output
Duplicate Consecutive Points can produce degenerate output
Self-Intersections in 2D can produce degenerate output
Invalid Solid Boundaries can produce degenerate faces in the boundary

The recommended ordering of issues to detect is built into the Issue column. If a different ordering is desired, highlight an issue, then click the up and down arrows on the bottom of the issues table.

Tip: Different orderings of issues to detect and repair may cause output geometries to change.

Issue To Detect

Output

Editing Transformer Parameters

Using a set of menu options, transformer parameters can be assigned by referencing other elements in the workspace. More advanced functions, such as an advanced editor and an arithmetic editor, are also available in some transformers. To access a menu of these options, click beside the applicable parameter. For more information, see Transformer Parameter Menu Options.

Defining Values

There are several ways to define a value for use in a Transformer. The simplest is to simply type in a value or string, which can include functions of various types such as attribute references, math and string functions, and workspace parameters. There are a number of tools and shortcuts that can assist in constructing values, generally available from the drop-down context menu adjacent to the value field.

Dialog Options - Tables

Transformers with table-style parameters have additional tools for populating and manipulating values.

FME Community

The FME Community is the place for demos, how-tos, articles, FAQs, and more. Get answers to your questions, learn from other users, and suggest, vote, and comment on new features.

Search for samples and information about this transformer on the FME Community.

Keywords: GeometryRepairer GeometryCleaner Mender Fixer NaNRemover InfinityRemover NullRemover IFMENullRemover GeometryTypeRepairer DegenerateGeometryRepairer CorruptGeometryRepairer MeshNormalRepairer FeatureValidator FeatureRepairer FeatureCleaner GeometryOGCValidator DuplicateCoordinateRemover SelfIntersector OGC-simple OGC-valid Duplicated Corrupted self intersected damaged erroneous error data repair fix bad data