diff --git a/docs/de/R_GE_MS.md b/docs/de/R_GE_MS.md index 460ce7778bbb81921158a1e6ea3fffcbb4ca559f..9e9cc8a61b7afe97152c0e5da83e2c76a9fd86ba 100644 --- a/docs/de/R_GE_MS.md +++ b/docs/de/R_GE_MS.md @@ -1,4 +1,23 @@ # 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. + diff --git a/docs/de/R_GE_P_HOLE_OUTSIDE.md b/docs/de/R_GE_P_HOLE_OUTSIDE.md index e50b5b7f9ca5925b445f38a5cd1bd83e23ec6f69..e16d293bb7409e79ce92bf464ab47b1326187cb4 100644 --- a/docs/de/R_GE_P_HOLE_OUTSIDE.md +++ b/docs/de/R_GE_P_HOLE_OUTSIDE.md @@ -1,4 +1,30 @@ # 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 | diff --git a/docs/de/R_GE_P_INNER_RINGS_NESTED.md b/docs/de/R_GE_P_INNER_RINGS_NESTED.md index d5f7e5cfb1be50f89b62fa31e29ebbec225d54c8..efcd384a6edf639cdeb4dc841f5e98228033dbef 100644 --- a/docs/de/R_GE_P_INNER_RINGS_NESTED.md +++ b/docs/de/R_GE_P_INNER_RINGS_NESTED.md @@ -1,3 +1,28 @@ # 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 | + diff --git a/docs/de/R_GE_P_INTERIOR_DISCONNECTED.md b/docs/de/R_GE_P_INTERIOR_DISCONNECTED.md index 4febd2d0107f8b3f043a8a7834e9c092d39372c9..f5062dc0f04dca0b5ec3b13b9e3c0a4dc872536f 100644 --- a/docs/de/R_GE_P_INTERIOR_DISCONNECTED.md +++ b/docs/de/R_GE_P_INTERIOR_DISCONNECTED.md @@ -1,4 +1,34 @@ # 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 | + diff --git a/docs/de/R_GE_P_INTERSECTING_RINGS.md b/docs/de/R_GE_P_INTERSECTING_RINGS.md index 1416881ade0cc1ffcc32efbdf66f3c05356e8367..70843cd97dee6ef455ff8fa500d753468c004fb1 100644 --- a/docs/de/R_GE_P_INTERSECTING_RINGS.md +++ b/docs/de/R_GE_P_INTERSECTING_RINGS.md @@ -1,3 +1,35 @@ # 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 | diff --git a/docs/de/R_GE_P_NON_PLANAR.md b/docs/de/R_GE_P_NON_PLANAR.md index f6a47aff6cbc5c14ca0ae22029d3a372e3542dc9..dfb05994f7ea12156159b5990811b0c1406ebf68 100644 --- a/docs/de/R_GE_P_NON_PLANAR.md +++ b/docs/de/R_GE_P_NON_PLANAR.md @@ -1,3 +1,39 @@ # 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. | +| 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.
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 | + diff --git a/docs/de/R_GE_P_ORIENTATION_RINGS_SAME.md b/docs/de/R_GE_P_ORIENTATION_RINGS_SAME.md index 07395d97f32302ed3bb933f1c80c916559623f9d..3f1fa212058b157db03f5adb213db43b9e5bdf40 100644 --- a/docs/de/R_GE_P_ORIENTATION_RINGS_SAME.md +++ b/docs/de/R_GE_P_ORIENTATION_RINGS_SAME.md @@ -1,4 +1,29 @@ # 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 | + diff --git a/docs/de/R_GE_R_COLLAPSED_TO_LINE.md b/docs/de/R_GE_R_COLLAPSED_TO_LINE.md index 81d8cfe1dc5db503929e64779e167c6cfb7a12dd..0b585da901386192e2d62f54e48ed86eb095d29e 100644 --- a/docs/de/R_GE_R_COLLAPSED_TO_LINE.md +++ b/docs/de/R_GE_R_COLLAPSED_TO_LINE.md @@ -1,4 +1,28 @@ # 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 | + diff --git a/docs/de/R_GE_R_CONSECUTIVE_POINTS_SAME.md b/docs/de/R_GE_R_CONSECUTIVE_POINTS_SAME.md index b19c88ab90a8ebb12af6b278ccddb945796ca26e..e4ed5b4bfc95d89d535da6af6dc54a1b82f75d12 100644 --- a/docs/de/R_GE_R_CONSECUTIVE_POINTS_SAME.md +++ b/docs/de/R_GE_R_CONSECUTIVE_POINTS_SAME.md @@ -1,5 +1,75 @@ # 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 + +0.0 0.0 0.0 +1.0 0.0 0.0 +1.0 0.0 0.0 +1.0 1.0 0.0 +0.0 1.0 0.0 +0.0 0.0 0.0 + +``` + +Dieser Ring ist auch Fehlerhaft mit dem Parameter minVertexDistance = 0.1 +```xml + +0.0 0.0 0.0 +0.05 0.0 0.0 +1.0 0.0 0.0 +1.0 1.0 0.0 +0.0 1.0 0.0 +0.0 0.0 0.0 + +``` + +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 + +0.0 0.0 0.0 +1.0 0.0 0.0 +1.0 1.0 0.0 +1.0 0.0 0.0 +0.0 1.0 0.0 +0.0 0.0 0.0 + +``` + + +## 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:
_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:
_Simple_BD.1_PG.6_LR.1
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:
_Simple_BD.1_PG.6_LR.1 | + \ No newline at end of file diff --git a/docs/de/R_GE_R_NOT_CLOSED.md b/docs/de/R_GE_R_NOT_CLOSED.md index 390575601115a86231d59649083b9a07322f1fac..626438390b61bdca1df23cd51a1729d169991cbc 100644 --- a/docs/de/R_GE_R_NOT_CLOSED.md +++ b/docs/de/R_GE_R_NOT_CLOSED.md @@ -1,4 +1,48 @@ # 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 + +0.0 0.0 0.0 +1.0 0.0 0.0 +1.0 1.0 0.0 +0.0 1.0 0.0 + +``` +OK mit Parameter minVertexDistance = 0.1: +```xml + +0.0 0.0 0.0 +1.0 0.0 0.0 +1.0 1.0 0.0 +0.0 1.0 0.0 +0.0 0.0 0.05 + +``` + + +## 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 diff --git a/docs/de/R_GE_R_SELF_INTERSECTION.md b/docs/de/R_GE_R_SELF_INTERSECTION.md index a9a5d8126b5bc7077788a8356990c3a4670bcbcc..613f4bc430c14bd522cc357bad4a2b18a6186ce5 100644 --- a/docs/de/R_GE_R_SELF_INTERSECTION.md +++ b/docs/de/R_GE_R_SELF_INTERSECTION.md @@ -1,3 +1,52 @@ # 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):
![Duplicate points](img/DuplicatePoints.png)
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)
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):
![BowtieSelfInt](img/BowtieSelfInt.png)
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:
![TouchingEdge](img/TouchingEdge.png)
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 diff --git a/docs/de/R_GE_R_TOO_FEW_POINTS.md b/docs/de/R_GE_R_TOO_FEW_POINTS.md index eb02b7c0238936d44d227e1497bdd15171aee9a6..92c19ac219c482a77316232c7b14893c2d6cf8b9 100644 --- a/docs/de/R_GE_R_TOO_FEW_POINTS.md +++ b/docs/de/R_GE_R_TOO_FEW_POINTS.md @@ -1,4 +1,59 @@ # 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)).
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 + +0.0 0.0 0.0 +1.0 0.0 0.0 +0.0 0.0 0.0 + +``` +Valide Ringe: + + +(Dieser Ring ist nicht geschlossen, hat aber genug unterschiedliche Punkte, um dieser Anforderung zu genügen.) +```xml + +0.0 0.0 0.0 +1.0 0.0 0.0 +0.0 1.0 0.0 + +``` + +```xml + +0.0 0.0 0.0 +1.0 0.0 0.0 +0.0 1.0 0.0 +0.0 0.0 0.0 + +``` + +## 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
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
Ring _Simple_BD.1_PG.6_LR.1 ist nicht geschlossen, hat aber 3 Punkte.| + diff --git a/docs/de/R_GE_SO.md b/docs/de/R_GE_SO.md index 58f0c3497ffb8ad9b3430cc2db1b3526e8e305b6..130895688f1b62e0085b68908cbc5241aca83c6a 100644 --- a/docs/de/R_GE_SO.md +++ b/docs/de/R_GE_SO.md @@ -1,3 +1,20 @@ # 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. diff --git a/docs/de/R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION.md b/docs/de/R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION.md index a0f6149a4f782e5e17eb6049bc408d5dc6a19fef..d38eef118aa61726886ee60db98cb4ed67ffbccb 100644 --- a/docs/de/R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION.md +++ b/docs/de/R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION.md @@ -1,4 +1,26 @@ # 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 | + diff --git a/docs/de/R_GE_S_MULTIPLE_CONNECTED_COMPONENTS.md b/docs/de/R_GE_S_MULTIPLE_CONNECTED_COMPONENTS.md index 7cbdd9f01a282b73c312d6cc9ea3041d82f7d345..d954609cbd4a621abd90cc2b493adb5aa3e151e4 100644 --- a/docs/de/R_GE_S_MULTIPLE_CONNECTED_COMPONENTS.md +++ b/docs/de/R_GE_S_MULTIPLE_CONNECTED_COMPONENTS.md @@ -1,3 +1,27 @@ # 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 | diff --git a/docs/de/R_GE_S_NON_MANIFOLD_EDGE.md b/docs/de/R_GE_S_NON_MANIFOLD_EDGE.md index db01ae9b3deee7e95dce32ebb2f737fdc36cc5db..a53d5bf680b87cc6776b97da05e0c61d4d99752e 100644 --- a/docs/de/R_GE_S_NON_MANIFOLD_EDGE.md +++ b/docs/de/R_GE_S_NON_MANIFOLD_EDGE.md @@ -1,3 +1,28 @@ # 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 | diff --git a/docs/de/R_GE_S_NON_MANIFOLD_VERTEX.md b/docs/de/R_GE_S_NON_MANIFOLD_VERTEX.md index e4f4143934587f1da40b9bd4fb32353b5726b7a3..f312ab0fc89a55c00e112ee3b441c74916274580 100644 --- a/docs/de/R_GE_S_NON_MANIFOLD_VERTEX.md +++ b/docs/de/R_GE_S_NON_MANIFOLD_VERTEX.md @@ -1,6 +1,29 @@ # 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 | + + diff --git a/docs/de/R_GE_S_NOT_CLOSED.md b/docs/de/R_GE_S_NOT_CLOSED.md index 0a60df6ee781d9259b1cfe748827f74c0083e728..b9b1b41e247aefa1a2497317f39d2513267cdffc 100644 --- a/docs/de/R_GE_S_NOT_CLOSED.md +++ b/docs/de/R_GE_S_NOT_CLOSED.md @@ -1,3 +1,30 @@ # 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 | + diff --git a/docs/de/R_GE_S_POLYGON_WRONG_ORIENTATION.md b/docs/de/R_GE_S_POLYGON_WRONG_ORIENTATION.md index 7f7def9bc400c8e0e207f8a2e562009817b67024..2326a3626151a7dc8540d7c8b195aaa9a217f0a1 100644 --- a/docs/de/R_GE_S_POLYGON_WRONG_ORIENTATION.md +++ b/docs/de/R_GE_S_POLYGON_WRONG_ORIENTATION.md @@ -1,3 +1,27 @@ # 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 | diff --git a/docs/de/R_GE_S_SELF_INTERSECTION.md b/docs/de/R_GE_S_SELF_INTERSECTION.md index daa630fac415b5f9d55dcf7a49f53e6743d18eb9..7f3aff4780304f404fe6b2293c62fef09262f3ea 100644 --- a/docs/de/R_GE_S_SELF_INTERSECTION.md +++ b/docs/de/R_GE_S_SELF_INTERSECTION.md @@ -1,5 +1,32 @@ # 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 | + + diff --git a/docs/de/R_GE_S_TOO_FEW_POLYGONS.md b/docs/de/R_GE_S_TOO_FEW_POLYGONS.md index f58f339594a554a3632fa745d2154ecb8416b682..740aa30df52e8fb14451ad83e45d23978b8775c4 100644 --- a/docs/de/R_GE_S_TOO_FEW_POLYGONS.md +++ b/docs/de/R_GE_S_TOO_FEW_POLYGONS.md @@ -1,5 +1,29 @@ # 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 | + + diff --git a/docs/de/geometric.md b/docs/de/geometric.md index e7a379e97b4f41ab8af3c66b0a07e29b2ebdd55a..4555d33ead610406705d771303bc3865a53360a0 100644 --- a/docs/de/geometric.md +++ b/docs/de/geometric.md @@ -1,6 +1,6 @@ # 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). !!! note @@ -31,7 +31,7 @@ Die folgenden Anforderungen wurden auf den drei geometrischen Ebenen definiert [ | 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_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_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**
Ring ist ein Punkt oder eine Linie | GE_R_COLLAPSED_TO_LINE | C_GE_R_COLLAPSED_TO_LINE | @@ -125,7 +125,7 @@ graph TD; ``` ## 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 | | --------------- | ------------ | -------------- | ---------- |-------------------- | diff --git a/docs/en/R_GE_MS.md b/docs/en/R_GE_MS.md index ba51ab049cbf692af17c30a35628b1e643a58c32..cd1b8da9869bc1faab8a6da02b326b671717f32e 100644 --- a/docs/en/R_GE_MS.md +++ b/docs/en/R_GE_MS.md @@ -1,4 +1,23 @@ # 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. + diff --git a/docs/en/R_GE_P_HOLE_OUTSIDE.md b/docs/en/R_GE_P_HOLE_OUTSIDE.md index fd3aae539e6cb3ecd4b06eff771246dedd726b87..3c102e037cd2f054f82b5538760f5298b6145035 100644 --- a/docs/en/R_GE_P_HOLE_OUTSIDE.md +++ b/docs/en/R_GE_P_HOLE_OUTSIDE.md @@ -1,4 +1,30 @@ # 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 | diff --git a/docs/en/R_GE_P_INNER_RINGS_NESTED.md b/docs/en/R_GE_P_INNER_RINGS_NESTED.md index 077b00e5ed4d2afda1e799290cd4e203dd3e1805..8893c790a2c0bbb29efc5a1d215a908da88b149d 100644 --- a/docs/en/R_GE_P_INNER_RINGS_NESTED.md +++ b/docs/en/R_GE_P_INNER_RINGS_NESTED.md @@ -1,3 +1,28 @@ # 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 | + diff --git a/docs/en/R_GE_P_INTERIOR_DISCONNECTED.md b/docs/en/R_GE_P_INTERIOR_DISCONNECTED.md index 254e921edc35b5e79b7fe8c1adb4ca06bfa69406..9070987254d086f50400ee02efd611f13e592c29 100644 --- a/docs/en/R_GE_P_INTERIOR_DISCONNECTED.md +++ b/docs/en/R_GE_P_INTERIOR_DISCONNECTED.md @@ -1,4 +1,34 @@ # 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 | + diff --git a/docs/en/R_GE_P_INTERSECTING_RINGS.md b/docs/en/R_GE_P_INTERSECTING_RINGS.md index d402f715caeff5506ffe2525daa5f0ee4827b1be..f8aeac8fd7591af8337958160255b7a497b27208 100644 --- a/docs/en/R_GE_P_INTERSECTING_RINGS.md +++ b/docs/en/R_GE_P_INTERSECTING_RINGS.md @@ -1,3 +1,35 @@ # 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) \ No newline at end of file +## Requirement + +| 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 | diff --git a/docs/en/R_GE_P_NON_PLANAR.md b/docs/en/R_GE_P_NON_PLANAR.md index 05e8dac49a9a302525f0d5c9a19841c3df16e6b6..f7c01b37814bf7dcfab2ad04009cae900537dabd 100644 --- a/docs/en/R_GE_P_NON_PLANAR.md +++ b/docs/en/R_GE_P_NON_PLANAR.md @@ -1,3 +1,39 @@ # 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*. | +| 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.
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 | + diff --git a/docs/en/R_GE_P_ORIENTATION_RINGS_SAME.md b/docs/en/R_GE_P_ORIENTATION_RINGS_SAME.md index 072c6eee3031324125246b77b619c2bfaa5c0e6e..31d65b94eb9aa3c17fa55bbc63f9d8c86db63fce 100644 --- a/docs/en/R_GE_P_ORIENTATION_RINGS_SAME.md +++ b/docs/en/R_GE_P_ORIENTATION_RINGS_SAME.md @@ -1,4 +1,29 @@ # 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 | + diff --git a/docs/en/R_GE_R_COLLAPSED_TO_LINE.md b/docs/en/R_GE_R_COLLAPSED_TO_LINE.md index da279a7a8cf00e5cfa3e4ed7181990d7d7d672bc..0805381cf07afbaeacee9b378dccf37f0f97c5e3 100644 --- a/docs/en/R_GE_R_COLLAPSED_TO_LINE.md +++ b/docs/en/R_GE_R_COLLAPSED_TO_LINE.md @@ -1,4 +1,28 @@ # 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 | + diff --git a/docs/en/R_GE_R_CONSECUTIVE_POINTS_SAME.md b/docs/en/R_GE_R_CONSECUTIVE_POINTS_SAME.md index a99b0944f6b770e4ac69288bc9abab17c707af39..f39a9ed0101c3c51bfd2dc583a34ab9833a203f2 100644 --- a/docs/en/R_GE_R_CONSECUTIVE_POINTS_SAME.md +++ b/docs/en/R_GE_R_CONSECUTIVE_POINTS_SAME.md @@ -1,5 +1,75 @@ # 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 - \ No newline at end of file +| 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](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 + +0.0 0.0 0.0 +1.0 0.0 0.0 +1.0 0.0 0.0 +1.0 1.0 0.0 +0.0 1.0 0.0 +0.0 0.0 0.0 + +``` + +This ring is also erroneous with the parameter minVertexDistance = 0.1 +```xml + +0.0 0.0 0.0 +0.05 0.0 0.0 +1.0 0.0 0.0 +1.0 1.0 0.0 +0.0 1.0 0.0 +0.0 0.0 0.0 + +``` + +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 + +0.0 0.0 0.0 +1.0 0.0 0.0 +1.0 1.0 0.0 +1.0 0.0 0.0 +0.0 1.0 0.0 +0.0 0.0 0.0 + +``` + + +## 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:
_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 | + \ No newline at end of file diff --git a/docs/en/R_GE_R_NOT_CLOSED.md b/docs/en/R_GE_R_NOT_CLOSED.md index aa1a5a17405be6fc9927f408c2c6785f0280da8a..313b8d779a3a003ef39e0a7d71713eed1aaca316 100644 --- a/docs/en/R_GE_R_NOT_CLOSED.md +++ b/docs/en/R_GE_R_NOT_CLOSED.md @@ -1,4 +1,48 @@ # 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 + +0.0 0.0 0.0 +1.0 0.0 0.0 +1.0 1.0 0.0 +0.0 1.0 0.0 + +``` +OK with parameter minVertexDistance = 0.1: +```xml + +0.0 0.0 0.0 +1.0 0.0 0.0 +1.0 1.0 0.0 +0.0 1.0 0.0 +0.0 0.0 0.05 + +``` + + +## 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 diff --git a/docs/en/R_GE_R_SELF_INTERSECTION.md b/docs/en/R_GE_R_SELF_INTERSECTION.md index 55c3f8a24485867c2c521d6a84917723e2602559..9c37172702ed21fe602ca42c91719def562f38b6 100644 --- a/docs/en/R_GE_R_SELF_INTERSECTION.md +++ b/docs/en/R_GE_R_SELF_INTERSECTION.md @@ -1,3 +1,52 @@ # 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):
![Duplicate points](img/DuplicatePoints.png)
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](img/BowtieSelfInt.png)
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](img/TouchingEdge.png)
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 diff --git a/docs/en/R_GE_R_TOO_FEW_POINTS.md b/docs/en/R_GE_R_TOO_FEW_POINTS.md index c9291dc2c24a2d6442185d58bf0f85743a1c3ae6..b68c67ed6af31249b6c6029b0205bd212703bd2d 100644 --- a/docs/en/R_GE_R_TOO_FEW_POINTS.md +++ b/docs/en/R_GE_R_TOO_FEW_POINTS.md @@ -1,4 +1,59 @@ # 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)).
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 + +0.0 0.0 0.0 +1.0 0.0 0.0 +0.0 0.0 0.0 + +``` +Valid rings: + + +(This ring is not closed, but has enough distinct points to satisfy this requirement.) +```xml + +0.0 0.0 0.0 +1.0 0.0 0.0 +0.0 1.0 0.0 + +``` + +```xml + +0.0 0.0 0.0 +1.0 0.0 0.0 +0.0 1.0 0.0 +0.0 0.0 0.0 + +``` + +## 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
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
ring _Simple_BD.1_PG.6_LR.1 is not closed, but has 3 points.| + diff --git a/docs/en/R_GE_SO.md b/docs/en/R_GE_SO.md index ba76c52b7cdfc6c5134ab1ee28e499e2111eebc3..5d006a872b07e9c7bc2a1f0dce124cbfebed5e1b 100644 --- a/docs/en/R_GE_SO.md +++ b/docs/en/R_GE_SO.md @@ -1,3 +1,20 @@ # 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. diff --git a/docs/en/R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION.md b/docs/en/R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION.md index 4c23ce74846224c9f01d317322525dd20665da13..955a84f7973570a9ae7f60872536fddab5b0de35 100644 --- a/docs/en/R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION.md +++ b/docs/en/R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION.md @@ -1,4 +1,26 @@ # 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 | + diff --git a/docs/en/R_GE_S_MULTIPLE_CONNECTED_COMPONENTS.md b/docs/en/R_GE_S_MULTIPLE_CONNECTED_COMPONENTS.md index 2678fb4e5bfb7651d69620704923bff8f6f30076..65afaf3936f05339d460b8e868079620229d26b2 100644 --- a/docs/en/R_GE_S_MULTIPLE_CONNECTED_COMPONENTS.md +++ b/docs/en/R_GE_S_MULTIPLE_CONNECTED_COMPONENTS.md @@ -1,3 +1,27 @@ # 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 | diff --git a/docs/en/R_GE_S_NON_MANIFOLD_EDGE.md b/docs/en/R_GE_S_NON_MANIFOLD_EDGE.md index b645eee81e9276025db9072084a0bf2c2ba746c7..b422ebad8efcb5a82dbd6743f1aa2cd0cff7fe21 100644 --- a/docs/en/R_GE_S_NON_MANIFOLD_EDGE.md +++ b/docs/en/R_GE_S_NON_MANIFOLD_EDGE.md @@ -1,3 +1,28 @@ # 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 | diff --git a/docs/en/R_GE_S_NON_MANIFOLD_VERTEX.md b/docs/en/R_GE_S_NON_MANIFOLD_VERTEX.md index cb7f23d7240f3c9c0c4915ae80e11831e2baa09b..87330095925f561e5cae57e37f3bfda9a6e251a0 100644 --- a/docs/en/R_GE_S_NON_MANIFOLD_VERTEX.md +++ b/docs/en/R_GE_S_NON_MANIFOLD_VERTEX.md @@ -1,6 +1,29 @@ # 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 | + + diff --git a/docs/en/R_GE_S_NOT_CLOSED.md b/docs/en/R_GE_S_NOT_CLOSED.md index 3e7070b0908a2f19950497f5167efaae658b1a2c..7b7ddf01a0f5a071ef0b67181758fc5ce712d3bd 100644 --- a/docs/en/R_GE_S_NOT_CLOSED.md +++ b/docs/en/R_GE_S_NOT_CLOSED.md @@ -1,3 +1,30 @@ # 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) \ No newline at end of file +## Requirement + +| 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 | + diff --git a/docs/en/R_GE_S_POLYGON_WRONG_ORIENTATION.md b/docs/en/R_GE_S_POLYGON_WRONG_ORIENTATION.md index 66e75f59ece325aa0ca2a27330b7dbff8ad1363b..c2a7a2d4457775fd78d5bf0775dc7bc7d7f2c040 100644 --- a/docs/en/R_GE_S_POLYGON_WRONG_ORIENTATION.md +++ b/docs/en/R_GE_S_POLYGON_WRONG_ORIENTATION.md @@ -1,3 +1,27 @@ # R_GE_S_POLYGON_WRONG_ORIENTATION -siehe [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0007](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0007) +## Requirement + +| ID | R_GE_S_POLYGON_WRONG_ORIENTATION | +|---- | ---- | +| Description | A polygon must be oriented so that the normal of the exterior ring points outward. The points are arranged counter-clockwise. | +| Error code | GE_S_POLYGON_WRONG_ORIENTATION | + +![PolygonWrongOrientation](img/Testgebaeude-SO-0007.png) + +## Check + +| ID | C_GE_S_POLYGON_WRONG_ORIENTATION| +|---- | ---- | +| Requirement ID | R_GE_S_POLYGON_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_EDGE](R_GE_S_NON_MANIFOLD_EDGE.md) | +| Description | | +| Error code | GE_S_POLYGON_WRONG_ORIENTATION | + + +## Test cases + +| Test case ID | CityGML model | Expected result | +|----|---------------|-----------------| +|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 | diff --git a/docs/en/R_GE_S_SELF_INTERSECTION.md b/docs/en/R_GE_S_SELF_INTERSECTION.md index eb507a68599e3091e08b0cbe2875df7ab42242d2..8450efd96f8cc5e5c40c62fbab0a32a88f74caf5 100644 --- a/docs/en/R_GE_S_SELF_INTERSECTION.md +++ b/docs/en/R_GE_S_SELF_INTERSECTION.md @@ -1,5 +1,32 @@ # R_GE_S_SELF_INTERSECTION -siehe [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0006](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0006) +## Requirement + +| ID | R_GE_S_SELF_INTERSECTION | +|---- | ---- | +| Description| The solid must not self-intersect | +| Error code | GE_S_SELF_INTERSECTION | + +Example (left = OK, right = invalid): +![SelfIntersection](img/SelfIntersection.png) + +## Check + +| ID | C_GE_S_SELF_INTERSECTION | +|---- | ---- | +| Requirement ID | R_GE_S_SELF_INTERSECTION | +| 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_POLYGON_WRONG_ORIENTATION](R_GE_S_POLYGON_WRONG_ORIENTATION.md) | +| Description | | +| Error code | GE_S_SELF_INTERSECTION | + + +## Test cases + +| Test case ID | CityGML model | Expected result | +|----|---------------|-----------------| +| 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 | + + diff --git a/docs/en/R_GE_S_TOO_FEW_POLYGONS.md b/docs/en/R_GE_S_TOO_FEW_POLYGONS.md index b2557c5cd7509254485dafd42c8c6f16ca239e40..fb816fa24d48e6ce69c7ef4fbc29e64d2fb6ab8f 100644 --- a/docs/en/R_GE_S_TOO_FEW_POLYGONS.md +++ b/docs/en/R_GE_S_TOO_FEW_POLYGONS.md @@ -1,5 +1,29 @@ # R_GE_S_TOO_FEW_POLYGONS -siehe [https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0001](https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0001) +## Requirement + +| ID | R_GE_S_TOO_FEW_POLYGONS | +|---- | ---- | +| Description | Solids must have at least 4 polygons. | +| Error code | GE_S_TOO_FEW_POLYGONS | + +## Check + +| ID | C_GE_S_TOO_FEW_POLYGONS | +|---- | ---- | +| Requirement ID | R_GE_S_TOO_FEW_POLYGONS | +| Preconditions | [R_SC_SCHEMA_VALIDATION](schemaRequirements.md), [R_GE_R_ALL](geometric.md#linear-ring), [R_GE_P_ALL](geometric.md#polygon) | +| Description | | +| Error code | GE_S_TOO_FEW_POLYGONS | + + +## Test cases + +| Test case ID | CityGML model | Expected result | +|----|---------------|-----------------| +| 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 | + + diff --git a/docs/en/geometric.md b/docs/en/geometric.md index 5c0faa4de55cf4ae1a473802a9e30a95951cd43d..e01e9a54566d11818b72951c7512e561a60e9432 100644 --- a/docs/en/geometric.md +++ b/docs/en/geometric.md @@ -37,7 +37,7 @@ The following requirements are defined for the three respective geometric levels | Requirement ID | Description | Error code | Known checks | | --------------- | ------------ | ---------- |-------------------- | | [R_GE_R_TOO_FEW_POINTS](R_GE_R_TOO_FEW_POINTS.md)| too few points | 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 consecutive points are the same | 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 consecutive points are the same | 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)| first-last points are not the same | GE_R_NOT_CLOSED | C_GE_R_NOT_CLOSED | | [R_GE_R_SELF_INTERSECTION](R_GE_R_SELF_INTERSECTION.md)| self-intersects, i.e., a bowtie | 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)| **Currently not in use as it is redundant with R_GE_R_SELF_INTERSECTION**
is point or line | GE_R_COLLAPSED_TO_LINE | C_GE_R_COLLAPSED_TO_LINE | diff --git a/public/de/404.html b/public/de/404.html index 25a0e0fa28e70909b2b4aa23540381c5f6c15d2d..b0c949667e98a48f229d6e594bca528e2da23e54 100644 --- a/public/de/404.html +++ b/public/de/404.html @@ -10,9 +10,8 @@ - - + @@ -20,18 +19,15 @@ - + - + - - - @@ -44,7 +40,7 @@ - + @@ -61,9 +57,12 @@ - + + + + @@ -77,19 +76,16 @@ - - -
+