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:

Point touches edge with parameter minVertexDistance:

Duplicate points:

Duplicate edge (same as duplicate points):

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):![]() 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):![]() 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:![]() 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 |