"de.hftstuttgart.cityunits.target/pom.xml" did not exist on "549ccad2ebda09148f80a78e77986d63048c6913"
Commit 19414019 authored by Matthias Betz's avatar Matthias Betz
Browse files

Review German geometry-error docs, translate to English, rebuild site



German docs (docs/de):
- Fix broken shell cross-links (missing R_ prefix), missing .md, old
  wiki path, and wrong/missing #vertex anchors
- Fix error/check codes: CONCECUTIVE->CONSECUTIVE, C_ prefix on
  collapsed-to-line check, GS_S_->GE_S_ typo, correct requirement-ID
  and expected-result cells
- Fix German spelling/grammar and remove stray English fragments
- Unify headings/labels, remove stray <br /> lines
- Repoint all figure links from external GitLab URLs to local img/

English docs (docs/en):
- Translate all 21 R_GE_* detail files from the wiki-pointer stubs,
  preserving IDs, codes, links, images and tables verbatim
- Fix CONCECUTIVE->CONSECUTIVE in geometric.md

Rebuild both mkdocs sites into public/de and public/en.

Co-Authored-By: default avatarClaude Opus 4.8 (1M context) <noreply@anthropic.com>
parent 93fb6887
Pipeline #12421 passed with stages
in 15 seconds
# R_GE_S_TOO_FEW_POLYGONS # R_GE_S_TOO_FEW_POLYGONS
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_SO_0001](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_SO_0001) ## Anforderung
| ID | R_GE_S_TOO_FEW_POLYGONS |
|---- | ---- |
| Beschreibung | Solids müssen mindestens 4 Polygone haben. |
| Fehlercode | GE_S_TOO_FEW_POLYGONS |
## Prüfung
| ID | C_GE_S_TOO_FEW_POLYGONS |
|---- | ---- |
| Anforderungs ID | R_GE_S_TOO_FEW_POLYGONS |
| Vorbedingungen | [R_SC_SCHEMA_VALIDATION](schemaRequirements.md), [R_GE_R_ALL](geometric.md#linear-ring), [R_GE_P_ALL](geometric.md#polygon) |
| Beschreibung | |
| Fehlercode | GE_S_TOO_FEW_POLYGONS |
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
| GE-gml:SO-0001-T0001 | SimpleSolid_SrefBS.gml | OK |
| GE-gml:SO-0001-T0002 | SimpleSolid_SrefBS-GE-gml-SO-0001-T0001.gml | GE_S_TOO_FEW_POLYGONS |
# Geometrieanforderungen # Geometrieanforderungen
## Fehlercodes for geometrische Fehler ## Fehlercodes für geometrische Fehler
Die Fehlercodes wurden übernommen aus dem [CityGML Quality Interoperability Experiment, chapter 7.5](http://mail.opengeospatial.org/lists/lt.php?id=fR4CDVYeAlJfHwhTCwA). Die Fehlercodes wurden übernommen aus dem [CityGML Quality Interoperability Experiment, chapter 7.5](http://mail.opengeospatial.org/lists/lt.php?id=fR4CDVYeAlJfHwhTCwA).
!!! note !!! note
...@@ -31,7 +31,7 @@ Die folgenden Anforderungen wurden auf den drei geometrischen Ebenen definiert [ ...@@ -31,7 +31,7 @@ Die folgenden Anforderungen wurden auf den drei geometrischen Ebenen definiert [
| Anforderungs ID | Beschreibung | Fehlercode | Bekannte Prüfungen | | Anforderungs ID | Beschreibung | Fehlercode | Bekannte Prüfungen |
| --------------- | ------------ | ---------- |-------------------- | | --------------- | ------------ | ---------- |-------------------- |
| [R_GE_R_TOO_FEW_POINTS](R_GE_R_TOO_FEW_POINTS.md)| Zu wenig Punkte in einem Ring | GE_R_TOO_FEW_POINTS | C_GE_R_TOO_FEW_POINTS | | [R_GE_R_TOO_FEW_POINTS](R_GE_R_TOO_FEW_POINTS.md)| Zu wenig Punkte in einem Ring | GE_R_TOO_FEW_POINTS | C_GE_R_TOO_FEW_POINTS |
| [R_GE_R_CONSECUTIVE_POINTS_SAME](R_GE_R_CONSECUTIVE_POINTS_SAME.md)| 2 aufeinanderfolgende Punkte sind gleich | GE_R_CONCECUTIVE_POINTS_SAME | C_GE_R_CONCECUTIVE_POINTS_SAME, C_GE_R_DUPLICATE_POINT | | [R_GE_R_CONSECUTIVE_POINTS_SAME](R_GE_R_CONSECUTIVE_POINTS_SAME.md)| 2 aufeinanderfolgende Punkte sind gleich | GE_R_CONSECUTIVE_POINTS_SAME | C_GE_R_CONSECUTIVE_POINTS_SAME, C_GE_R_DUPLICATE_POINT |
| [R_GE_R_NOT_CLOSED](R_GE_R_NOT_CLOSED.md)| Der erste und letzte Punkt sind nicht gleich | GE_R_NOT_CLOSED | C_GE_R_NOT_CLOSED | | [R_GE_R_NOT_CLOSED](R_GE_R_NOT_CLOSED.md)| Der erste und letzte Punkt sind nicht gleich | GE_R_NOT_CLOSED | C_GE_R_NOT_CLOSED |
| [R_GE_R_SELF_INTERSECTION](R_GE_R_SELF_INTERSECTION.md)| Selbstverschneidung z.B. eine Schleife | GE_R_SELF_INTERSECTION | C_GE_R_SELF_INTERSECTION, C_GE_R_DUPLICATE_POINT | | [R_GE_R_SELF_INTERSECTION](R_GE_R_SELF_INTERSECTION.md)| Selbstverschneidung z.B. eine Schleife | GE_R_SELF_INTERSECTION | C_GE_R_SELF_INTERSECTION, C_GE_R_DUPLICATE_POINT |
| [R_GE_R_COLLAPSED_TO_LINE](R_GE_R_COLLAPSED_TO_LINE.md)| **Momentan nicht in Benutzung, da redundant mit R_GE_R_SELF_INTERSECTION**<br/> Ring ist ein Punkt oder eine Linie | GE_R_COLLAPSED_TO_LINE | C_GE_R_COLLAPSED_TO_LINE | | [R_GE_R_COLLAPSED_TO_LINE](R_GE_R_COLLAPSED_TO_LINE.md)| **Momentan nicht in Benutzung, da redundant mit R_GE_R_SELF_INTERSECTION**<br/> Ring ist ein Punkt oder eine Linie | GE_R_COLLAPSED_TO_LINE | C_GE_R_COLLAPSED_TO_LINE |
...@@ -125,7 +125,7 @@ graph TD; ...@@ -125,7 +125,7 @@ graph TD;
``` ```
## Multisurface und Solid Geometrie ## Multisurface und Solid Geometrie
Um die Definition eines Validierungsplans zu vereinfachen werden zwei neue Anfoderungen zusätzlich eingeführt. Diese Anforderungen dienen lediglich zur Gruppierung von den vorhandenen Anforderungen und benötigen keine zusätzlichen Prüfungen. Um die Definition eines Validierungsplans zu vereinfachen werden zwei neue Anforderungen zusätzlich eingeführt. Diese Anforderungen dienen lediglich zur Gruppierung von den vorhandenen Anforderungen und benötigen keine zusätzlichen Prüfungen.
| Anforderungs ID | Beschreibung | Abhängigkeiten | Fehlercode | Bekannte Prüfungen | | Anforderungs ID | Beschreibung | Abhängigkeiten | Fehlercode | Bekannte Prüfungen |
| --------------- | ------------ | -------------- | ---------- |-------------------- | | --------------- | ------------ | -------------- | ---------- |-------------------- |
......
# R_GE_MS # R_GE_MS
see [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_MS_0001](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_MS_0001) ## Requirement
| ID | R_GE_MS |
|---- | ---- |
| Description | A MultiSurface is a collection of polygons without further restrictions. A MultiSurface is only valid if all polygons are valid. The requirements [R_GE_R_CONSECUTIVE_POINTS_SAME](R_GE_R_CONSECUTIVE_POINTS_SAME.md), [R_GE_R_NOT_CLOSED](R_GE_R_NOT_CLOSED.md), [R_GE_R_SELF_INTERSECTION](R_GE_R_SELF_INTERSECTION.md), [R_GE_R_TOO_FEW_POINTS](R_GE_R_TOO_FEW_POINTS.md), [R_GE_P_HOLE_OUTSIDE](R_GE_P_HOLE_OUTSIDE.md), [R_GE_P_INNER_RINGS_NESTED](R_GE_P_INNER_RINGS_NESTED.md), [R_GE_P_INTERIOR_DISCONNECTED](R_GE_P_INTERIOR_DISCONNECTED.md), [R_GE_P_INTERSECTING_RINGS](R_GE_P_INTERSECTING_RINGS.md), [R_GE_P_NON_PLANAR](R_GE_P_NON_PLANAR.md), [R_GE_P_ORIENTATION_RINGS_SAME](R_GE_P_ORIENTATION_RINGS_SAME.md) must be satisfied |
| Error code | -- |
## Check
No further checks necessary. The individual requirements have their own checks to verify them.
## Test cases
| Test case ID | CityGML model | Expected result |
|----|---------------|-----------------|
Existing test cases can be used.
# R_GE_P_HOLE_OUTSIDE # R_GE_P_HOLE_OUTSIDE
see [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0004](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0004) ## Requirement
| ID | R_GE_P_HOLE_OUTSIDE |
|---- | ---- |
| Description | An interior ring must not be completely outside the exterior ring. |
| Error code | GE_P_HOLE_OUTSIDE |
Example:
![HoleOutside](img/HoleOutside.png)
## Check
| ID | C_GE_P_HOLE_OUTSIDE |
|---- | ---- |
| Requirement ID | R_GE_P_HOLE_OUTSIDE |
| Preconditions | [R_SC_SCHEMA_VALIDATION](schemaRequirements.md), [R_GE_R_ALL](geometric.md#linear-ring), [R_GE_P_NON_PLANAR](R_GE_P_NON_PLANAR.md), [R_GE_P_ORIENTATION_RINGS_SAME](R_GE_P_ORIENTATION_RINGS_SAME.md) |
| Description | |
| Error code | GE_P_HOLE_OUTSIDE |
## Test cases
| Test case ID | CityGML model | Expected result |
|----|---------------|-----------------|
| GE-gml:PO-0004-T0001 | SimpleSolid_SrefBS-GE-gml-PO-0001-T0002.gml | OK for this requirement, GE_S_NOT_CLOSED error in later checks |
| GE-gml:PO-0004-T0002 | SimpleSolid_SrefBS-GE-gml-PO-0004-T0001.gml | GE_P_HOLE_OUTSIDE in Polygon: _Simple_BD.1_PG.2 |
# R_GE_P_INNER_RINGS_NESTED # R_GE_P_INNER_RINGS_NESTED
siehe [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0005](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0005) ## Requirement
| ID | R_GE_P_INNER_RINGS_NESTED |
|---- | ---- |
| Description | Interior rings must not be inside another interior ring. |
| Error code | GE_P_INNER_RINGS_NESTED |
Example:
![NestedRings](img/NestedRings.png)
## Check
| ID | C_GE_P_INNER_RINGS_NESTED |
|---- | ---- |
| Requirement ID | R_GE_P_INNER_RINGS_NESTED |
| Preconditions | [R_SC_SCHEMA_VALIDATION](schemaRequirements.md), [R_GE_R_ALL](geometric.md#linear-ring), [R_GE_P_NON_PLANAR](R_GE_P_NON_PLANAR.md), [R_GE_P_ORIENTATION_RINGS_SAME](R_GE_P_ORIENTATION_RINGS_SAME.md) |
| Description | |
| Error code | GE_P_INNER_RINGS_NESTED |
## Test cases
| Test case ID | CityGML model | Expected result |
|----|---------------|-----------------|
| GE-gml:PO-0005-T0001 | SimpleSolid_SrefBS-GE-gml-PO-0001-T0002.gml | OK for this requirement, GE_S_NOT_CLOSED error in later checks |
| GE-gml:PO-0005-T0002 | SimpleSolid_SrefBS-GE-gml-PO-0005-T0001.gml | GE_P_INNER_RINGS_NESTED in Polygon: _Simple_BD.1_PG.2 |
# R_GE_P_INTERIOR_DISCONNECTED # R_GE_P_INTERIOR_DISCONNECTED
siehe [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0003](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0003) ## Requirement
| ID | R_GE_P_INTERIOR_DISCONNECTED |
|---- | ---- |
| Description | The interior of a polygon must be connected. |
| Parameter minVertexDistance | A point touches an edge if the distance is smaller than *minVertexDistance*, [see Vertex Requirement](geometric.md#vertex-requirement) |
| Error code | GE_P_INTERIOR_DISCONNECTED |
Examples:
![IntDiscoOneInnerRing](img/IntDiscoOneInnerRing.png)
![IntDiscoTwoInnerRings](img/IntDiscoTwoInnerRings.png)
## Check
| ID | C_GE_P_INTERIOR_DISCONNECTED |
|---- | ---- |
| Requirement ID | R_GE_P_INTERIOR_DISCONNECTED |
| Preconditions | [R_SC_SCHEMA_VALIDATION](schemaRequirements.md), [R_GE_R_ALL](geometric.md#linear-ring), [R_GE_P_NON_PLANAR](R_GE_P_NON_PLANAR.md), [GE_P_ORIENTATION_RINGS_SAME](R_GE_P_ORIENTATION_RINGS_SAME.md) |
| Description | |
| Error code | GE_P_INTERIOR_DISCONNECTED |
## Test cases
| Test case ID | CityGML model | Expected result |
|----|---------------|-----------------|
| GE-gml:PO-0003-T0001 | SimpleSolid_SrefBS-GE-gml-PO-0001-T0002.gml | OK for this requirement, GE_S_NOT_CLOSED error in later checks |
| GE-gml:PO-0003-T0002 | SimpleSolid_SrefBS-GE-gml-PO-0003-T0001.gml | GE_P_INTERIOR_DISCONNECTED in Polygon _Simple_BD.1_PG.2 |
| GE-gml:PO-0003-T0003 | SimpleSolid_SrefBS-GE-gml-PO-0003-T0002.gml | GE_P_INTERIOR_DISCONNECTED in Polygon _Simple_BD.1_PG.2 |
# R_GE_P_INTERSECTING_RINGS # R_GE_P_INTERSECTING_RINGS
siehe [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0001](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0001) ## Requirement
\ No newline at end of file
| ID | R_GE_P_INTERSECTING_RINGS |
|---- | ---- |
| Description | The exterior and interior rings must not intersect |
| Parameter minVertexDistance | Two rings do not intersect if only a single point of one ring touches the other. A point touches an edge only if the distance is less than *minVertexDistance*. Points can be considered the same despite (small) distances, [see Vertex Requirement](geometric.md#vertex-requirement) |
| Error code | GE_P_INTERSECTING_RINGS |
Examples:
Exterior ring intersects interior ring:
![exteriorIntersects](img/exteriorIntersects.png)
Two interior rings intersect:
![interiorIntersects](img/interiorIntersects.png)
## Check
| ID | C_GE_P_INTERSECTING_RINGS |
|---- | ---- |
| Requirement ID | R_GE_P_INTERSECTING_RINGS |
| Preconditions | [R_SC_SCHEMA_VALIDATION](schemaRequirements.md), [R_GE_R_ALL](geometric.md#linear-ring), [R_GE_P_NON_PLANAR](R_GE_P_NON_PLANAR.md), [R_GE_P_HOLE_OUTSIDE](R_GE_P_HOLE_OUTSIDE.md), [R_GE_P_INNER_RINGS_NESTED](R_GE_P_INNER_RINGS_NESTED.md), [R_GE_P_ORIENTATION_RINGS_SAME](R_GE_P_ORIENTATION_RINGS_SAME.md) |
| Description | If a point of an interior ring is outside the exterior ring or inside another interior ring, this is an intersection. |
| Error code | GE_P_INTERSECTING_RINGS |
## Test cases
| Test case ID | CityGML model | Expected result |
|----|---------------|-----------------|
| GE-gml:PO-0001-T0001 | SimpleSolid_SrefBS-GE-gml-PO-0001-T0001.gml | GE_P_INTERSECTING_RINGS in Polygon _Simple_BD.1_PG.2 |
| GE-gml:PO-0001-T0002 | SimpleSolid_SrefBS-GE-gml-PO-0001-T0002.gml | OK for this requirement, GE_S_NOT_CLOSED error in later checks |
| GE-gml:PO-0001-T0003 | SimpleSolid_SrefBS-GE-gml-PO-0001-T0003.gml | GE_P_INTERSECTING_RINGS in Polygon _Simple_BD.1_PG.2 |
# R_GE_P_NON_PLANAR # R_GE_P_NON_PLANAR
siehe [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0002](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0002) ## Requirement
| ID | R_GE_P_NON_PLANAR |
|---- | ---- |
| Description | Every polygon must be planar. Planarity is achieved when no point is farther than *distanceTolerance* from the regression plane of all points, and the normals of every triangle of the tessellated polygon do not have an angular deviation greater than *angleTolerance*. |
| Parameter 1: type | The type of the planarity check can be selected. Must be one of *distance*, *angle*, *both*.<ul><li>If the parameter is *distance*: Only the distance check is performed.</li><li> If the parameter is *angle*: Only the normal deviation check is performed.</li><li>If the parameter is *both*: Both checks are performed.</li></ul> |
| Parameter 2: distanceTolerance | Tolerance of the distance of a point from the regression plane |
| Parameter 3: angleTolerance | Tolerance of the angle of the triangle normals |
| Error codes | GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE, GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION |
Normal deviation:
![normalDeviation](img/normalDeviation.png)
## Check
| ID | C_GE_P_NON_PLANAR |
|---- | ---- |
| Requirement ID | R_GE_P_NON_PLANAR |
| Preconditions | [R_SC_SCHEMA_VALIDATION](schemaRequirements.md), [R_GE_R_ALL](geometric.md#linear-ring) |
| Description | To determine the normal deviation, all polygons are tessellated in order to compute the triangle normals, whose angles are used for the comparison. The tessellation of the polygons is not deterministic, and therefore the result of the normal deviation check is not deterministic. <br />For the distance check, a regression plane is created from all polygon points in order to compute the distance of the points to this plane. |
| Error code | GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE, GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION |
## Implementation
In CityDoctor2 only the distance check is active by default, since the normal check does not produce deterministic results.
## Test cases
| Test case ID | CityGML model | Expected result |
|----|---------------|-----------------|
| GE-gml:PO-0002-T0001 | SimpleSolid_SrefBS-GE-gml-PO-0001-T0002.gml | OK for this requirement, GE_S_NOT_CLOSED error in later checks |
| GE-gml:PO-0002-T0002 | SimpleSolid_SrefBS-GE-gml-PO-0002-T0001.gml | GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE in _Simple_BD.1_PG.2 with *distanceTolerance* = 0.01 |
| GE-gml:PO-0002-T0003 | SimpleSolid_SrefBS-GE-gml-PO-0002-T0001.gml | OK for this requirement with *distanceTolerance* = 0.5, GE_P_ORIENTATION_RINGS_SAME in later checks |
| GE-gml:PO-0002-T0004 | SimpleSolid_SrefBS-GE-gml-PO-0002-T0002.gml | GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION in _Simple_BD.1_PG.1 with parameter type = angle |
# R_GE_P_ORIENTATION_RINGS_SAME # R_GE_P_ORIENTATION_RINGS_SAME
siehe [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0006](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0006) ## Requirement
| ID | R_GE_P_ORIENTATION_RINGS_SAME |
|---- | ---- |
| Description | Exterior and interior rings must not have the same orientation. |
| Error code | GE_P_ORIENTATION_RINGS_SAME |
Example :
![OrientationSame](img/OrientationSame.png)
## Check
| ID | C_GE_P_ORIENTATION_RINGS_SAME |
|---- | ---- |
| Requirement ID | R_GE_P_ORIENTATION_RINGS_SAME |
| Preconditions | [R_SC_SCHEMA_VALIDATION](schemaRequirements.md), [R_GE_R_ALL](geometric.md#linear-ring), [R_GE_P_NON_PLANAR](R_GE_P_NON_PLANAR.md) |
| Description | |
| Error code | GE_P_ORIENTATION_RINGS_SAME |
## Test cases
| Test case ID | CityGML model | Expected result |
|----|---------------|-----------------|
| GE-gml:PO-0006-T0001 | SimpleSolid_SrefBS-GE-gml-PO-0001-T0002.gml | OK |
| GE-gml:PO-0006-T0002 | SimpleSolid_SrefBS-GE-gml-PO-0006-T0001.gml | GE_P_ORIENTATION_RINGS_SAME in Polygon: _Simple_BD.1_PG.2 |
# R_GE_R_COLLAPSED_TO_LINE # R_GE_R_COLLAPSED_TO_LINE
siehe [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0005](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0005) ## Requirement
| ID | R_GE_R_COLLAPSED_TO_LINE |
|---- | ---- |
| Description | A special case of self-intersection (GE_R_SELF_INTERSECTION): The ring is a line. If the ring represents a point, then the requirements GE_R_TOO_FEW_POINTS / GE_R_CONSECUTIVE_POINTS_SAME check whether this is an error. |
| Error code | GE_R_SELF_INTERSECTION, GE_R_COLLAPSED_TO_LINE, GE_R_TOO_FEW_POINTS, GE_R_CONSECUTIVE_POINTS_SAME |
## Check
| ID | C_GE_R_COLLAPSED_TO_LINE|
|---- | ---- |
| Requirement ID | R_GE_R_COLLAPSED_TO_LINE |
| Preconditions | [R_SC_SCHEMA_VALIDATION](schemaRequirements.md), [R_GE_R_TOO_FEW_POINTS](R_GE_R_TOO_FEW_POINTS.md), [R_GE_R_CONSECUTIVE_POINTS_SAME](R_GE_R_CONSECUTIVE_POINTS_SAME.md), [R_GE_R_NOT_CLOSED](R_GE_R_NOT_CLOSED.md) |
| Description | Ring as a point cannot happen, due to the preconditions. |
| Error code | GE_R_COLLAPSED_TO_LINE |
The requirement is fulfilled by [R_GE_R_TOO_FEW_POINTS](R_GE_R_TOO_FEW_POINTS.md), [R_GE_R_CONSECUTIVE_POINTS_SAME](R_GE_R_CONSECUTIVE_POINTS_SAME.md), [R_GE_R_NOT_CLOSED](R_GE_R_NOT_CLOSED.md) and [R_GE_R_SELF_INTERSECTION](R_GE_R_SELF_INTERSECTION.md) and therefore requires no separate implementation.
## Test cases
| Test case ID | CityGML model | Expected result |
|----|---------------|-----------------|
|GE-gml:LR-0005-T0001| GE-gml:LR-0005-T0001.gml| GE_R_SELF_INTERSECTION |
# R_GE_R_CONSECUTIVE_POINTS_SAME # R_GE_R_CONSECUTIVE_POINTS_SAME
siehe [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0002](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0002) ## Requirement
| ID | R_GE_R_CONSECUTIVE_POINTS_SAME |
\ No newline at end of file |------------------------------ | ------ |
| 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](R_GE_R_NOT_CLOSED.md)). 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](geometric.md#vertex-requirement) |
| Error code | GE_R_CONSECUTIVE_POINTS_SAME |
For example this ring is erroneous:
```xml
<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
```xml
<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.
```xml
<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](schemaRequirements.md), [R_GE_R_NOT_CLOSED](R_GE_R_NOT_CLOSED.md), [R_GE_R_TOO_FEW_POINTS](R_GE_R_TOO_FEW_POINTS.md) |
| 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](schemaRequirements.md), [R_GE_R_NOT_CLOSED](R_GE_R_NOT_CLOSED.md), [R_GE_R_TOO_FEW_POINTS](R_GE_R_TOO_FEW_POINTS.md) |
| 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:<br />_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:<br />_Simple_BD.1_PG.6_LR.1<br /> 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:<br />_Simple_BD.1_PG.6_LR.1 |
\ No newline at end of file
# R_GE_R_NOT_CLOSED # R_GE_R_NOT_CLOSED
siehe [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0003](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0003) ## Requirement
| ID | R_GE_R_NOT_CLOSED |
|---- | ---- |
| Description | In GML the first and last point must be the same. |
| Parameter minVertexDistance | Points can be considered the same despite (small) distances, [see Vertex Requirement](geometric.md#vertex-requirement) |
| Error code | GE_R_NOT_CLOSED |
For example this ring is erroneous:
```xml
<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>0.0 1.0 0.0</gml:pos>
</gml:LinearRing>
```
OK with parameter minVertexDistance = 0.1:
```xml
<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>0.0 1.0 0.0</gml:pos>
<gml:pos>0.0 0.0 0.05</gml:pos>
</gml:LinearRing>
```
## Check
| ID | C_GE_R_NOT_CLOSED |
| ---- | ---- |
| Requirement ID | R_GE_R_NOT_CLOSED |
| Preconditions | [R_SC_SCHEMA_VALIDATION](schemaRequirements.md) |
| Description | The first and last point within a ring should be the same. |
| Error code | GE_R_NOT_CLOSED |
## Test cases
| Test case ID | CityGML model | Expected result |
|----|---------------|-----------------|
|GE-gml:LR-0003-T0001| SimpleSolid_SrefBS.gml | OK |
|GE-gml:LR-0003-T0002| SimpleSolid_SrefBS-GE-gml-LR-0003-T0001.gml | GE_R_NOT_CLOSED |
|GE-gml:LR-0003-T0003| SimpleSolid_SrefBS-GE-gml-LR-0003-T0002.gml | OK with parameter minVertexDistance = 0.1 |
\ No newline at end of file
# R_GE_R_SELF_INTERSECTION # R_GE_R_SELF_INTERSECTION
siehe [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0004](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0004) ## 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](geometric.md#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](img/BowtieSelfInt.png)
Point touches edge with parameter minVertexDistance:
![TouchingEdge](img/TouchingEdge.png)
Duplicate points:
![Duplicate points](img/DuplicatePoints.png)
Duplicate edge (same as duplicate points):
![LineSelfInt](img/LineSelfInt.png)
## Check
| ID | C_GE_R_SELF_INTERSECTION|
|---- | ---- |
| Requirement ID | R_GE_R_SELF_INTERSECTION |
| Preconditions | [R_SC_SCHEMA_VALIDATION](schemaRequirements.md), [R_GE_R_TOO_FEW_POINTS](R_GE_R_TOO_FEW_POINTS.md), [R_GE_R_CONSECUTIVE_POINTS_SAME](R_GE_R_CONSECUTIVE_POINTS_SAME.md), [R_GE_R_NOT_CLOSED](R_GE_R_NOT_CLOSED.md) |
| 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](schemaRequirements.md), [R_GE_R_TOO_FEW_POINTS](R_GE_R_TOO_FEW_POINTS.md), [R_GE_R_NOT_CLOSED](R_GE_R_NOT_CLOSED.md) |
| 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):<br />![Duplicate points](img/DuplicatePoints.png)<br />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)<br />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):<br />![BowtieSelfInt](img/BowtieSelfInt.png)<br /> 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:<br />![TouchingEdge](img/TouchingEdge.png)<br /> 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 |
\ No newline at end of file
# R_GE_R_TOO_FEW_POINTS # R_GE_R_TOO_FEW_POINTS
siehe [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0001](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0001)
## Requirement
| ID | R_GE_R_TOO_FEW_POINTS |
|---- | ---- |
| Description | A ring must have at least 3 points. For GML rings this requirement ignores the fact that the first and the last point are the same (see [R_GE_R_NOT_CLOSED](R_GE_R_NOT_CLOSED.md)). <br /> According to this requirement a GML ring is valid if it contains at least 3 distinct points, but it is then not closed (the requirement [R_GE_R_NOT_CLOSED](R_GE_R_NOT_CLOSED.md) is not fulfilled). |
| Parameter minVertexDistance | Points can be considered the same despite (small) distances, [see Vertex Requirement](geometric.md#vertex-requirement) |
| Error code | GE_R_TOO_FEW_POINTS |
For example, this ring is erroneous:
```xml
<gml:LinearRing>
<gml:pos>0.0 0.0 0.0</gml:pos>
<gml:pos>1.0 0.0 0.0</gml:pos>
<gml:pos>0.0 0.0 0.0</gml:pos>
</gml:LinearRing>
```
Valid rings:
(This ring is not closed, but has enough distinct points to satisfy this requirement.)
```xml
<gml:LinearRing>
<gml:pos>0.0 0.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:LinearRing>
```
```xml
<gml:LinearRing>
<gml:pos>0.0 0.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_TOO_FEW_POINTS|
|---- | ---- |
| Requirement ID | R_GE_R_TOO_FEW_POINTS |
| Preconditions | [R_SC_SCHEMA_VALIDATION](schemaRequirements.md), [R_GE_R_NOT_CLOSED](R_GE_R_NOT_CLOSED.md) |
| Description | Ring must contain at least 3 distinct points |
| Error code | GE_R_TOO_FEW_POINTS|
## Test cases
| Test case ID | CityGML model | Expected result |
|----|---------------|-----------------|
|GE-gml:LR-0001-T0001| SimpleSolid_SrefBS.gml | OK |
|GE-gml:LR-0001-T0002| SimpleSolid_SrefBS-GE-gml-LR-0001-T0001.gml| GE_R_TOO_FEW_POINTS<br />in ring: _Simple_BD.1_PG.6_LR.1 |
|GE-gml:LR-0001-T0003| SimpleSolid_SrefBS-GE-gml-LR-0001-T0002.gml| Check not executed because GE_R_NOT_CLOSED<br />ring _Simple_BD.1_PG.6_LR.1 is not closed, but has 3 points.|
# R_GE_SO # R_GE_SO
siehe [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0009](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0009) ## Requirement
| ID | R_GE_SO |
|---- | ---- |
| Description | A solid is a collection of polygons with restrictions. The geometry must be 'watertight'. See the definition of solids in Appendix A of the CityGML QIE. A solid is valid if the requirements [R_SC_SCHEMA_VALIDATION](schemaRequirements.md), [R_GE_R_ALL](geometric.md#linear-ring), [R_GE_P_ALL](geometric.md#polygon), [GE_S_TOO_FEW_POLYGONS](R_GE_S_TOO_FEW_POLYGONS.md), [GE_S_NOT_CLOSED](R_GE_S_NOT_CLOSED.md), [GE_S_NON_MANIFOLD_VERTEX](R_GE_S_NON_MANIFOLD_VERTEX.md), [GE_S_NON_MANIFOLD_EDGE](R_GE_S_NON_MANIFOLD_EDGE.md), [GE_S_MULTIPLE_CONNECTED_COMPONENTS](R_GE_S_MULTIPLE_CONNECTED_COMPONENTS.md), [GE_S_POLYGON_WRONG_ORIENTATION](R_GE_S_POLYGON_WRONG_ORIENTATION.md), [R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION](R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION.md), [R_GE_S_SELF_INTERSECTION](R_GE_S_SELF_INTERSECTION.md) are satisfied. |
| Error code | -- |
## Check
no further check necessary
## Test cases
| Test case ID | CityGML model | Expected result |
|----|---------------|-----------------|
The existing test cases of the individual checks can be used.
# R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION # R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION
siehe [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0008](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0008) ## Requirement
| ID | R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION |
|---- | ---- |
| Description | All polygons have the wrong orientation (defined in [GE_S_POLYGON_WRONG_ORIENTATION](R_GE_S_POLYGON_WRONG_ORIENTATION.md)), so that all polygons point inward. |
| Error code | GE_S_ALL_POLYGONS_WRONG_ORIENTATION |
## Check
| ID | C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION |
|---- | ---- |
| Requirement ID | R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION |
| Preconditions| [R_SC_SCHEMA_VALIDATION](schemaRequirements.md), [R_GE_R_ALL](geometric.md#linear-ring), [R_GE_P_ALL](geometric.md#polygon), [GE_S_TOO_FEW_POLYGONS](R_GE_S_TOO_FEW_POLYGONS.md), [GE_S_NOT_CLOSED](R_GE_S_NOT_CLOSED.md), [GE_S_NON_MANIFOLD_VERTEX](R_GE_S_NON_MANIFOLD_VERTEX.md), [GE_S_NON_MANIFOLD_EDGE](R_GE_S_NON_MANIFOLD_EDGE.md), [GE_S_MULTIPLE_CONNECTED_COMPONENTS](R_GE_S_MULTIPLE_CONNECTED_COMPONENTS.md), [GE_S_SELF_INTERSECTION](R_GE_S_SELF_INTERSECTION.md), [GE_S_POLYGON_WRONG_ORIENTATION](R_GE_S_POLYGON_WRONG_ORIENTATION.md) |
| Description | |
| Error code | GE_S_ALL_POLYGONS_WRONG_ORIENTATION |
## Test cases
| Test case ID | CityGML model | Expected result |
|----|---------------|-----------------|
| GE-gml:SO-0008-T0001 | SimpleSolid_SrefBS.gml | OK |
| GE-gml:SO-0008-T0002 | SimpleSolid_SrefBS-GE-gml-SO-0008-T0001.gml | GE_S_ALL_POLYGONS_WRONG_ORIENTATION |
# R_GE_S_MULTIPLE_CONNECTED_COMPONENTS # R_GE_S_MULTIPLE_CONNECTED_COMPONENTS
siehe [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0005](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0005) ## Requirement
| ID | R_GE_S_MULTIPLE_CONNECTED_COMPONENTS |
|---- | ---- |
| Description | 1+ polygons are not connected to the same shell. |
| Error code | GE_S_MULTIPLE_CONNECTED_COMPONENTS |
![GE_gml_so_0005](img/GE_gml_so_0005.png)
## Check
| ID | C_GE_S_MULTIPLE_CONNECTED_COMPONENTS|
|---- | ---- |
| Requirement ID | R_GE_S_MULTIPLE_CONNECTED_COMPONENTS |
| Preconditions | [R_SC_SCHEMA_VALIDATION](schemaRequirements.md), [R_GE_R_ALL](geometric.md#linear-ring), [R_GE_P_ALL](geometric.md#polygon), [GE_S_TOO_FEW_POLYGONS](R_GE_S_TOO_FEW_POLYGONS.md) |
| Description | Build a dual graph (polygons become nodes, and polygons that share an edge are connected in the graph). If the graph is not connected, there are multiple connected components. |
| Error code | GE_S_MULTIPLE_CONNECTED_COMPONENTS |
## Test cases
| Test case ID | CityGML model | Expected result |
|----|---------------|-----------------|
|GE-gml:SO-0005-T0001| SimpleSolid_SrefBS.gml| OK |
|GE-gml:SO-0005-T0002| SimpleSolid_SrefBS-GE-gml-SO-0005-T0001.gml| GE_S_MULTIPLE_CONNECTED_COMPONENTS |
# R_GE_S_NON_MANIFOLD_EDGE # R_GE_S_NON_MANIFOLD_EDGE
siehe [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0004](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0004) ## Requirement
| ID | R_GE_S_NON_MANIFOLD_EDGE |
|---- | ---- |
| Description | Every edge should bound exactly 2 polygons. |
| Error code | GE_S_NON_MANIFOLD_EDGE |
| Comment | This requirement is similar to [GE_S_NOT_CLOSED](R_GE_S_NOT_CLOSED.md): If an edge bounds more than 2 polygons, then it is a GE_S_NON_MANIFOLD_EDGE error. If an edge bounds only one polygon, it is a GE_S_NOT_CLOSED error (a hole in the solid) |
![image](img/image.png)
## Check
| ID | C_GE_S_NON_MANIFOLD_EDGE|
|---- | ---- |
| Requirement ID | R_GE_S_NON_MANIFOLD_EDGE |
| Preconditions | [R_SC_SCHEMA_VALIDATION](schemaRequirements.md), [R_GE_R_ALL](geometric.md#linear-ring), [R_GE_P_ALL](geometric.md#polygon), [GE_S_TOO_FEW_POLYGONS](R_GE_S_TOO_FEW_POLYGONS.md) |
| Description | |
| Error code | GE_S_NON_MANIFOLD_EDGE |
## Test cases
| Test case ID | CityGML model | Expected result |
|----|---------------|-----------------|
|GE-gml:SO-0004-T0000| SimpleSolid_SrefBS.gml| OK |
|GE-gml:SO-0004-T0001| SimpleSolid_SrefBS-GE-gml-SO-0004-T0001.gml| GE_S_NON_MANIFOLD_EDGE |
# R_GE_S_NON_MANIFOLD_VERTEX # R_GE_S_NON_MANIFOLD_VERTEX
siehe [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0003](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0003) ## Requirement
| ID | R_GE_S_NON_MANIFOLD_VERTEX |
|---- | ---- |
| Description | Every polygon incident to a point of a solid must be connected to the other incident polygons via edges. The point and its incident polygons must form an 'umbrella'. |
| Error code | GE_S_NON_MANIFOLD_VERTEX |
## Check
| ID | C_GE_S_NON_MANIFOLD_VERTEX |
|---- | ---- |
| Requirement ID | R_GE_S_NON_MANIFOLD_VERTEX |
| Preconditions| [R_SC_SCHEMA_VALIDATION](schemaRequirements.md), [R_GE_R_ALL](geometric.md#linear-ring), [R_GE_P_ALL](geometric.md#polygon), [GE_S_TOO_FEW_POLYGONS](R_GE_S_TOO_FEW_POLYGONS.md) |
| Description | |
| Error code | GE_S_NON_MANIFOLD_VERTEX |
## Test cases
| Test case ID | CityGML model | Expected result |
|----|---------------|-----------------|
| GE-gml:SO-0003-T0001 | SimpleSolid_SrefBS.gml | OK |
| GE-gml:SO-0003-T0002 | SimpleSolid_SrefBS-GE-gml-SO-0003-T0001.gml | GE_S_NON_MANIFOLD_VERTEX |
# R_GE_S_NOT_CLOSED # R_GE_S_NOT_CLOSED
siehe [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0002](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0002) ## Requirement
\ No newline at end of file
| ID | R_GE_S_NOT_CLOSED |
|---- | ---- |
| Description | The shell must not have any holes; it must be watertight. |
| Error code | GE_S_NOT_CLOSED |
![Closed](img/Closed.png)
## Check
| ID | C_GE_S_NOT_CLOSED |
|---- | ---- |
| Requirement ID | R_GE_S_NOT_CLOSED |
| Preconditions | [R_SC_SCHEMA_VALIDATION](schemaRequirements.md), [R_GE_R_ALL](geometric.md#linear-ring), [R_GE_P_ALL](geometric.md#polygon), [GE_S_TOO_FEW_POLYGONS](R_GE_S_TOO_FEW_POLYGONS.md) |
| Description | |
| Error code | GE_S_NOT_CLOSED |
The check collects all edges and matches them to their respective opposite edges. If an edge has no opposite edge, a hole in the shell is detected here and an error is reported.
## Test cases
| Test case ID | CityGML model | Expected result |
|----|---------------|-----------------|
| GE-gml:SO-0002-T0001 | SimpleSolid_SrefBS.gml | OK |
| GE-gml:SO-0002-T0002 | SimpleSolid_SrefBS-GE-gml-SO-0002-T0001.gml | GE_S_NOT_CLOSED |
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment