Commit bd5d404b authored by Matthias Betz's avatar Matthias Betz
Browse files

add english language test files

parent b4895959
Pipeline #7625 passed with stages
in 10 seconds
# 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.
![examplePicture](img/checked.png)
# 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:
![mail](img/mail.png)
# 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/)
![partner](img/partner.png)
# Benötigte Software
## Versionen ab 3.13.0
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 Versionen sind dort unterteilt zwischen CityDoctorValidation und CityDoctorGUI und unter diesen Ordnern gibt es die entsprechenden Versionsordner.
### Releaseversionen
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 |
## 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:
* **CityDoctorGUI-3.x.x.zip:** Das ist die grafische Oberfläche inklusive der Prüfungen. Geeignet für den Endnutzer auf einem Desktop PC.
* **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.
### 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
# Anforderungen und Prüfungen für die Validierung von CityGML-Modellen
Die Anforderungen sind die Grundbausteine für ein Validierungsplan um CityGML-Modelle zu validieren. Für Namenskonventionen und Definitionen, siehe [Grundbegriffe](basic.md).
Eine Anforderung kann durch einen oder mehrere Prüfungen validiert werden. Eine Prüfung validiert ein oder mehrere Anforderungen bei einem Modell. Jede Prüfung kann Vorbedingungen haben. Wenn diese Vorbedingungen nicht erfüllt sind wird die Prüfung nicht ausgeführt.
Unterschieden wird dabei zwischen:
* [Schemaanforderungen](schemaRequirements.md)
* [Geometrieanforderungen](geometric.md)
* [Semantische Anforderungen](semantic.md)
# Schemaanforderungen
## R_SC_SCHEMA_VALIDATION
### Anforderung
| ID | R_SC_SCHEMA_VALIDATION |
| ---- | ---- |
| Beschreibung | Eine grundlengende Anforderung ist, dass jedes CityGML Dokument wohl definiert sein muss und XSD valide ist. |
| Fehlercode | SC-SCHEMA-NOT-VALID |
### Prüfung
| ID | SC_SCHEMA_VALIDATION|
| ---- | ---- |
| Anforderungs ID | R_SC_SCHEMA_VALIDATION |
| Vorbedingungen | keine |
| Beschreibung | Werkzeuge um eine XSD Validierung durchzuführen sind verfügbar und geben verlässliche Ergebnisse |
| Fehlercode | SC_SCHEMA_NOT_VALID |
\ No newline at end of file
# Semantische Anforderungen
Die semantischen Anforderungen sind meistens auf Attributbasis. Daraus ergeben sich 3 Fehlerzustände für ein Attribut:
* **SE_ATTRIBUTE_WRONG_VALUE:** Wenn ein Attribut ein falschen Wert hat.
* **SE_ATTRIBUTE_MISSING:** Wenn ein Attribut fehlt, aber vorhanden sein sollte.
* **SE_ATTRIBUTE_INVALID:** Wenn ein Attribut vorhanden ist aber verboten ist.
!!! warning
**SE_ATTRIBUTE_INVALID:** ist noch nicht in CityDoctor und der QualityADE umgesetzt ist aber geplant in einer neuen Version zu unterstützen.
## Schematron
In CityDoctor wurde das [XML Validierungssystem Schematron](https://de.wikipedia.org/wiki/Schematron) integriert um flexibel Attributprüfungen anzupassen und zu unterstützen.
Hier ist ein Beispiel für eine Schematron Datei die CityDoctor integrieren kann:
### CityDoctor >= 3.13.0
``` xml
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://purl.oclc.org/dsdl/schematron" queryBinding="xslt2">
<ns prefix="gml" uri="http://www.opengis.net/gml"/>
<ns prefix="bldg" uri="http://www.opengis.net/citygml/building/2.0"/>
<pattern>
<rule context="//*:Building">
<assert test="count(descendant::*:lod1Solid) &gt; 0 or count(descendant::*:lod2Solid) &gt; 0 or count(descendant::*:lod3Solid) &gt; 0 or count(descendant::*:lod4Solid) &gt; 0"><value-of select="@gml:id | @id"/>||||SE_ATTRIBUTE_MISSING||any solid</assert>
</rule>
<rule context="//*:BuildingPart">
<assert test="count(*:lod1Solid) = 1 or count(*:lod2Solid) = 1 or count(*:lod3Solid) = 1 or count(*:lod4Solid) = 1"><value-of select="ancestor::*:Building/@*:id"/>||<value-of select="@gml:id | @id"/>||SE_ATTRIBUTE_MISSING||any solid</assert>
</rule>
</pattern>
</schema>
```
### CityDoctor < 3.13.0
``` xml
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://purl.oclc.org/dsdl/schematron" queryBinding="xslt2">
<ns prefix="gml" uri="http://www.opengis.net/gml"/>
<ns prefix="bldg" uri="http://www.opengis.net/citygml/building/2.0"/>
<pattern>
<rule context="//*:Building">
<assert test="count(descendant::*:lod1Solid) &gt; 0 or count(descendant::*:lod2Solid) &gt; 0 or count(descendant::*:lod3Solid) &gt; 0 or count(descendant::*:lod4Solid) &gt; 0"><value-of select="@gml:id | @id"/>||||SE_ATTRIBUTE_MISSING||any solid||false</assert>
</rule>
<rule context="//*:BuildingPart">
<assert test="count(*:lod1Solid) = 1 or count(*:lod2Solid) = 1 or count(*:lod3Solid) = 1 or count(*:lod4Solid) = 1"><value-of select="ancestor::*:Building/@*:id"/>||<value-of select="@gml:id | @id"/>||SE_ATTRIBUTE_MISSING||any solid||false</assert>
</rule>
</pattern>
</schema>
```
Diese Datei prüft, dass alle Buildings in sich selbst oder in einem ihrer Unterelementen ein Solid beliebigen LODSs vorhanden ist. Außerdem stellt die Datei sicher, dass jedes BuildingPart ein Solid enthält. Wenn dies nicht der Fall ist wird eine Fehlermeldung ausgegeben. Die Fehlermeldung ist dabei so formattiert, dass CityDoctor sie interpretieren und in das interne Datenmodell einbinden kann.
### Fehlerformat
Das Fehlerformat ist ein CSV-Format mit || als Trennzeichen
```
parent id||child id||error code||error type||is generic attribute
```
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
# Nutzeroberfläche
## CityDoctor
![interface](img/userInterface.png)
In der oberen Leiste sind folgende Schaltflächen in Reihenfolge:
* **Laden:** Öffnet den Dialog zum laden einer CityGML Datei
* **Prüfen:** Öffnet den Dialog zum prüfen einer geladenen CityGML
* **Prüfberichte:** Öffnet den Dialog zum schreiben eines Prüfprotokolls in xml oder pdf Form
* **Gitternetz:** Zeigt/Versteckt das Gitternetz anstatt gefüllter Polygone
* **Rückseiten:** Zeigt/Versteckt Rückseiten von Polygonen
* **Globale Ansicht:** Lädt alle Elemente einer CityGML in die Ansicht
* **LODs:** Schaltet einzelne LODs von der Ansicht an oder aus
* **Speichern:** Speichert eine CityGML Datei zurück, falls die Datei geprüft wurde wird die QualityADE mitgeschrieben.
* **About:** Öffnet den Dialog mit Informationen zu dem Projekt CityDoctor2
* **Ansichten:** Wechselt verschiedene Ansichten. Für die Prüfung gibt es nur eine.
* **Sprache:** Hier kann die Sprache eingestellt werden (Deutsch/Englisch)
!!! warning
Das Anzeigen der Globalen Ansicht kann bei großen CityGML Dateien (> 100mb je nach System) zu abstürzen führen. Das Anzeigen kann kurz dauern.
## Laden
Über die Schaltfläche Laden wird der Dialog zum laden einer CityGML Datei geöffnet.
![open](img/open.png)
In der Datei Leiste kann ein Dateipfad eingetragen werden oder über die Schaltfläche **Auswählen** ausgewählt werden.
Außerdem können weitere Einstellungen für das Lesen der Datei angegeben werden.
* **NumberOfRoundingPlaces:** Auf wie viele Nachkommastellen werden die eingelesenen Werte gerundet.
* **XML-Validierung:** Führt eine XML Validierung durch. Fehler werden dabei direkt beim einlesen festgestellt und das Einlesen wird abgebrochen.
* **Speicherverbrauch:** Spart RAM um größere Dateien in der GUI zu ermöglichen. Kostet geringfügig Performance bei der Prüfung.
Beim Laden wird der Fortschritt ungefähr durch den Ladebalken repräsentiert.
!!! note
Dateien können auch direkt per Drag and Drop vom Dateimanager in die GUI gezogen werden ohne den Laden Dialog zu verwenden. Dabei werden die Default Werte angenommen (8 Nachkommastellen, keine XML-Validierung)
Nach dem Laden einer CityGML Datei werden die Elemente in den einzelnen Tabs angezeigt. Durch auswählen eines Elements wird das in der Ansicht angezeigt.
![loadedFile](img/interfaceLoad.png)
!!! note
Durch Auswählen des obersten Elements eines Reiters werden alle Elemente innerhalb diese Reiters angezeigt. Wie obige Warnung schon besagt, gilt auch hier, dass größere Datenmengen zu Abstürzen führen.
## Prüfen
![checkDialog](img/checkDialog.png)
Im Prüfdialog kann der Validierungsplan angepasst werden. Hier werden neben den Verfügbaren Prüfungen auch die globalen Parameter angezeigt.
Verändert können die Parameter mit einem Doppelklick in die Wert Spalte. Die Einheit ist dabei fest.
!!! note
Der Parameter numberOfRoundingPlaces kann nicht verändert werden. Er wurde beim Laden der Datei festgelegt.
Falls Prüfungen nicht ausgeführt werden sollen können sie in der Spalte Aktiv deaktiviert werden.
!!! warning
Wenn Prüfungen deaktiviert wurden die andere aktiven Prüfungen aber als Abhängigkeit benötigen werden sie bei der Prüfung wieder aktiviert um die Stabilität zu gewährleisten. Siehe [Anforderungen](requirements.md).
In dem Feld Schematron Datei kann ein Pfad zu einer Schematron Datei eingetragen werden. In dieser Datei können flexible Regeln für die semantischen Anforderungen festgelegt werden. Siehe [Semantische Prüfungen](semantic.md)
Über die beiden Schaltflächen oben rechts kann der Prüfplan gespeichert und geladen werden.
Nach der Prüfung werden fehlerhafte Elemente rot und fehlerfreie Elemente grün eingefärbt. Bei der Auswahl eines Elements das fehler beinhaltet werden die Fehler in dem unteren Tab **Fehler** angezeigt. Dort kann der Fehler ausgewählt werden um ihn in CityDoctor anzuzeigen und weitere Informationen zu erhalten.
![checked](img/checked.png)
Die Elemente können mit dem Dropdown-Menü gefiltert werden um nur fehlerhafte Elemente anzuzeigen.
## Prüfberichte
In diesem Dialog gibt es nochmal eine Übersicht über die Fehler in Bildform und die Möglichkeit einen xml oder pdf Bericht zu schreiben.
![reportDialog](img/reportDialog.png)
\ No newline at end of file
# Validierungsplan
der Validierungsplan für CityDoctor wird in [YAML](https://de.wikipedia.org/wiki/YAML) angegeben.
Für die Version 3.12.x sieht ein Beispiel so aus:
``` {.yaml .annotate}
globalParameters:
numberOfRoundingPlaces: 8
# in m
minVertexDistance: 0.0001
schematronPath: 'checkForSolid.xml'
useStreaming: true # (1)!
requirements:
R_GE_R_TOO_FEW_POINTS:
enabled: true
R_GE_R_NOT_CLOSED:
enabled: true
R_GE_R_CONSECUTIVE_POINTS_SAME:
enabled: true
R_GE_R_SELF_INTERSECTION:
enabled: true
R_GE_S_MULTIPLE_CONNECTED_COMPONENTS:
enabled: true
R_GE_P_INTERIOR_DISCONNECTED:
enabled: true
R_GE_P_INTERSECTING_RINGS:
enabled: true
R_GE_P_NON_PLANAR:
enabled: true
parameters:
# one of ("distance", "angle", "both")
type: distance
# in m
distanceTolerance: 0.01
# in degree
angleTolerance: 1
R_GE_P_HOLE_OUTSIDE:
enabled: true
R_GE_P_ORIENTATION_RINGS_SAME:
enabled: true
R_GE_P_INNER_RINGS_NESTED:
enabled: true
R_GE_S_TOO_FEW_POLYGONS:
enabled: true
R_GE_S_NOT_CLOSED:
enabled: true
R_GE_S_NON_MANIFOLD_EDGE:
enabled: true
R_GE_S_POLYGON_WRONG_ORIENTATION:
enabled: true
R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION:
enabled: true
R_GE_S_NON_MANIFOLD_VERTEX:
enabled: true
R_GE_S_SELF_INTERSECTION:
enabled: true
R_SE_BS_IS_WALL:
enabled: false
parameters:
lowerAngle: '45'
upperAngle: '135'
R_SE_BS_IS_FLOOR:
enabled: false
R_SE_BS_GROUND_UNFRAGMENTED:
enabled: false
R_SE_BS_IS_GROUND:
enabled: false
R_SE_BS_IS_CEILING:
enabled: false
```
1. Der Parameter `useStreaming` ist ein Schalter um eine Datei Stück für Stück einzulesen anstelle erst die komplette Datei zu lesen bevor die Prüfung stattfindet. Mit dieser Einstellung können auch Dateien > 2GB ohne große RAM Anforderungen geprüft werden.
In dem Validierungsplan finden sich die selben Einstellungen wieder, die in der grafischen Oberfläche auch aufgelistet sind.
Unter requirements sind alle Anforderungen gelistet die geprüft werden sollen. Dabei sind die semantischen Prüfungen standardmäßig deaktiviert.
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment