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_MS
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_MS_0001](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_MS_0001)
## Anforderung
| ID | R_GE_MS |
|---- | ---- |
| Beschreibung | Ein MultiSurface ist eine Sammlung von Polygonen ohne weitere Einschränkungen. Ein MultiSurface ist nur gültig, wenn alle Polygone gültig sind. Die Anforderungen [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) müssen erfüllt werden |
| Fehlercode | -- |
## Prüfung
Keine weiteren Prüfungen notwendig. Die einzelnen Anforderungen haben eigene Prüfungen für ihre Erfüllung.
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
Existierende Testfälle können verwendet werden.
# R_GE_P_HOLE_OUTSIDE
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_PO_0004](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_PO_0004)
## Anforderung
| ID | R_GE_P_HOLE_OUTSIDE |
|---- | ---- |
| Beschreibung | Innerer Ring darf nicht komplett außerhalb des äußeren Rings sein. |
| Fehlercode | GE_P_HOLE_OUTSIDE |
Beispiel:
![HoleOutside](img/HoleOutside.png)
## Prüfung
| ID | C_GE_P_HOLE_OUTSIDE |
|---- | ---- |
| Anforderungs ID | R_GE_P_HOLE_OUTSIDE |
| Vorbedingungen | [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) |
| Beschreibung | |
| Fehlercode | GE_P_HOLE_OUTSIDE |
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
| GE-gml:PO-0004-T0001 | SimpleSolid_SrefBS-GE-gml-PO-0001-T0002.gml | OK für diese Anforderung, GE_S_NOT_CLOSED Fehler in späteren Prüfungen |
| 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
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_PO_0005](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_PO_0005)
## Anforderung
| ID | R_GE_P_INNER_RINGS_NESTED |
|---- | ---- |
| Beschreibung | Innere Ringe dürfen nicht innerhalb eines anderen inneren Rings sein. |
| Fehlercode | GE_P_INNER_RINGS_NESTED |
Beispiel:
![NestedRings](img/NestedRings.png)
## Prüfung
| ID | C_GE_P_INNER_RINGS_NESTED |
|---- | ---- |
| Anforderungs ID | R_GE_P_INNER_RINGS_NESTED |
| Vorbedingungen | [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) |
| Beschreibung | |
| Fehlercode | GE_P_INNER_RINGS_NESTED |
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
| GE-gml:PO-0005-T0001 | SimpleSolid_SrefBS-GE-gml-PO-0001-T0002.gml | OK für diese Anforderung, GE_S_NOT_CLOSED Fehler in späteren Prüfungen |
| 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
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_PO_0003](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_PO_0003)
## Anforderung
| ID | R_GE_P_INTERIOR_DISCONNECTED |
|---- | ---- |
| Beschreibung | Die innere Fläche eines Polygons muss verbunden sein. |
| Parameter minVertexDistance | Ein Punkt berührt eine Kante, wenn der Abstand kleiner als *minVertexDistance* ist, [siehe Vertex Anforderungen](geometric.md#vertex-punkt-anforderungen) |
| Fehlercode | GE_P_INTERIOR_DISCONNECTED |
Beispiele:
![IntDiscoOneInnerRing](img/IntDiscoOneInnerRing.png)
![IntDiscoTwoInnerRings](img/IntDiscoTwoInnerRings.png)
## Prüfung
| ID | C_GE_P_INTERIOR_DISCONNECTED |
|---- | ---- |
| Anforderungs ID | R_GE_P_INTERIOR_DISCONNECTED |
| Vorbedingungen | [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) |
| Beschreibung | |
| Fehlercode | GE_P_INTERIOR_DISCONNECTED |
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
| GE-gml:PO-0003-T0001 | SimpleSolid_SrefBS-GE-gml-PO-0001-T0002.gml | OK für diese Anforderung, GE_S_NOT_CLOSED Fehler in späteren Prüfungen |
| 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
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_PO_0001](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_PO_0001)
\ No newline at end of file
## Anforderung
| ID | R_GE_P_INTERSECTING_RINGS |
|---- | ---- |
| Beschreibung | Äußerer und innere Ringe dürfen sich nicht verschneiden |
| Parameter minVertexDistance | Zwei Ringe verschneiden sich nicht, wenn nur ein Punkt des einen Rings den Anderen berührt. Ein Punkt berührt eine Kante nur dann wenn der Abstand weniger als *minVertexDistance* ist. Punkte können als gleich angesehen werden, trotz (kleiner) Abstände, [siehe Vertex Anforderungen](geometric.md#vertex-punkt-anforderungen) |
| Fehlercode | GE_P_INTERSECTING_RINGS |
Beispiele:
Äußerer Ring verschneidet inneren Ring:
![exteriorIntersects](img/exteriorIntersects.png)
Zwei innere Ringe verschneiden sich:
![interiorIntersects](img/interiorIntersects.png)
## Prüfung
| ID | C_GE_P_INTERSECTING_RINGS |
|---- | ---- |
| Anforderungs ID | R_GE_P_INTERSECTING_RINGS |
| Vorbedingungen | [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) |
| Beschreibung | Wenn ein Punkt eines inneren Rings außerhalb des äußeren ist oder innerhalb eines anderen inneren Rings, ist das eine Verschneidung. |
| Fehlercode | GE_P_INTERSECTING_RINGS |
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
| 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 für diese Anforderung, GE_S_NOT_CLOSED Fehler in späteren Prüfungen |
| 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
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_PO_0002](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_PO_0002)
## Anforderung
| ID | R_GE_P_NON_PLANAR |
|---- | ---- |
| Beschreibung | Jedes Polygon muss planar sein. Planarität ist erreicht, wenn kein Punkt weiter als *distanceTolerance* von der Regressionsebene aller Punkte entfernt ist, sowie die Normalen jedes Dreiecks des tessellierten Polygons keine größere Winkelabweichung als *angleTolerance* haben. |
| Parameter 1: type | Der Typ der Planaritätsprüfung kann ausgewählt werden. Muss eins von *distance*, *angle*, *both* sein.<ul><li>Wenn der Parameter *distance* ist: Nur die Distanzprüfung wird ausgeführt.</li><li> Wenn der Parameter *angle* ist: Nur die Normalenabweichungsprüfung wird ausgeführt.</li><li>Wenn der Parameter *both* ist: Beide Prüfungen werden ausgeführt.</li></ul> |
| Parameter 2: distanceTolerance | Toleranz der Distanz eines Punktes von der Regressionsebene |
| Parameter 3: angleTolerance | Toleranz des Winkels der Dreiecksnormalen |
| Fehlercodes | GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE, GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION |
Normalen Abweichung:
![normalDeviation](img/normalDeviation.png)
## Prüfung
| ID | C_GE_P_NON_PLANAR |
|---- | ---- |
| Anforderungs ID | R_GE_P_NON_PLANAR |
| Vorbedingungen | [R_SC_SCHEMA_VALIDATION](schemaRequirements.md), [R_GE_R_ALL](geometric.md#linear-ring) |
| Beschreibung | Um die Normalenabweichung zu bestimmen, werden alle Polygone tesselliert, um die Dreiecksnormalen zu berechnen, deren Winkel für den Vergleich verwendet werden. Die Tessellierung der Polygone ist nicht eindeutig und damit ist das Ergebnis der Prüfung der Normalenabweichung nicht eindeutig. <br />Für die Distanzprüfung wird eine Regressionsebene aus allen Polygonpunkten erstellt, um den Abstand der Punkte zu dieser Ebene zu berechnen. |
| Fehlercode | GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE, GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION |
## Implementierung
In CityDoctor2 ist nur die Abstandsprüfung standardmäßig aktiv, da die Normalenprüfung keine deterministischen Ergebnisse liefert.
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
| GE-gml:PO-0002-T0001 | SimpleSolid_SrefBS-GE-gml-PO-0001-T0002.gml | OK für diese Anforderung, GE_S_NOT_CLOSED Fehler in späteren Prüfungen |
| 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 mit *distanceTolerance* = 0.01 |
| GE-gml:PO-0002-T0003 | SimpleSolid_SrefBS-GE-gml-PO-0002-T0001.gml | OK für diese Anforderung mit *distanceTolerance* = 0.5, GE_P_ORIENTATION_RINGS_SAME in späteren Prüfungen |
| 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 mit Parameter type = angle |
# R_GE_P_ORIENTATION_RINGS_SAME
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_PO_0006](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_PO_0006)
## Anforderung
| ID | R_GE_P_ORIENTATION_RINGS_SAME |
|---- | ---- |
| Beschreibung | Äußere und innere Ringe dürfen nicht die selbe Orientierung haben. |
| Fehlercode | GE_P_ORIENTATION_RINGS_SAME |
Beispiel :
![OrientationSame](img/OrientationSame.png)
## Prüfung
| ID | C_GE_P_ORIENTATION_RINGS_SAME |
|---- | ---- |
| Anforderungs ID | R_GE_P_ORIENTATION_RINGS_SAME |
| Vorbedingungen | [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) |
| Beschreibung | |
| Fehlercode | GE_P_ORIENTATION_RINGS_SAME |
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
| 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
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_LR_0005](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_LR_0005)
## Anforderung
| ID | R_GE_R_COLLAPSED_TO_LINE |
|---- | ---- |
| Beschreibung | Ein Spezialfall von Selbstverschneidung (GE_R_SELF_INTERSECTION): Der Ring ist eine Linie. Wenn der Ring einen Punkt darstellt, dann wird dies durch die Anforderungen GE_R_TOO_FEW_POINTS / GE_R_CONSECUTIVE_POINTS_SAME geprüft ob es sich hierbei um einen Fehler handelt. |
| Fehlercode | GE_R_SELF_INTERSECTION, GE_R_COLLAPSED_TO_LINE, GE_R_TOO_FEW_POINTS, GE_R_CONSECUTIVE_POINTS_SAME |
## Prüfung
| ID | C_GE_R_COLLAPSED_TO_LINE|
|---- | ---- |
| Anforderungs ID | R_GE_R_COLLAPSED_TO_LINE |
| Vorbedingungen | [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) |
| Beschreibung | Ring als ein Punkt kann nicht passieren, wegen den Vorbedingungen. |
| Fehlercode | GE_R_COLLAPSED_TO_LINE |
Die Anforderung ist erfüllt mit [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) und [R_GE_R_SELF_INTERSECTION](R_GE_R_SELF_INTERSECTION.md) und benötigt demnach keine eigene Implementierung.
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
|GE-gml:LR-0005-T0001| GE-gml:LR-0005-T0001.gml| GE_R_SELF_INTERSECTION |
# R_GE_R_CONSECUTIVE_POINTS_SAME
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_LR_0002](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_LR_0002)
## Anforderung
\ No newline at end of file
| ID | R_GE_R_CONSECUTIVE_POINTS_SAME |
|------------------------------ | ------ |
| Beschreibung | Punkte innerhalb eines Rings sollen sich nicht wiederholen (ausgenommen der erste und der letzte im Fall von GML, siehe [R_GE_R_NOT_CLOSED](R_GE_R_NOT_CLOSED.md)). Dieser Fehler tritt oft auf, wenn zwei Punkte an derselben Stelle sind. |
| Parameter minVertexDistance | Punkte können als gleich angesehen werden, trotz (kleiner) Abstände, [siehe Vertex Anforderungen](geometric.md#vertex-punkt-anforderungen) |
| Fehlercode | GE_R_CONSECUTIVE_POINTS_SAME |
Zum Beispiel dieser Ring ist fehlerhaft:
```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>
```
Dieser Ring ist auch Fehlerhaft mit dem 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>
```
Das nächste Beispiel zeigt einen fehlerhaften Ring mit einem Punkt, der zwei mal vorkommt aber die Wiederholung nicht aufeinanderfolgend ist. Dies resultiert in einer Selbstverschneidung, dies ist mit dieser Anforderung nicht abgedeckt.
```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>
```
## Prüfung
| ID | C_GE_R_CONSECUTIVE_POINTS_SAME|
|---- | ---- |
| Anforderungs ID | R_GE_R_CONSECUTIVE_POINTS_SAME |
| Vorbedingungen | [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) |
| Beschreibung | Prüft ob sich ein Punkt wiederholt |
| Fehlercode | GE_R_CONSECUTIVE_POINTS_SAME|
| ID | C_GE_R_DUPLICATE_POINT|
|---- | ---- |
| Anforderungs ID | R_GE_R_CONSECUTIVE_POINTS_SAME, R_GE_R_SELF_INTERSECTION (teilweise) |
| Vorbedingungen | [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) |
| Beschreibung | Erkennt aufeinanderfolgende als auch andere wiederholende Punkte. |
| Fehlercode | GE_R_CONSECUTIVE_POINTS_SAME, GE_R_SELF_INTERSECTION |
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
|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 nach dieser Anforderung, aber hat Fehler GE_R_SELF_INTERSECTION erkannt von C_GE_R_DUPLICATE_POINT |
|GE-gml:LR-0002-T0004| SimpleSolid_SrefBS-GE-gml-LR-0002-T0003.gml| OK nach dieser Anforderung, aber hat Fehler GE_R_SELF_INTERSECTION erkannt von 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 /> mit Parameter minVertexDistance = 0.1, GE_S_NOT_CLOSED Fehler wenn minVertexDistance = 0.01 |
|GE-gml:LR-0002-T0006| SimpleSolid_SrefBS-GE-gml-LR-0002-T0005.gml| Nicht ausgeführt da 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
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_LR_0003](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_LR_0003)
## Anforderung
| ID | R_GE_R_NOT_CLOSED |
|---- | ---- |
| Beschreibung | Der erste und letzte Punkt müssen in GML der gleiche sein. |
| Parameter minVertexDistance | Punkte können als gleich angesehen werden, trotz (kleiner) Abstände, [siehe Vertex Anforderungen](geometric.md#vertex-punkt-anforderungen) |
| Fehlercode | GE_R_NOT_CLOSED |
Zum Beispiel dieser Ring ist fehlerhaft:
```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 mit 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>
```
## Prüfung
| ID | C_GE_R_NOT_CLOSED |
| ---- | ---- |
| Anforderungs ID | R_GE_R_NOT_CLOSED |
| Vorbedingungen | [R_SC_SCHEMA_VALIDATION](schemaRequirements.md) |
| Beschreibung | Der erste und letzte Punkt innerhalb eines Rings sollen der gleiche sein. |
| Fehlercode | GE_R_NOT_CLOSED |
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
|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 mit Parameter minVertexDistance = 0.1 |
\ No newline at end of file
# R_GE_R_SELF_INTERSECTION
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_LR_0004](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_LR_0004)
## Anforderung
| ID | R_GE_R_SELF_INTERSECTION |
|---- | ---- |
| Beschreibung | Ein Ring soll einfach sein, also sich nicht selbstverschneiden. Die Selbstverschneidung kann an einem konkreten Punkt sein, oder auch nicht. |
| Parameter minVertexDistance | Punkte können als gleich angesehen werden, trotz (kleiner) Abstände, [siehe Vertex Anforderungen](geometric.md#vertex-punkt-anforderungen). Dieser Parameter wird auch dazu verwendet um zu bestimmen wann ein Punkt eine Kante berührt. |
| Fehlercode | GE_R_SELF_INTERSECTION |
Beispiele für Selbstverschneidungen:
Schleife:
![BowtieSelfInt](img/BowtieSelfInt.png)
Punkt berührt Kante mit Parameter minVertexDistance:
![TouchingEdge](img/TouchingEdge.png)
Doppelte Punkte:
![Duplicate points](img/DuplicatePoints.png)
Doppelte Kante (Gleich wie doppelte Punkte):
![LineSelfInt](img/LineSelfInt.png)
## Prüfung
| ID | C_GE_R_SELF_INTERSECTION|
|---- | ---- |
| Anforderungs ID | R_GE_R_SELF_INTERSECTION |
| Vorbedingungen | [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) |
| Beschreibung | Erkennt doppelte Punkte und Selbstverschneidende Kanten. |
| Fehlercodes | GE_R_SELF_INTERSECTION |
| ID | C_GE_R_DUPLICATE_POINT|
|---- | ---- |
| Anforderungs ID | R_GE_R_CONSECUTIVE_POINTS_SAME, R_GE_R_SELF_INTERSECTION (teilweise) |
| Vorbedingungen | [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) |
| Beschreibung | Erkennt wiederholende und nicht wiederholende doppelte Punkte. Letzteres ist eine Selbstverschneidung. |
| Fehlercodes | GE_R_CONSECUTIVE_POINTS_SAME, GE_R_SELF_INTERSECTION |
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
| GE-gml:LR-0004-T0001 | SimpleSolid_SrefBS.gml | OK |
| GE-gml:LR-0004-T0002 | SimpleSolid_SrefBS-GE-gml-LR-0002-T0002.gml | Doppelte Punkte (Beispiel, nicht representativ für Fehler in Modell):<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 | Doppelte Punkte (resultiert in einer doppelten Kante)<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 | Schleife (Beispiel, nicht representativ für Fehler in Modell):<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 | Berührender Punkt mit 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 für diese Anforderung mit Parameter minVertexDistance = 0.01, GE_S_NOT_CLOSED in späteren Prüfungen |
\ No newline at end of file
# R_GE_R_TOO_FEW_POINTS
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_LR_0001](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_LR_0001)
## Anforderung
| ID | R_GE_R_TOO_FEW_POINTS |
|---- | ---- |
| Beschreibung | Ein Ring muss mindestens 3 Punkte haben. Für GML-Ringe ignoriert diese Anforderung die Tatsache, dass der erste und der letzte Punkt gleich sind (siehe [R_GE_R_NOT_CLOSED](R_GE_R_NOT_CLOSED.md)). <br /> Ein GML-Ring ist nach dieser Anforderung valide, wenn er mindestens 3 unterschiedliche Punkte enthält, aber er ist dann nicht geschlossen (die Anforderung [R_GE_R_NOT_CLOSED](R_GE_R_NOT_CLOSED.md) ist nicht erfüllt). |
| Parameter minVertexDistance | Punkte können als gleich angesehen werden, trotz (kleiner) Abstände, [siehe Vertex Anforderungen](geometric.md#vertex-punkt-anforderungen) |
| Fehlercode | GE_R_TOO_FEW_POINTS |
Zum Beispiel, dieser Ring ist fehlerhaft:
```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>
```
Valide Ringe:
(Dieser Ring ist nicht geschlossen, hat aber genug unterschiedliche Punkte, um dieser Anforderung zu genügen.)
```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>
```
## Prüfung
| ID | C_GE_R_TOO_FEW_POINTS|
|---- | ---- |
| Anforderungs ID | R_GE_R_TOO_FEW_POINTS |
| Vorbedingungen | [R_SC_SCHEMA_VALIDATION](schemaRequirements.md), [R_GE_R_NOT_CLOSED](R_GE_R_NOT_CLOSED.md) |
| Beschreibung | Ring muss mindestens 3 unterschiedliche Punkte beinhalten |
| Fehlercode | GE_R_TOO_FEW_POINTS|
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
|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| Prüfung nicht ausgeführt da GE_R_NOT_CLOSED<br />Ring _Simple_BD.1_PG.6_LR.1 ist nicht geschlossen, hat aber 3 Punkte.|
# R_GE_SO
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_SO_0009](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_SO_0009)
## Anforderung
| ID | R_GE_SO |
|---- | ---- |
| Beschreibung | Ein Solid ist eine Sammlung von Polygonen mit Einschränkungen. Die Geometrie muss 'wasserdicht' sein. Siehe die Definition von Solids in Anhang A des CityGML QIE. Ein Solid ist gültig, wenn die Anforderungen [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) erfüllt sind. |
| Fehlercode | -- |
## Prüfung
keine weitere Prüfung notwendig
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
Existierende Testfälle der einzelnen Prüfungen können verwendet werden.
# R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_SO_0008](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_SO_0008)
## Anforderung
| ID | R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION |
|---- | ---- |
| Beschreibung | Alle Polygone haben die falsche Orientierung (definiert in [GE_S_POLYGON_WRONG_ORIENTATION](R_GE_S_POLYGON_WRONG_ORIENTATION.md)), so dass alle Polygone nach innen zeigen. |
| Fehlercode | GE_S_ALL_POLYGONS_WRONG_ORIENTATION |
## Prüfung
| ID | C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION |
|---- | ---- |
| Anforderungs ID | R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION |
| Vorbedingungen| [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) |
| Beschreibung | |
| Fehlercode | GE_S_ALL_POLYGONS_WRONG_ORIENTATION |
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
| 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
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_SO_0005](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_SO_0005)
## Anforderung
| ID | R_GE_S_MULTIPLE_CONNECTED_COMPONENTS |
|---- | ---- |
| Beschreibung | 1+ Polygone sind nicht mit derselben Hülle verbunden. |
| Fehlercode | GE_S_MULTIPLE_CONNECTED_COMPONENTS |
![GE_gml_so_0005](img/GE_gml_so_0005.png)
## Prüfung
| ID | C_GE_S_MULTIPLE_CONNECTED_COMPONENTS|
|---- | ---- |
| Anforderungs ID | R_GE_S_MULTIPLE_CONNECTED_COMPONENTS |
| Vorbedingungen | [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) |
| Beschreibung | Erstelle einen doppelten Graphen (Polygone werden Knoten, Polygone, die eine Kante teilen werden im Graph verbunden). Wenn der Graph nicht verbunden ist, gibt es mehrere verbundene Komponenten. |
| Fehlercode | GE_S_MULTIPLE_CONNECTED_COMPONENTS |
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
|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
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_SO_0004](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_SO_0004)
## Anforderung
| ID | R_GE_S_NON_MANIFOLD_EDGE |
|---- | ---- |
| Beschreibung | Jede Kante sollte genau 2 Polygone begrenzen. |
| Fehlercode | GE_S_NON_MANIFOLD_EDGE |
| Kommentar | Diese Anforderung ist ähnlich zu [GE_S_NOT_CLOSED](R_GE_S_NOT_CLOSED.md): Wenn eine Kante mehr als 2 Polygone begrenzt, dann ist es ein GE_S_NON_MANIFOLD_EDGE Fehler. Wenn eine Kante nur ein Polygon begrenzt, ist es ein GE_S_NOT_CLOSED Fehler (ein Loch im Solid) |
![image](img/image.png)
## Prüfung
| ID | C_GE_S_NON_MANIFOLD_EDGE|
|---- | ---- |
| Anforderungs ID | R_GE_S_NON_MANIFOLD_EDGE |
| Vorbedingungen | [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) |
| Beschreibung | |
| Fehlercode | GE_S_NON_MANIFOLD_EDGE |
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
|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
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_SO_0003](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_SO_0003)
## Anforderung
| ID | R_GE_S_NON_MANIFOLD_VERTEX |
|---- | ---- |
| Beschreibung | Jedes Polygon das an einem Punkt eines Solids anliegt muss über Kanten mit den anderen anliegenden Polygonen verbunden sein. Punkt und anliegende Polygone müssen ein 'Regenschirm' erzeugen. |
| Fehlercode | GE_S_NON_MANIFOLD_VERTEX |
## Prüfung
| ID | C_GE_S_NON_MANIFOLD_VERTEX |
|---- | ---- |
| Anforderungs ID | R_GE_S_NON_MANIFOLD_VERTEX |
| Vorbedingungen| [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) |
| Beschreibung | |
| Fehlercode | GE_S_NON_MANIFOLD_VERTEX |
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
| 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
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_SO_0002](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_SO_0002)
\ No newline at end of file
## Anforderung
| ID | R_GE_S_NOT_CLOSED |
|---- | ---- |
| Beschreibung | Die Hülle darf keine Löcher haben, sie muss Wasserdicht sein. |
| Fehlercode | GE_S_NOT_CLOSED |
![Closed](img/Closed.png)
## Prüfung
| ID | C_GE_S_NOT_CLOSED |
|---- | ---- |
| Anforderungs ID | R_GE_S_NOT_CLOSED |
| Vorbedingungen | [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) |
| Beschreibung | |
| Fehlercode | GE_S_NOT_CLOSED |
Die Prüfung sucht alle Kanten und ordnet sie den jeweiligen Gegenkanten zu. Falls eine Kante keine Gegenkante hat so wird hier ein Loch in der Hülle erkannt und ein Fehler herausgegeben.
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
| 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 |
# R_GE_S_POLYGON_WRONG_ORIENTATION
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_SO_0007](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_SO_0007)
## Anforderung
| ID | R_GE_S_POLYGON_WRONG_ORIENTATION |
|---- | ---- |
| Beschreibung | Ein Polygon muss so orientiert sein, dass die Normale des äußeren Rings nach außen zeigt. Die Punkte sind gegen den Uhrzeigersinn angeordnet. |
| Fehlercode | GE_S_POLYGON_WRONG_ORIENTATION |
![PolygonWrongOrientation](img/Testgebaeude-SO-0007.png)
## Prüfung
| ID | C_GE_S_POLYGON_WRONG_ORIENTATION|
|---- | ---- |
| Anforderungs ID | R_GE_S_POLYGON_WRONG_ORIENTATION |
| Vorbedingungen | [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_EDGE](R_GE_S_NON_MANIFOLD_EDGE.md) |
| Beschreibung | |
| Fehlercode | GE_S_POLYGON_WRONG_ORIENTATION |
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
|GE-gml:SO-0007-T0001| SimpleSolid_SrefBS.gml| OK |
|GE-gml:SO-0007-T0002| SimpleSolid_SrefBS-GE-gml-SO-0007-T0001.gml| GE_S_POLYGON_WRONG_ORIENTATION |
# R_GE_S_SELF_INTERSECTION
siehe [https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_SO_0006](https://gitlab.com/volkercoors/agqual3d/-/wikis/Validierung/Anforderungen/GE_gml_SO_0006)
## Anforderung
| ID | R_GE_S_SELF_INTERSECTION |
|---- | ---- |
| Beschreibung| Der Solid darf sich nicht selbstverschneiden |
| Fehlercode | GE_S_SELF_INTERSECTION |
Beispiel (links = OK, rechts = Fehlerhaft):
![SelfIntersection](img/SelfIntersection.png)
## Prüfung
| ID | C_GE_S_SELF_INTERSECTION |
|---- | ---- |
| Anforderungs ID | R_GE_S_SELF_INTERSECTION |
| Vorbedingungen | [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) |
| Beschreibung | |
| Fehlercode | GE_S_SELF_INTERSECTION |
## Testfälle
| Testfall ID | CityGML Modell | Erwartetes Ergebnis |
|----|---------------|-----------------|
| GE-gml:SO-0006-T0001 | SimpleSolid_SrefBS.gml | OK |
| GE-gml:SO-0006-T0002 | SimpleSolid_SrefBS-GE-gml-SO-0006-T0001.gml | GE_S_SELF_INTERSECTION |
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