R_GE_R_CONSECUTIVE_POINTS_SAME#
Requirement#
| ID | R_GE_R_CONSECUTIVE_POINTS_SAME |
|---|---|
| Description | Points within a ring should not repeat (except the first and the last one in the case of GML, see R_GE_R_NOT_CLOSED). This error often occurs when two points are at the same location. |
| Parameter minVertexDistance | Points can be considered the same despite (small) distances, see Vertex Requirement |
| Error code | GE_R_CONSECUTIVE_POINTS_SAME |
For example this ring is erroneous:
<gml:LinearRing>
<gml:pos>0.0 0.0 0.0</gml:pos>
<gml:pos>1.0 0.0 0.0</gml:pos>
<gml:pos>1.0 0.0 0.0</gml:pos>
<gml:pos>1.0 1.0 0.0</gml:pos>
<gml:pos>0.0 1.0 0.0</gml:pos>
<gml:pos>0.0 0.0 0.0</gml:pos>
</gml:LinearRing>
This ring is also erroneous with the parameter minVertexDistance = 0.1
<gml:LinearRing>
<gml:pos>0.0 0.0 0.0</gml:pos>
<gml:pos>0.05 0.0 0.0</gml:pos>
<gml:pos>1.0 0.0 0.0</gml:pos>
<gml:pos>1.0 1.0 0.0</gml:pos>
<gml:pos>0.0 1.0 0.0</gml:pos>
<gml:pos>0.0 0.0 0.0</gml:pos>
</gml:LinearRing>
The next example shows an erroneous ring with a point that occurs twice but where the repetition is not consecutive. This results in a self-intersection, which is not covered by this requirement.
<gml:LinearRing>
<gml:pos>0.0 0.0 0.0</gml:pos>
<gml:pos>1.0 0.0 0.0</gml:pos>
<gml:pos>1.0 1.0 0.0</gml:pos>
<gml:pos>1.0 0.0 0.0</gml:pos>
<gml:pos>0.0 1.0 0.0</gml:pos>
<gml:pos>0.0 0.0 0.0</gml:pos>
</gml:LinearRing>
Check#
| ID | C_GE_R_CONSECUTIVE_POINTS_SAME |
|---|---|
| Requirement ID | R_GE_R_CONSECUTIVE_POINTS_SAME |
| Preconditions | R_SC_SCHEMA_VALIDATION, R_GE_R_NOT_CLOSED, R_GE_R_TOO_FEW_POINTS |
| Description | Checks whether a point repeats |
| Error code | GE_R_CONSECUTIVE_POINTS_SAME |
| 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_NOT_CLOSED, R_GE_R_TOO_FEW_POINTS |
| Description | Detects consecutive as well as other repeating points. |
| Error code | GE_R_CONSECUTIVE_POINTS_SAME, GE_R_SELF_INTERSECTION |
Test cases#
| Test case ID | CityGML model | Expected result |
|---|---|---|
| GE-gml:LR-0002-T0001 | SimpleSolid_SrefBS.gml | OK |
| GE-gml:LR-0002-T0002 | SimpleSolid_SrefBS-GE-gml-LR-0002-T0001.gml | GE_R_CONSECUTIVE_POINTS_SAME in ring: _Simple_BD.1_PG.6_LR.1 |
| GE-gml:LR-0002-T0003 | SimpleSolid_SrefBS-GE-gml-LR-0002-T0002.gml | OK for this requirement, but has error GE_R_SELF_INTERSECTION detected by C_GE_R_DUPLICATE_POINT |
| GE-gml:LR-0002-T0004 | SimpleSolid_SrefBS-GE-gml-LR-0002-T0003.gml | OK for this requirement, but has error GE_R_SELF_INTERSECTION detected by C_GE_R_DUPLICATE_POINT |
| GE-gml:LR-0002-T0005 | SimpleSolid_SrefBS-GE-gml-LR-0002-T0004.gml | GE_R_CONSECUTIVE_POINTS_SAME in ring: _Simple_BD.1_PG.6_LR.1 with parameter minVertexDistance = 0.1, GE_S_NOT_CLOSED error when minVertexDistance = 0.01 |
| GE-gml:LR-0002-T0006 | SimpleSolid_SrefBS-GE-gml-LR-0002-T0005.gml | Not executed because GE_R_TOO_FEW_POINTS in ring: _Simple_BD.1_PG.6_LR.1 |