diff --git a/mkdocs.yml b/config/de/mkdocs.yml
similarity index 89%
rename from mkdocs.yml
rename to config/de/mkdocs.yml
index 6f020a6c1ceef1c4b13b18440d433725bda7e70f..cf1ba18161ff3f68f570a04c98008b59af0b47cd 100644
--- a/mkdocs.yml
+++ b/config/de/mkdocs.yml
@@ -2,6 +2,8 @@ site_name: CityDoctor2
site_url: https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/
repo_url: https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2
repo_name: CityDoctor2
+docs_dir: '../../docs/de'
+site_dir: '../../public/de'
nav:
- CityDoctor2: index.md
- Installation: requiredSoftware.md
@@ -36,6 +38,13 @@ nav:
- S_POLYGON_WRONG_ORIENTATION: R_GE_S_POLYGON_WRONG_ORIENTATION.md
- S_ALL_POLYGONS_WRONG_ORIENTATION: R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION.md
- SOLID: R_GE_SO.md
+# Language Selection
+extra:
+ alternate:
+ # Switch to English
+ - name: Deutsch
+ link: /de/
+ lang: de
theme:
name: material
language: de
@@ -57,17 +66,15 @@ theme:
markdown_extensions:
- admonition
- toc:
- permalink: true
+ permalink: "#"
- pymdownx.highlight:
anchor_linenums: true
- pymdownx.inlinehilite
- pymdownx.snippets
- - pymdownx.superfences:
- custom_fences:
- -
- name: mermaid
- class: mermaid
- format: !!python/name:pymdownx.superfences.fence_code_format
+plugins:
+ - search:
+ lang: de
+ - mermaid2
extra_css:
- https://unpkg.com/mermaid/dist/mermaid.css
extra_javascript:
diff --git a/docs/R_GE_MS.md b/docs/R_GE_MS.md
deleted file mode 100644
index 2d2ebd7955416cd84b5d9d20ee82b53de7701920..0000000000000000000000000000000000000000
--- a/docs/R_GE_MS.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# R_GE_MS
-
-## 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_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_ALL müssen erfüllt werden |
-| Fehlercode | -- |
-
-## Prüfung
-
-Keine weiteren Prüfungen notwendig
-
diff --git a/docs/R_GE_P_HOLE_OUTSIDE.md b/docs/R_GE_P_HOLE_OUTSIDE.md
deleted file mode 100644
index ebb542af8387dbe3f0433796b7c2faec6cd67dee..0000000000000000000000000000000000000000
--- a/docs/R_GE_P_HOLE_OUTSIDE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# R_GE_P_HOLE_OUTSIDE
-
-## 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:
-
-
-## Prüfung
-
-| ID | C_GE_P_HOLE_OUTSIDE |
-|---- | ---- |
-| Anforderungs ID | R_GE_P_HOLE_OUTSIDE |
-| Vorbedingungen | R_SC_SCHEMA_VALIDATION, R_GE_R_ALL [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 |
-
diff --git a/docs/R_GE_P_INNER_RINGS_NESTED.md b/docs/R_GE_P_INNER_RINGS_NESTED.md
deleted file mode 100644
index cf87e3c0674bc0ed9292efb9dc0267d196700a58..0000000000000000000000000000000000000000
--- a/docs/R_GE_P_INNER_RINGS_NESTED.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# R_GE_P_INNER_RINGS_NESTED
-
-## Anforderung
-
-| ID | R_GE_P_INNER_RINGS_NESTED |
-|---- | ---- |
-| Beschreibung | Innere Ringe drüfen nicht innerhalb eines anderen inneren Rings sein. |
-| Fehlercode | GE_P_INNER_RINGS_NESTED |
-
-Beispiel:
-
-
-## Prüfung
-
-| ID | C_GE_P_INNER_RINGS_NESTED |
-|---- | ---- |
-| Anforderungs ID | R_GE_P_INNER_RINGS_NESTED |
-| Vorbedingungen | R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, [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 |
diff --git a/docs/R_GE_P_INTERIOR_DISCONNECTED.md b/docs/R_GE_P_INTERIOR_DISCONNECTED.md
deleted file mode 100644
index 2c5ffa677caa8f9de322cb7f94286ad9be4acee5..0000000000000000000000000000000000000000
--- a/docs/R_GE_P_INTERIOR_DISCONNECTED.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# R_GE_P_INTERIOR_DISCONNECTED
-
-## 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*,[siehe Vertex Anforderungen](geometric.md))|
-| Fehlercode | GE_P_INTERIOR_DISCONNECTED |
-
-Beispiele:
-
-
-
-
-## Prüfung
-
-| ID | C_GE_P_INTERIOR_DISCONNECTED |
-|---- | ---- |
-| Anforderungs ID | R_GE_P_INTERIOR_DISCONNECTED |
-| Vorbedingungen | R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, [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_INTERIOR_DISCONNECTED |
-
diff --git a/docs/R_GE_P_INTERSECTING_RINGS.md b/docs/R_GE_P_INTERSECTING_RINGS.md
deleted file mode 100644
index b25d8d23b602d1a721efa1f52010c7ede3916b9e..0000000000000000000000000000000000000000
--- a/docs/R_GE_P_INTERSECTING_RINGS.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# R_GE_P_INTERSECTING_RINGS
-
-## Anforderung
-
-| ID | R_GE_P_INTERSECTING_RINGS |
-|---- | ---- |
-| Beschreibung | Äußere und innere Ring 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) |
-| Fehlercode | GE_P_INTERSECTING_RINGS |
-
-Beispiele:
-
-Äußerer Ring verschneidet inneren Ring:
-
-
-Zwei innere Rings verschneiden:
-
-
-## Prüfung
-
-| ID | C_GE_P_INTERSECTING_RINGS |
-|---- | ---- |
-| Anforderungs ID | R_GE_P_INTERSECTING_RINGS |
-| Vorbedingungen | R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, [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 |
diff --git a/docs/R_GE_P_NON_PLANAR.md b/docs/R_GE_P_NON_PLANAR.md
deleted file mode 100644
index d9bf455a99ebd4c1c1f78ecdbe275640697170b4..0000000000000000000000000000000000000000
--- a/docs/R_GE_P_NON_PLANAR.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# R_GE_P_NON_PLANAR
-
-## Anforderung
-
-| ID | R_GE_P_NON_PLANAR |
-|---- | ---- |
-| Beschreibung | Jedes Polygon muss Planar sein. Planrität ist erreicht wenn kein Punkt weiter als *distanceTolerance* von der Regressionsebene aller Punkte ist, sowie die Normalen jedes Dreicks des tessilierten Polygons keine größere Winkelabweichung als *angleTolerance* haben. |
-| Parameter 1: type | Der Typ der Panaritätsprüfung kann ausgewählt werden. Muss eins von *distance*, *angle*, *both* sein.
Wenn der Parameter *distance* ist: Nur die Distanzprüfung wird ausgeführt.
Wenn der Parameter *angle* ist: Nur die Normalenabweichungsprüfung wird ausgeführt.
Wenn der Parameter *both* ist: Beide Prüfungen werden ausgeführt.
|
-| Parameter 2: distanceTolerance | Toleranz der Distanz eines Punktens 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:
-
-
-!!! warning
- Das Ergebnis der Normalenprüfung ist abhängig von dem Ergebnis der Tesselierung und damit nicht 100% zuverlässig.
-
-
-## Prüfung
-
-| ID | C_GE_P_NON_PLANAR |
-|---- | ---- |
-| Anfoderungs ID | R_GE_P_NON_PLANAR |
-| Vorbedingungen | R_SC_SCHEMA_VALIDATION, R_GE_R_ALL |
-| Beschreibung | Tesseliert um die Dreiecksnormalen zu berechnen. Erstellt eine Regressionsebene aus allen Polygonpunkten um den Abstand der Punkte zur Ebene zu berechnen |
-| Fehlercode | GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE, GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION |
diff --git a/docs/R_GE_P_ORIENTATION_RINGS_SAME.md b/docs/R_GE_P_ORIENTATION_RINGS_SAME.md
deleted file mode 100644
index f3919347c56c23e82d2b82230a4cc6b4d3867461..0000000000000000000000000000000000000000
--- a/docs/R_GE_P_ORIENTATION_RINGS_SAME.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# R_GE_P_ORIENTATION_RINGS_SAME
-
-## 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 :
-
-
-## Prüfung
-
-| ID | C_GE_P_ORIENTATION_RINGS_SAME |
-|---- | ---- |
-| Anforderungs ID | R_GE_P_ORIENTATION_RINGS_SAME |
-| Vorbedingungen | R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, [R_GE_P_NON_PLANAR](R_GE_P_NON_PLANAR.md) |
-| Beschreibung | |
-| Fehlercode | GE_P_ORIENTATION_RINGS_SAME |
-
diff --git a/docs/R_GE_R_COLLAPSED_TO_LINE.md b/docs/R_GE_R_COLLAPSED_TO_LINE.md
deleted file mode 100644
index 24b40479b653fbe37a694ab1dd6a9d5afca124d5..0000000000000000000000000000000000000000
--- a/docs/R_GE_R_COLLAPSED_TO_LINE.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# R_GE_R_COLLAPSED_TO_LINE
-
-## Anforderung
-
-| ID | R_GE_R_COLLAPSED_TO_LINE |
-|---- | ---- |
-| Beschreibung | Ein Spezialfall von Selbstverschneidung (R_GE_R_SELF_INTERSECTION): Der Ring ist eine Linie. Wenn der Ring zu ein Punkt darstellt, dann sollte GE_R_TOO_FEW_POINTS / GE_R_CONSECUTIVE_POINTS_SAME verwendet werden. |
-| Fehlercode | GE_R_SELF_INTERSECTION, GE_R_COLLAPSED_TO_LINE, GE_R_TOO_FEW_POINTS, GE_R_CONSECUTIVE_POINTS_SAME |
-
-
-## Prüfung
-
-| ID | GE_R_COLLAPSED_TO_LINE|
-|---- | ---- |
-| Anforderungs ID | R_GE_R_COLLAPSED_TO_LINE |
-| Vorbedingungen | R_SC_SCHEMA_VALIDATION, [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. Ist eigentlich eine Selbstverschneidung |
-| Fehlercode | GE_R_COLLAPSED_TO_LINE |
-
diff --git a/docs/R_GE_R_CONSECUTIVE_POINTS_SAME.md b/docs/R_GE_R_CONSECUTIVE_POINTS_SAME.md
deleted file mode 100644
index c216b071b10ab9456cbedd1f1ab0e010f862dfb9..0000000000000000000000000000000000000000
--- a/docs/R_GE_R_CONSECUTIVE_POINTS_SAME.md
+++ /dev/null
@@ -1,65 +0,0 @@
-# R_GE_R_CONSECUTIVE_POINTS_SAME
-
-## Anforderung
-
-| 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 ist oft der Fall wenn zwei Punkte an der selben Stelle sind. |
-| Parameter minVertexDistance | Punkte können als gleich angesehen werden, trotz (kleiner) Abstände, [siehe Vertex Anforderungen](geometric.md)
-| 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üfungen
-
-| ID | C_GE_R_CONSECUTIVE_POINTS_SAME|
-|---- | ---- |
-| Anforderungs ID | R_GE_R_CONSECUTIVE_POINTS_SAME |
-| Vorbedingungen | R_SC_SCHEMA_VALIDATION, [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, GE-gml:LR-0004 (teilweise) |
-| Vorbedingungen | R_SC_SCHEMA_VALIDATION, [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 |
-
-
\ No newline at end of file
diff --git a/docs/R_GE_R_NOT_CLOSED.md b/docs/R_GE_R_NOT_CLOSED.md
deleted file mode 100644
index 8c647b820f4e1a34b6204f1fc871fbcdf181fdb7..0000000000000000000000000000000000000000
--- a/docs/R_GE_R_NOT_CLOSED.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# R_GE_R_NOT_CLOSED
-
-## 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) |
-| 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 |
-| Beschreibung | Der erste und letzte Punkt sollen der gleiche sein. |
-| Fehlercode | GE_R_NOT_CLOSED |
-
diff --git a/docs/R_GE_R_SELF_INTERSECTION.md b/docs/R_GE_R_SELF_INTERSECTION.md
deleted file mode 100644
index 3a1e3e58a9671ee806df3a6a14c0e652b5657ffe..0000000000000000000000000000000000000000
--- a/docs/R_GE_R_SELF_INTERSECTION.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# R_GE_R_SELF_INTERSECTION
-
-## 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). 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:
-
-
-Punkt berührt Kante mit Parameter minVertexDistance:
-
-
-Doppelte Punkte:
-
-
-Doppelte Kante (Gleich wie doppelte Punkte):
-
-
-## Prüfung
-
-| ID | C_GE_R_SELF_INTERSECTION|
-|---- | ---- |
-| Anforderungs ID | R_GE_R_SELF_INTERSECTION |
-| Vorbedingungen | R_SC_SCHEMA_VALIDATION, [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, [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 |
diff --git a/docs/R_GE_R_TOO_FEW_POINTS.md b/docs/R_GE_R_TOO_FEW_POINTS.md
deleted file mode 100644
index 81d421a126df9101db18b94f95f69d6e7e06a1cc..0000000000000000000000000000000000000000
--- a/docs/R_GE_R_TOO_FEW_POINTS.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# R_GE_R_TOO_FEW_POINTS
-
-## Anforderung
-
-| ID | R_GE_R_TOO_FEW_POINTS |
-|---- | ---- |
-| Beschreibung | Ein Ring muss mindestens 3 Punkte haben. Für GML Ringe diese Anfoderung ignoriert 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 Anfoderung valide, wenn er mindestens 3 unterschiedliche Punkte enthält aber er ist dann nicht geschlossen (Die Anfoderung [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) |
-| 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:
-
-
-
-``` {.xml .annotate}
-
-0.0 0.0 0.0
-1.0 0.0 0.0
-0.0 1.0 0.0
-
-```
-
-1. Dieser Ring ist nicht geschlossen und wird daher vorher ausgeschlossen, hätte aber genug unterschiedliche Punkte, um dieser Anfoderung zu genügen.
-
-```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|
-|---- | ---- |
-| Anfoderungs ID | R_GE_R_TOO_FEW_POINTS |
-| Vorbedingungen | R_SC_SCHEMA_VALIDATION, [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|
-
diff --git a/docs/R_GE_SO.md b/docs/R_GE_SO.md
deleted file mode 100644
index b36f53cc3e668bc7cc08ea2eba37bea306013412..0000000000000000000000000000000000000000
--- a/docs/R_GE_SO.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# R_GE_SO
-
-## Anforderung
-
-| ID | R_GE_SO |
-|---- | ---- |
-| Beschreibung | Ein Solid ist eine Sammlung von Polygonen mit Einschränkungen. Die Geometrie muss 'wasserdicht' sein. Siehe Definition von Solids in Appendix A aus dem CityGML QIE. Ein Solid ist gültig, wenn die Anforderungen R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_ALL, R_GE_S_ALL erfüllt sind. |
-| Fehlercode | -- |
-
-
-## Prüfung
-
-keine weitere Prüfung notwendig
diff --git a/docs/R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION.md b/docs/R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION.md
deleted file mode 100644
index d175e35f3cca2fa0e6fbab0f130e70f4533bf8b0..0000000000000000000000000000000000000000
--- a/docs/R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION
-
-## Anforderung
-
-| ID | R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION |
-|---- | ---- |
-| Beschreibung | Alle Polygone haben die falsche Orientierung (definiert in R_GE_S_POLYGON_WRONG_ORIENTATION), 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 |
-| Vorbedingung| R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_ALL, [R_GE_S_TOO_FEW_POLYGONS](R_GE_S_TOO_FEW_POLYGONS.md), [R_GE_S_NOT_CLOSED](R_GE_S_NOT_CLOSED.md), [R_GE_S_NON_MANIFOLD_VERTEX](R_GE_S_NON_MANIFOLD_VERTEX.md), [R_GE_S_NON_MANIFOLD_EDGE](R_GE_S_NON_MANIFOLD_EDGE.md), [R_GE_S_MULTIPLE_CONNECTED_COMPONENTS](R_GE_S_MULTIPLE_CONNECTED_COMPONENTS.md), [R_GE_S_SELF_INTERSECTION](R_GE_S_SELF_INTERSECTION.md), [R_GE_S_POLYGON_WRONG_ORIENTATION](R_GE_S_POLYGON_WRONG_ORIENTATION.md) |
-| Beschreibung | |
-| Fehlercode | GE_S_ALL_POLYGONS_WRONG_ORIENTATION |
-
diff --git a/docs/R_GE_S_MULTIPLE_CONNECTED_COMPONENTS.md b/docs/R_GE_S_MULTIPLE_CONNECTED_COMPONENTS.md
deleted file mode 100644
index f7e5c9a5a29a352f6679dbb8c910f5b3bb3c20a7..0000000000000000000000000000000000000000
--- a/docs/R_GE_S_MULTIPLE_CONNECTED_COMPONENTS.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# R_GE_S_MULTIPLE_CONNECTED_COMPONENTS
-
-## Anforderung
-
-| ID | R_GE_S_MULTIPLE_CONNECTED_COMPONENTS |
-|---- | ---- |
-| Beschreibung | 1+ Polygone ist nicht mit der selben Hülle verbuden. |
-| Fehlercode | GE_S_MULTIPLE_CONNECTED_COMPONENTS |
-
-
-
-## Prüfung
-
-| ID | C_GE_S_MULTIPLE_CONNECTED_COMPONENTS|
-|---- | ---- |
-| Anforderungs ID | R_GE_S_MULTIPLE_CONNECTED_COMPONENTS |
-| Vorbedingungen | R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_ALL, [R_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 |
diff --git a/docs/R_GE_S_NON_MANIFOLD_EDGE.md b/docs/R_GE_S_NON_MANIFOLD_EDGE.md
deleted file mode 100644
index b78d8267995bf2ac9dd3817b6a26efa4ee7acd61..0000000000000000000000000000000000000000
--- a/docs/R_GE_S_NON_MANIFOLD_EDGE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# R_GE_S_NON_MANIFOLD_EDGE
-
-## Anforderung
-
-| ID | R_GE_S_NON_MANIFOLD_EDGE |
-|---- | ---- |
-| Beschreibung | Jede kannte sollte genau 2 Polygone begrenzen. |
-| Fehlercode | GE_S_NON_MANIFOLD_EDGE |
-| Kommentar | Diese Anforderung ist ähnlich zu GE_S_NOT_CLOSED: Wenn eine Kante mehr als 2 Polygon begrenzt, dann ist es ein GS_S_NON_MANIFOLD_EDGE Fehler. Wenn eine Kante nur ein Polygon begrenzt, ist es ein GE_S_NOT_CLOSED Fehler (ein Loch im Solid) |
-
-
-
-
-## Prüfung
-
-| ID | C_GE_S_NON_MANIFOLD_EDGE|
-|---- | ---- |
-| Anforderungs ID | R_GE_S_NON_MANIFOLD_EDGE |
-| Vorbedingungen | R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_ALL [R_GE_S_TOO_FEW_POLYGONS](R_GE_S_TOO_FEW_POLYGONS.md) |
-| Beschreibung | |
-| Fehlercode | GE_S_NON_MANIFOLD_EDGE |
diff --git a/docs/R_GE_S_NON_MANIFOLD_VERTEX.md b/docs/R_GE_S_NON_MANIFOLD_VERTEX.md
deleted file mode 100644
index 384ceb4b56a74ffcc9737e6b040013de757c0ace..0000000000000000000000000000000000000000
--- a/docs/R_GE_S_NON_MANIFOLD_VERTEX.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# R_GE_S_NON_MANIFOLD_VERTEX
-
-## 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. Alle Punkte 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, R_GE_R_ALL, R_GE_P_ALL, [R_GE_S_TOO_FEW_POLYGONS](R_GE_S_TOO_FEW_POLYGONS.md) |
-| Beschreibung | |
-| Fehlercode | GE_S_NON_MANIFOLD_VERTEX |
-
-
-
diff --git a/docs/R_GE_S_NOT_CLOSED.md b/docs/R_GE_S_NOT_CLOSED.md
deleted file mode 100644
index e4a3fa42906f81210b71ccbf9f79159b083b5450..0000000000000000000000000000000000000000
--- a/docs/R_GE_S_NOT_CLOSED.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# R_GE_S_NOT_CLOSED
-
-## 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 |
-
-
-
-## Prüfung
-
-| ID | C_GE_S_NOT_CLOSED |
-|---- | ---- |
-| Anforderungs ID | R_GE_S_NOT_CLOSED |
-| Vorbedingung | R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_ALL, [R_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.
-
-
diff --git a/docs/R_GE_S_POLYGON_WRONG_ORIENTATION.md b/docs/R_GE_S_POLYGON_WRONG_ORIENTATION.md
deleted file mode 100644
index 489d225a0415f1f894627c6ffc42fd26a1fafc43..0000000000000000000000000000000000000000
--- a/docs/R_GE_S_POLYGON_WRONG_ORIENTATION.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# R_GE_S_POLYGON_WRONG_ORIENTATION
-
-## Anforderung
-
-| ID | R_GE_S_POLYGON_WRONG_ORIENTATION |
-|---- | ---- |
-| Beschreibung | Ein Polygon muss so orientiert sein, dass die Normale des äußeren Ring nach außen zeigt. The points are ordered counter-clockwise. |
-| Fehlercode | GE_S_POLYGON_WRONG_ORIENTATION |
-
-
-
-## Prüfung
-
-| ID | C_GE_S_POLYGON_WRONG_ORIENTATION|
-|---- | ---- |
-| Anforderungs ID | R_GE_S_POLYGON_WRONG_ORIENTATION |
-| Vorbedingungen | R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_ALL, [R_GE_S_TOO_FEW_POLYGONS](R_GE_S_TOO_FEW_POLYGONS.md), [R_GE_S_NOT_CLOSED](R_GE_S_NOT_CLOSED.md), [R_GE_S_NON_MANIFOLD_EDGE](R_GE_S_NON_MANIFOLD_EDGE.md) |
-| Beschreibung | |
-| Fehlercode | GE_S_POLYGON_WRONG_ORIENTATION |
diff --git a/docs/R_GE_S_SELF_INTERSECTION.md b/docs/R_GE_S_SELF_INTERSECTION.md
deleted file mode 100644
index 3a16b91dd847cc798cd583f382784728ef400bf6..0000000000000000000000000000000000000000
--- a/docs/R_GE_S_SELF_INTERSECTION.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# R_GE_S_SELF_INTERSECTION
-
-## Anforderung
-
-| ID | R_GE_S_SELF_INTERSECTION |
-|---- | ---- |
-| Beschreibung| Der Solid darf sich nicht selbstverschneiden |
-| Fehlercode | GE_S_SELF_INTERSECTION |
-
-Beispiel (links = OK, rechts = Fehlerhaft):
-
-
-## Prüfung
-
-| ID | C_GE_S_SELF_INTERSECTION |
-|---- | ---- |
-| Anforderungs ID | R_GE_S_SELF_INTERSECTION |
-| Vorbedingungen | R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_ALL, [R_GE_S_TOO_FEW_POLYGONS](R_GE_S_TOO_FEW_POLYGONS.md), [R_GE_S_NOT_CLOSED](R_GE_S_NOT_CLOSED.md), [R_GE_S_NON_MANIFOLD_VERTEX](R_GE_S_NON_MANIFOLD_VERTEX.md), [R_GE_S_NON_MANIFOLD_EDGE](R_GE_S_NON_MANIFOLD_EDGE.md), [R_GE_S_MULTIPLE_CONNECTED_COMPONENTS](R_GE_S_MULTIPLE_CONNECTED_COMPONENTS.md), [R_GE_S_POLYGON_WRONG_ORIENTATION](R_GE_S_POLYGON_WRONG_ORIENTATION.md) |
-| Beschreibung | |
-| Fehlercode | GE_S_SELF_INTERSECTION |
-
-
diff --git a/docs/R_GE_S_TOO_FEW_POLYGONS.md b/docs/R_GE_S_TOO_FEW_POLYGONS.md
deleted file mode 100644
index 0d0aba7a4981d00c38e38137d99362cdefce6884..0000000000000000000000000000000000000000
--- a/docs/R_GE_S_TOO_FEW_POLYGONS.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# R_GE_S_TOO_FEW_POLYGONS
-
-## 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, R_GE_R_ALL, R_GE_P_ALL |
-| Beschreibung | |
-| Fehlercode | GE_S_TOO_FEW_POLYGONS |
-
-
diff --git a/docs/de/R_GE_MS.md b/docs/de/R_GE_MS.md
new file mode 100644
index 0000000000000000000000000000000000000000..460ce7778bbb81921158a1e6ea3fffcbb4ca559f
--- /dev/null
+++ b/docs/de/R_GE_MS.md
@@ -0,0 +1,4 @@
+# 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)
+
diff --git a/docs/de/R_GE_P_HOLE_OUTSIDE.md b/docs/de/R_GE_P_HOLE_OUTSIDE.md
new file mode 100644
index 0000000000000000000000000000000000000000..e50b5b7f9ca5925b445f38a5cd1bd83e23ec6f69
--- /dev/null
+++ b/docs/de/R_GE_P_HOLE_OUTSIDE.md
@@ -0,0 +1,4 @@
+# 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)
+
diff --git a/docs/de/R_GE_P_INNER_RINGS_NESTED.md b/docs/de/R_GE_P_INNER_RINGS_NESTED.md
new file mode 100644
index 0000000000000000000000000000000000000000..d5f7e5cfb1be50f89b62fa31e29ebbec225d54c8
--- /dev/null
+++ b/docs/de/R_GE_P_INNER_RINGS_NESTED.md
@@ -0,0 +1,3 @@
+# 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)
diff --git a/docs/de/R_GE_P_INTERIOR_DISCONNECTED.md b/docs/de/R_GE_P_INTERIOR_DISCONNECTED.md
new file mode 100644
index 0000000000000000000000000000000000000000..4febd2d0107f8b3f043a8a7834e9c092d39372c9
--- /dev/null
+++ b/docs/de/R_GE_P_INTERIOR_DISCONNECTED.md
@@ -0,0 +1,4 @@
+# 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)
+
diff --git a/docs/de/R_GE_P_INTERSECTING_RINGS.md b/docs/de/R_GE_P_INTERSECTING_RINGS.md
new file mode 100644
index 0000000000000000000000000000000000000000..1416881ade0cc1ffcc32efbdf66f3c05356e8367
--- /dev/null
+++ b/docs/de/R_GE_P_INTERSECTING_RINGS.md
@@ -0,0 +1,3 @@
+# 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
diff --git a/docs/de/R_GE_P_NON_PLANAR.md b/docs/de/R_GE_P_NON_PLANAR.md
new file mode 100644
index 0000000000000000000000000000000000000000..f6a47aff6cbc5c14ca0ae22029d3a372e3542dc9
--- /dev/null
+++ b/docs/de/R_GE_P_NON_PLANAR.md
@@ -0,0 +1,3 @@
+# 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)
diff --git a/docs/de/R_GE_P_ORIENTATION_RINGS_SAME.md b/docs/de/R_GE_P_ORIENTATION_RINGS_SAME.md
new file mode 100644
index 0000000000000000000000000000000000000000..07395d97f32302ed3bb933f1c80c916559623f9d
--- /dev/null
+++ b/docs/de/R_GE_P_ORIENTATION_RINGS_SAME.md
@@ -0,0 +1,4 @@
+# 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)
+
diff --git a/docs/de/R_GE_R_COLLAPSED_TO_LINE.md b/docs/de/R_GE_R_COLLAPSED_TO_LINE.md
new file mode 100644
index 0000000000000000000000000000000000000000..81d8cfe1dc5db503929e64779e167c6cfb7a12dd
--- /dev/null
+++ b/docs/de/R_GE_R_COLLAPSED_TO_LINE.md
@@ -0,0 +1,4 @@
+# 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)
+
diff --git a/docs/de/R_GE_R_CONSECUTIVE_POINTS_SAME.md b/docs/de/R_GE_R_CONSECUTIVE_POINTS_SAME.md
new file mode 100644
index 0000000000000000000000000000000000000000..b19c88ab90a8ebb12af6b278ccddb945796ca26e
--- /dev/null
+++ b/docs/de/R_GE_R_CONSECUTIVE_POINTS_SAME.md
@@ -0,0 +1,5 @@
+# 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)
+
+
\ 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
new file mode 100644
index 0000000000000000000000000000000000000000..390575601115a86231d59649083b9a07322f1fac
--- /dev/null
+++ b/docs/de/R_GE_R_NOT_CLOSED.md
@@ -0,0 +1,4 @@
+# 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)
+
diff --git a/docs/de/R_GE_R_SELF_INTERSECTION.md b/docs/de/R_GE_R_SELF_INTERSECTION.md
new file mode 100644
index 0000000000000000000000000000000000000000..a9a5d8126b5bc7077788a8356990c3a4670bcbcc
--- /dev/null
+++ b/docs/de/R_GE_R_SELF_INTERSECTION.md
@@ -0,0 +1,3 @@
+# 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)
diff --git a/docs/de/R_GE_R_TOO_FEW_POINTS.md b/docs/de/R_GE_R_TOO_FEW_POINTS.md
new file mode 100644
index 0000000000000000000000000000000000000000..eb02b7c0238936d44d227e1497bdd15171aee9a6
--- /dev/null
+++ b/docs/de/R_GE_R_TOO_FEW_POINTS.md
@@ -0,0 +1,4 @@
+# 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)
+
diff --git a/docs/de/R_GE_SO.md b/docs/de/R_GE_SO.md
new file mode 100644
index 0000000000000000000000000000000000000000..58f0c3497ffb8ad9b3430cc2db1b3526e8e305b6
--- /dev/null
+++ b/docs/de/R_GE_SO.md
@@ -0,0 +1,3 @@
+# 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)
diff --git a/docs/de/R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION.md b/docs/de/R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION.md
new file mode 100644
index 0000000000000000000000000000000000000000..a0f6149a4f782e5e17eb6049bc408d5dc6a19fef
--- /dev/null
+++ b/docs/de/R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION.md
@@ -0,0 +1,4 @@
+# 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)
+
diff --git a/docs/de/R_GE_S_MULTIPLE_CONNECTED_COMPONENTS.md b/docs/de/R_GE_S_MULTIPLE_CONNECTED_COMPONENTS.md
new file mode 100644
index 0000000000000000000000000000000000000000..7cbdd9f01a282b73c312d6cc9ea3041d82f7d345
--- /dev/null
+++ b/docs/de/R_GE_S_MULTIPLE_CONNECTED_COMPONENTS.md
@@ -0,0 +1,3 @@
+# 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)
diff --git a/docs/de/R_GE_S_NON_MANIFOLD_EDGE.md b/docs/de/R_GE_S_NON_MANIFOLD_EDGE.md
new file mode 100644
index 0000000000000000000000000000000000000000..db01ae9b3deee7e95dce32ebb2f737fdc36cc5db
--- /dev/null
+++ b/docs/de/R_GE_S_NON_MANIFOLD_EDGE.md
@@ -0,0 +1,3 @@
+# 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)
diff --git a/docs/de/R_GE_S_NON_MANIFOLD_VERTEX.md b/docs/de/R_GE_S_NON_MANIFOLD_VERTEX.md
new file mode 100644
index 0000000000000000000000000000000000000000..e4f4143934587f1da40b9bd4fb32353b5726b7a3
--- /dev/null
+++ b/docs/de/R_GE_S_NON_MANIFOLD_VERTEX.md
@@ -0,0 +1,6 @@
+# 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)
+
+
+
diff --git a/docs/de/R_GE_S_NOT_CLOSED.md b/docs/de/R_GE_S_NOT_CLOSED.md
new file mode 100644
index 0000000000000000000000000000000000000000..0a60df6ee781d9259b1cfe748827f74c0083e728
--- /dev/null
+++ b/docs/de/R_GE_S_NOT_CLOSED.md
@@ -0,0 +1,3 @@
+# 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
diff --git a/docs/de/R_GE_S_POLYGON_WRONG_ORIENTATION.md b/docs/de/R_GE_S_POLYGON_WRONG_ORIENTATION.md
new file mode 100644
index 0000000000000000000000000000000000000000..7f7def9bc400c8e0e207f8a2e562009817b67024
--- /dev/null
+++ b/docs/de/R_GE_S_POLYGON_WRONG_ORIENTATION.md
@@ -0,0 +1,3 @@
+# 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)
diff --git a/docs/de/R_GE_S_SELF_INTERSECTION.md b/docs/de/R_GE_S_SELF_INTERSECTION.md
new file mode 100644
index 0000000000000000000000000000000000000000..daa630fac415b5f9d55dcf7a49f53e6743d18eb9
--- /dev/null
+++ b/docs/de/R_GE_S_SELF_INTERSECTION.md
@@ -0,0 +1,5 @@
+# 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)
+
+
diff --git a/docs/de/R_GE_S_TOO_FEW_POLYGONS.md b/docs/de/R_GE_S_TOO_FEW_POLYGONS.md
new file mode 100644
index 0000000000000000000000000000000000000000..f58f339594a554a3632fa745d2154ecb8416b682
--- /dev/null
+++ b/docs/de/R_GE_S_TOO_FEW_POLYGONS.md
@@ -0,0 +1,5 @@
+# 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)
+
+
diff --git a/docs/basic.md b/docs/de/basic.md
similarity index 100%
rename from docs/basic.md
rename to docs/de/basic.md
diff --git a/docs/firstRun.md b/docs/de/firstRun.md
similarity index 100%
rename from docs/firstRun.md
rename to docs/de/firstRun.md
diff --git a/docs/geometric.md b/docs/de/geometric.md
similarity index 99%
rename from docs/geometric.md
rename to docs/de/geometric.md
index a8a245f7e6725e793dbe5f4a9ec79a71bd787e80..e7a379e97b4f41ab8af3c66b0a07e29b2ebdd55a 100644
--- a/docs/geometric.md
+++ b/docs/de/geometric.md
@@ -76,7 +76,7 @@ Die folgenden Anforderungen wurden auf den drei geometrischen Ebenen definiert [
Dies ist die Reihenfolge in der die Prüfungen ausgeführt werden. Wenn eine abhängige Prüfung einen Fehler geworfen hat oder nicht ausgeführt wurde, so wird die darauffolgende Prüfung auch nicht ausgeführt.
-``` mermaid
+```mermaid
graph TD;
X0001[R_SC_SCHEMA_VALIDATION]
R0001[R_GE_R_TOO_FEW_POINTS]
diff --git a/docs/img/BowtieSelfInt.png b/docs/de/img/BowtieSelfInt.png
similarity index 100%
rename from docs/img/BowtieSelfInt.png
rename to docs/de/img/BowtieSelfInt.png
diff --git a/docs/img/Closed.png b/docs/de/img/Closed.png
similarity index 100%
rename from docs/img/Closed.png
rename to docs/de/img/Closed.png
diff --git a/docs/img/DuplicatePoints.png b/docs/de/img/DuplicatePoints.png
similarity index 100%
rename from docs/img/DuplicatePoints.png
rename to docs/de/img/DuplicatePoints.png
diff --git a/docs/img/GE_gml_so_0005.png b/docs/de/img/GE_gml_so_0005.png
similarity index 100%
rename from docs/img/GE_gml_so_0005.png
rename to docs/de/img/GE_gml_so_0005.png
diff --git a/docs/img/HoleOutside.png b/docs/de/img/HoleOutside.png
similarity index 100%
rename from docs/img/HoleOutside.png
rename to docs/de/img/HoleOutside.png
diff --git a/docs/img/IntDiscoOneInnerRing.png b/docs/de/img/IntDiscoOneInnerRing.png
similarity index 100%
rename from docs/img/IntDiscoOneInnerRing.png
rename to docs/de/img/IntDiscoOneInnerRing.png
diff --git a/docs/img/IntDiscoTwoInnerRings.png b/docs/de/img/IntDiscoTwoInnerRings.png
similarity index 100%
rename from docs/img/IntDiscoTwoInnerRings.png
rename to docs/de/img/IntDiscoTwoInnerRings.png
diff --git a/docs/img/LineSelfInt.png b/docs/de/img/LineSelfInt.png
similarity index 100%
rename from docs/img/LineSelfInt.png
rename to docs/de/img/LineSelfInt.png
diff --git a/docs/img/NestedRings.png b/docs/de/img/NestedRings.png
similarity index 100%
rename from docs/img/NestedRings.png
rename to docs/de/img/NestedRings.png
diff --git a/docs/img/OrientationSame.png b/docs/de/img/OrientationSame.png
similarity index 100%
rename from docs/img/OrientationSame.png
rename to docs/de/img/OrientationSame.png
diff --git a/docs/img/SelfIntersection.png b/docs/de/img/SelfIntersection.png
similarity index 100%
rename from docs/img/SelfIntersection.png
rename to docs/de/img/SelfIntersection.png
diff --git a/docs/img/Testgebaeude-SO-0007.png b/docs/de/img/Testgebaeude-SO-0007.png
similarity index 100%
rename from docs/img/Testgebaeude-SO-0007.png
rename to docs/de/img/Testgebaeude-SO-0007.png
diff --git a/docs/img/TouchingEdge.png b/docs/de/img/TouchingEdge.png
similarity index 100%
rename from docs/img/TouchingEdge.png
rename to docs/de/img/TouchingEdge.png
diff --git a/docs/img/checkDialog.png b/docs/de/img/checkDialog.png
similarity index 100%
rename from docs/img/checkDialog.png
rename to docs/de/img/checkDialog.png
diff --git a/docs/img/checked.png b/docs/de/img/checked.png
similarity index 100%
rename from docs/img/checked.png
rename to docs/de/img/checked.png
diff --git a/docs/img/citydoctor_logo.png b/docs/de/img/citydoctor_logo.png
similarity index 100%
rename from docs/img/citydoctor_logo.png
rename to docs/de/img/citydoctor_logo.png
diff --git a/docs/img/exteriorIntersects.png b/docs/de/img/exteriorIntersects.png
similarity index 100%
rename from docs/img/exteriorIntersects.png
rename to docs/de/img/exteriorIntersects.png
diff --git a/docs/img/extracted.png b/docs/de/img/extracted.png
similarity index 100%
rename from docs/img/extracted.png
rename to docs/de/img/extracted.png
diff --git a/docs/img/image.png b/docs/de/img/image.png
similarity index 100%
rename from docs/img/image.png
rename to docs/de/img/image.png
diff --git a/docs/img/interfaceLoad.png b/docs/de/img/interfaceLoad.png
similarity index 100%
rename from docs/img/interfaceLoad.png
rename to docs/de/img/interfaceLoad.png
diff --git a/docs/img/interiorIntersects.png b/docs/de/img/interiorIntersects.png
similarity index 100%
rename from docs/img/interiorIntersects.png
rename to docs/de/img/interiorIntersects.png
diff --git a/docs/de/img/mail.png b/docs/de/img/mail.png
new file mode 100644
index 0000000000000000000000000000000000000000..e1b8c4cf52ea6b9a375af4b99b858c6737dcbece
Binary files /dev/null and b/docs/de/img/mail.png differ
diff --git a/docs/img/normalDeviation.png b/docs/de/img/normalDeviation.png
similarity index 100%
rename from docs/img/normalDeviation.png
rename to docs/de/img/normalDeviation.png
diff --git a/docs/img/open.png b/docs/de/img/open.png
similarity index 100%
rename from docs/img/open.png
rename to docs/de/img/open.png
diff --git a/docs/de/img/partner.png b/docs/de/img/partner.png
new file mode 100644
index 0000000000000000000000000000000000000000..48b84cae5a1f72dbc27fb1ffb47867c0e71ef19b
Binary files /dev/null and b/docs/de/img/partner.png differ
diff --git a/docs/img/reportDialog.png b/docs/de/img/reportDialog.png
similarity index 100%
rename from docs/img/reportDialog.png
rename to docs/de/img/reportDialog.png
diff --git a/docs/img/userInterface.png b/docs/de/img/userInterface.png
similarity index 100%
rename from docs/img/userInterface.png
rename to docs/de/img/userInterface.png
diff --git a/docs/de/index.md b/docs/de/index.md
new file mode 100644
index 0000000000000000000000000000000000000000..386db99ef8fcfe11a2e10db6c4463e750fef92f5
--- /dev/null
+++ b/docs/de/index.md
@@ -0,0 +1,55 @@
+# CityDoctor2
+**Entwicklung eines Systems zur automatisierten Reparatur virtueller Stadtmodelle**
+
+CityDoctor2 ist eine Qualitätsprüfungssoftware für 3D Stadtmodelle im CityGML format. CityDoctor kann CityGML 1/2 Dokumente einlesen und seit Version 3.12 kann auch eingeschränkt CityGML 3 gelesen werden. Alle Prüfergebnisse können in xml oder pdf Form ausgegeben werden. Zusätzlich implementiert CityDoctor die [QualityADE](https://transfer.hft-stuttgart.de/gitlab/citydoctor/qualityade) um Prüfergebnisse direkt in CityGML zu speichern.
+
+
+
+# Lizenzen / Versionen
+
+### CityDoctorValidation
+
+Der Validierungsteil von CityDoctor ist frei verfügbar und [OpenSource](https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2)
+
+### CityDoctorGUI
+
+Die grafische Oberfläche ist frei aber nicht OpenSource (siehe [Installation](requiredSoftware.md))
+
+### CityDoctorHealer
+
+Der Teil zuständig für die Reparatur ist nur in Absprache mit uns zu erhalten.
+Mail an:
+
+
+# Projekt
+**Projektlaufzeit:** 01.11.2018 - 31.12.2021
+
+## Partner
+
+**Projektverantwortliche:**
+Prof. Dr. Margitta Pries
+
+**Verbundpartner:**
+Prof. Dr.-Ing. Volker Coors
+
+**Kooperationspartner:**
+[3DIS GmbH](https://www.3dis.de/)
+[3dpartzz GmbH](https://3dpartzz.com/)
+[con terra GmbH](https://conterra.de/)
+[Geoplex GIS GmbH](https://www.geoplex.de/)
+Mark Wewetzer
+[M.O.S.S. Computer Grafik Systeme GmbH](https://www.moss.de/)
+[Steinbeis - Transferzentrum](https://www.steinbeis.de/de.html)
+[Virtual City Systems](https://www.virtualcitysystems.de/)
+
+**Assoziative Partner:**
+[Landesamt für Geoinformation und Landentwicklung Baden-Württemberg](https://www.lgl-bw.de/)
+
+**Mittelgeber:**
+[Bundesministerium für Bildung und Forschung](https://www.bmbf.de/)
+
+**Projektträger:**
+[VDI Technologiezentrum](https://www.vditz.de/)
+
+
+
diff --git a/docs/requiredSoftware.md b/docs/de/requiredSoftware.md
similarity index 51%
rename from docs/requiredSoftware.md
rename to docs/de/requiredSoftware.md
index 10074af10374ce32348cd89c885e25c6226d737d..426a491a6074c637f62c8fb6c2d9f2021f5edd6b 100644
--- a/docs/requiredSoftware.md
+++ b/docs/de/requiredSoftware.md
@@ -1,20 +1,25 @@
# Benötigte Software
-## Java
+## Versionen ab 3.13.0
-Vor der CityDoctor Version 3.12.x wird Java 8 entweder als JDK oder als JRE benötigt. Ab der Version 3.12.x wird Java 17 benötigt.
-!!! warning
- Es wichtig, dass die installierte Java Version die JavaFX Bibliotheken mit einschließt. Diese werden für die grafische Oberfläche benötigt.
+Ab Version 3.13.0 wurde ein Repository auf dem Transferportal der Hochschule erstellt, das fortan als Ablageort für fertige Releases verwendet wird:
+[https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctorreleases](https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctorreleases)
-[Die Liberica JRE oder JDK](https://bell-sw.com/libericajdk/) hat sich für einen Einsatz mit CityDoctor bewährt.
+Die Versionen sind dort unterteilt zwischen CityDoctorValidation und CityDoctorGUI und unter diesen Ordnern gibt es die entsprechenden Versionsordner.
-!!! note
- Die Liberica Distribution ist zu 100% frei und OpenSource.
+### Releaseversionen
-!!! note
- Für die Entwicklung mit CityDoctor wird eine JDK benötigt.
+Für jede CityDoctor Variante (CityDoctorValidation oder CityDoctorGUI) werden vier verschiedene Versionen zum Download bereitgestellt.
+Es werden in verschiedenen Versionen Java Runtimes der Liberica Distribution mitgeliefert.
+
+| Version | Beschreibung |
+| ------- | ------------ |
+| CityDoctor*-no-runtime.zip | Diese Version beinhaltet keine Runtime für Java. Falls auf Ihrem PC schon ein Java der Version 17 installiert ist (siehe [Java](requiredSoftware.md#java)), dann ist diese Version zu bevorzugen.
+| CityDoctor*-win.zip | Beinhaltet eine Windows Java Runtime zum ausführen von CityDoctor, kein Java muss installiert sein. |
+| CityDoctor*-lin.zip | Beinhaltet eine Linux Java Runtime zum ausführen von CityDoctor |
+| CityDoctor*-mac.zip | Beinhaltet eine Mac Java Runtime zum ausführen von CityDoctor |
-## CityDoctor2
+## Versionen bis 3.12.x
CityDoctor kann von verschiedenen Seiten heruntergeladen werden. Die aktuellste Stelle ist ein [gitlab Repository](https://gitlab.com/volkercoors/CiD4Sim/-/tree/master/CityDoctorExtension). Alternativ werden Releases auch auf der [CityDoctor Homepage der BHT](https://projekt.bht-berlin.de/citydoctor2/downloads/) gelistet. Es gibt dabei immer zwei Versionen:
@@ -22,4 +27,19 @@ CityDoctor kann von verschiedenen Seiten heruntergeladen werden. Die aktuellste
* **CityDoctorValidation-3.x.x.zip:** Das ist die Batch-Version die für die Integration in Servern oder anderen bestehenden Systemen geeignet ist und hat keine grafische Oberfläche sondern arbeitet Dateibasiert als Prozess.
!!! note
- Es gibt manchmal Spezialversionen die Testweise erstellt worden sind um verschiedene Auslieferungsmöglichkeiten zu testen. Bsp: CityDoctorGUI-x.x.x-win.zip beinhaltet die JavaFX Bibliotheken sodass eine Java Umgebung ohne JavaFX auch verwendet werden kann.
\ No newline at end of file
+ Es gibt manchmal Spezialversionen die Testweise erstellt worden sind um verschiedene Auslieferungsmöglichkeiten zu testen. Bsp: CityDoctorGUI-x.x.x-win.zip beinhaltet die JavaFX Bibliotheken sodass eine Java Umgebung ohne JavaFX auch verwendet werden kann.
+
+
+### Java
+
+Vor der CityDoctor Version 3.12.x wird Java 8 entweder als JDK oder als JRE benötigt. Ab der Version 3.12.x wird Java 17 benötigt.
+!!! warning
+ Es wichtig, dass die installierte Java Version die JavaFX Bibliotheken mit einschließt. Diese werden für die grafische Oberfläche benötigt.
+
+[Die Liberica JRE oder JDK](https://bell-sw.com/libericajdk/) hat sich für einen Einsatz mit CityDoctor bewährt.
+
+!!! note
+ Die Liberica Distribution ist zu 100% frei und OpenSource.
+
+!!! note
+ Für die Entwicklung mit CityDoctor wird eine JDK benötigt.
\ No newline at end of file
diff --git a/docs/requirements.md b/docs/de/requirements.md
similarity index 100%
rename from docs/requirements.md
rename to docs/de/requirements.md
diff --git a/docs/schemaRequirements.md b/docs/de/schemaRequirements.md
similarity index 100%
rename from docs/schemaRequirements.md
rename to docs/de/schemaRequirements.md
diff --git a/docs/semantic.md b/docs/de/semantic.md
similarity index 74%
rename from docs/semantic.md
rename to docs/de/semantic.md
index 9b6057ca9abe5fb9b28084dc453f506dd9b4ea47..e8b3173258de1c6ecbfbe08fce7b62b5fb5b011d 100644
--- a/docs/semantic.md
+++ b/docs/de/semantic.md
@@ -15,6 +15,28 @@ In CityDoctor wurde das [XML Validierungssystem Schematron](https://de.wikipedia
Hier ist ein Beispiel für eine Schematron Datei die CityDoctor integrieren kann:
+### CityDoctor >= 3.13.0
+``` xml
+
+
+
+
+
+
+
+ ||||SE_ATTRIBUTE_MISSING||any solid
+
+
+ ||||SE_ATTRIBUTE_MISSING||any solid
+
+
+
+
+```
+
+
+### CityDoctor < 3.13.0
+
``` xml
@@ -46,6 +68,9 @@ Die Fehlermeldung besteht aus den folgenden Teilen:
* Die `parent id` ist die gml id des obersten Elements z.B. Building oder Bridge.
* Falls der Fehler in einem Unterelement aufgetreten ist so kann diese ID in dem Feld für die `child id` eingetragen werden.
* Im Feld `error type` ist einer der 3 Fehlertypen einzutragen: `SE_ATTRIBUTE_WRONG_VALUE, SE_ATTRIBUTE_MISSING, SE_ATTRIBUTE_INVALID`.
+
+note
+Nur in CityDoctor < 3.13.0:
* Um ein generisches Attribut mit dem Namen `measuredHeight` von dem nicht generischen Attribut zu unterscheiden ist im letzten Feld vorgesehen `true` einzutragen wenn es sich um ein generisches Attribut handelt ansonsten `false`.
\ No newline at end of file
diff --git a/docs/userInterface.md b/docs/de/userInterface.md
similarity index 100%
rename from docs/userInterface.md
rename to docs/de/userInterface.md
diff --git a/docs/validationPlan.md b/docs/de/validationPlan.md
similarity index 100%
rename from docs/validationPlan.md
rename to docs/de/validationPlan.md
diff --git a/docs/index.md b/docs/index.md
deleted file mode 100644
index affe72071b642164c98a04cca3019aeb8547f47c..0000000000000000000000000000000000000000
--- a/docs/index.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# CityDoctor2
-
-CityDoctor2 ist eine Qualitätsprüfungssoftware für 3D Stadtmodelle im CityGML format. CityDoctor kann CityGML 1/2 Dokumente einlesen und seit Version 3.12 kann auch eingeschränkt CityGML 3 gelesen werden. Alle Prüfergebnisse können in xml oder pdf Form ausgegeben werden. Zusätzlich implementiert CityDoctor die [QualityADE](https://transfer.hft-stuttgart.de/gitlab/citydoctor/qualityade) um Prüfergebnisse direkt in CityGML zu speichern.
-
-
diff --git a/public/R_GE_MS/index.html b/public/R_GE_MS/index.html
deleted file mode 100644
index 17e90e25a26844086460c8104ead8d63e1c99ad7..0000000000000000000000000000000000000000
--- a/public/R_GE_MS/index.html
+++ /dev/null
@@ -1,917 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MULTI_SURFACE - CityDoctor2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
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_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_ALL müssen erfüllt werden
Äußere und innere Ring 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
Jedes Polygon muss Planar sein. Planrität ist erreicht wenn kein Punkt weiter als distanceTolerance von der Regressionsebene aller Punkte ist, sowie die Normalen jedes Dreicks des tessilierten Polygons keine größere Winkelabweichung als angleTolerance haben.
-
-
-
Parameter 1: type
-
Der Typ der Panaritätsprüfung kann ausgewählt werden. Muss eins von distance, angle, both sein.
Wenn der Parameter distance ist: Nur die Distanzprüfung wird ausgeführt.
Wenn der Parameter angle ist: Nur die Normalenabweichungsprüfung wird ausgeführt.
Wenn der Parameter both ist: Beide Prüfungen werden ausgeführt.
-
-
-
Parameter 2: distanceTolerance
-
Toleranz der Distanz eines Punktens von der Regressionsebene
Tesseliert um die Dreiecksnormalen zu berechnen. Erstellt eine Regressionsebene aus allen Polygonpunkten um den Abstand der Punkte zur Ebene zu berechnen
Ein Spezialfall von Selbstverschneidung (R_GE_R_SELF_INTERSECTION): Der Ring ist eine Linie. Wenn der Ring zu ein Punkt darstellt, dann sollte GE_R_TOO_FEW_POINTS / GE_R_CONSECUTIVE_POINTS_SAME verwendet werden.
Punkte innerhalb eines Rings sollen sich nicht wiederholen (ausgenommen der erste und der letzte im Fall von GML, siehe R_GE_R_NOT_CLOSED. Dieser Fehler ist oft der Fall wenn zwei Punkte an der selben Stelle sind.
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.
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. 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:
-
-
Punkt berührt Kante mit Parameter minVertexDistance:
-
Ein Ring muss mindestens 3 Punkte haben. Für GML Ringe diese Anfoderung ignoriert die Tatsache, dass der erste und der letzte Punkt gleich sind (siehe R_GE_R_NOT_CLOSED). Ein GML Ring ist nach dieser Anfoderung valide, wenn er mindestens 3 unterschiedliche Punkte enthält aber er ist dann nicht geschlossen (Die Anfoderung R_GE_R_NOT_CLOSED ist nicht erfüllt).
Ein Solid ist eine Sammlung von Polygonen mit Einschränkungen. Die Geometrie muss 'wasserdicht' sein. Siehe Definition von Solids in Appendix A aus dem CityGML QIE. Ein Solid ist gültig, wenn die Anforderungen R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_ALL, R_GE_S_ALL erfüllt sind.
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.
Diese Anforderung ist ähnlich zu GE_S_NOT_CLOSED: Wenn eine Kante mehr als 2 Polygon begrenzt, dann ist es ein GS_S_NON_MANIFOLD_EDGE Fehler. Wenn eine Kante nur ein Polygon begrenzt, ist es ein GE_S_NOT_CLOSED Fehler (ein Loch im Solid)
Jedes Polygon das an einem Punkt eines Solids anliegt muss über Kanten mit den anderen anliegenden Polygonen verbunden sein. Alle Punkte und anliegende Polygone müssen ein 'Regenschirm' erzeugen.
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.
Prozess des validierens einer CityGML Datei nach spezifizierten Anforderungen. Eine valide Datei entspricht allen Anforderungen.
-
-
Anforderungen
-
-
Regeln und Einschränkungen, die die Datenstruktur eindeutig definieren. Anforderungen können von dem CityGML Standard Dokument abgleitet werden oder gesondert, als Anforderung an den CityGML Standard, definiert werden um Mehrdeutigkeiten des Standards zu verhindern oder zusätzliche nutzerabhängige Anforderungen zu definieren.
-
-
Prüfung
-
-
Algorithmische Implementation um eine Anforderung innerhalb eines Validerungsprogramms zu prüfen.
-
-
Fehler
-
-
Ergebnis einer Prüfung im Falle einer Nichtkonformität von Anforderungen.
-
-
Validierungsplan
-
-
Strukturierte Liste von Anforderungen, überlicherweise angepasst an den konkreten Fall.