Skip to content

R_GE_R_SELF_INTERSECTION#

Requirement#

ID R_GE_R_SELF_INTERSECTION
Description A ring should be simple, i.e. it should not self-intersect. The self-intersection may be at a concrete point, or not.
Parameter minVertexDistance Points can be considered the same despite (small) distances, see Vertex Requirement. This parameter is also used to determine when a point touches an edge.
Error code GE_R_SELF_INTERSECTION

Examples of self-intersections:

Bowtie:
BowtieSelfInt

Point touches edge with parameter minVertexDistance:
TouchingEdge

Duplicate points:
Duplicate points

Duplicate edge (same as duplicate points):
LineSelfInt

Check#

ID C_GE_R_SELF_INTERSECTION
Requirement ID R_GE_R_SELF_INTERSECTION
Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_TOO_FEW_POINTS, R_GE_R_CONSECUTIVE_POINTS_SAME, R_GE_R_NOT_CLOSED
Description Detects duplicate points and self-intersecting edges.
Error codes GE_R_SELF_INTERSECTION
ID C_GE_R_DUPLICATE_POINT
Requirement ID R_GE_R_CONSECUTIVE_POINTS_SAME, R_GE_R_SELF_INTERSECTION (partially)
Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_TOO_FEW_POINTS, R_GE_R_NOT_CLOSED
Description Detects repeating and non-repeating duplicate points. The latter is a self-intersection.
Error codes GE_R_CONSECUTIVE_POINTS_SAME, GE_R_SELF_INTERSECTION

Test cases#

Test case ID CityGML model Expected result
GE-gml:LR-0004-T0001 SimpleSolid_SrefBS.gml OK
GE-gml:LR-0004-T0002 SimpleSolid_SrefBS-GE-gml-LR-0002-T0002.gml Duplicate points (example, not representative of the error in the model):
Duplicate points
GE_R_SELF_INTERSECTION in ring: _Simple_BD.1_PG.6_LR.1
GE-gml:LR-0004-T0003 SimpleSolid_SrefBS-GE-gml-LR-0002-T0003.gml Duplicate points (results in a duplicate edge)
GE_R_SELF_INTERSECTION in ring: _Simple_BD.1_PG.6_LR.1
GE-gml:LR-0004-T0004 SimpleSolid_SrefBS-GE-gml-LR-0004-T0004.gml Bowtie (example, not representative of the error in the model):
BowtieSelfInt
GE_R_SELF_INTERSECTION in ring: _Simple_BD.1_PG.6_LR.1
GE-gml:LR-0004-T0005 SimpleSolid_SrefBS-GE-gml-LR-0004-T0005.gml Touching point with parameter minVertexDistance = 0.1:
TouchingEdge
GE_R_SELF_INTERSECTION in ring: _Simple_BD.1_PG.2_LR.1
GE-gml:LR-0004-T0006 SimpleSolid_SrefBS-GE-gml-LR-0004-T0005.gml OK for this requirement with parameter minVertexDistance = 0.01, GE_S_NOT_CLOSED in later checks