Prüfplan#
Der Prüfplan (Validierungsplan) legt fest, welche Anforderungen CityDoctor mit welchen Parametern prüft und welche Objekte in die Prüfung einbezogen werden. Er wird in YAML angegeben und CityDoctor mit dem Parameter -config übergeben (siehe Kommandozeile).
In der grafischen Oberfläche stehen dieselben Einstellungen im Prüfdialog zur Verfügung. Ein Prüfplan kann dort gespeichert und wieder geladen werden; das ist der einfachste Weg, eine gültige Datei zu erzeugen.
Beispiel#
Für die Version 3.12.x und neuere sieht ein Beispiel so aus:
globalParameters:
numberOfRoundingPlaces: 8
# in m
minVertexDistance: 0.0001
schematronPath: 'checkForSolid.xml' # (1)!
useStreaming: true # (2)!
xmlValidation: false # (3)!
filter: # (4)!
exclude:
types:
- VEGETATION
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
R_SE_BS_ROOF_UNFRAGMENTED:
enabled: false
R_SE_POLYGON_WITHOUT_SURFACE:
enabled: false
- Schematron-Datei zur Prüfung von Attributen. Ein relativer Pfad wird relativ zum Arbeitsverzeichnis von CityDoctor aufgelöst. Existiert die Datei nicht, wird die Schematron-Prüfung mit einer Warnung übersprungen.
- Der Parameter
useStreamingist ein Schalter, um eine Datei Stück für Stück einzulesen, anstatt erst die komplette Datei zu lesen, bevor die Prüfung stattfindet. Mit dieser Einstellung können auch Dateien > 2 GB ohne große RAM-Anforderungen geprüft werden. - Validiert die CityGML-Datei beim Einlesen gegen das XML-Schema.
- Optional. Schränkt die Prüfung auf bestimmte Objekte ein, siehe Filter.
Aufbau#
Der Prüfplan besteht aus folgenden Einträgen auf oberster Ebene:
| Eintrag | Typ | Standard | Beschreibung |
|---|---|---|---|
globalParameters |
Map | siehe unten | Parameter, die von mehreren Prüfungen verwendet werden |
useStreaming |
Boolean | false |
Liest und prüft die Datei Objekt für Objekt. Wird nur von der Batch-Version verwendet. |
xmlValidation |
Boolean | false |
Validiert die Datei beim Einlesen gegen das CityGML-XML-Schema |
filter |
Map | kein Filter | Schließt Objekte in die Prüfung ein oder von ihr aus |
requirements |
Map | keine | Zu prüfende Anforderungen und ihre Parameter (siehe Anforderungen). |
Andere Einträge auf oberster Ebene sind nicht zulässig und führen beim Laden der Datei zu einem Fehler. Prüfpläne im Format vor Version 3.12 (mit dem Eintrag checks und Prüf-IDs wie C_GE_R_TOO_FEW_POINTS) werden daher nicht mehr akzeptiert.
Globale Parameter#
| Parameter | Standard | Einheit | Beschreibung |
|---|---|---|---|
numberOfRoundingPlaces |
8 |
Nachkommastellen | Anzahl der Nachkommastellen, auf die Koordinaten beim Einlesen gerundet werden. |
minVertexDistance |
0.0001 |
m | Mindestabstand zweier Punkte; Punkte mit geringerem Abstand gelten als identisch. Wird z. B. von R_GE_R_CONSECUTIVE_POINTS_SAME verwendet. |
schematronPath |
keiner | Pfad | Schematron-Datei für die semantische Prüfung von Attributen (Ergebnisse werden als R_SE_ATTRIBUTES_EXISTING und R_SE_ATTRIBUTES_CORRECT ausgewiesen). Fehlt der Eintrag oder ist er leer, findet keine Schematron-Prüfung statt. |
Note
Unbekannte Parameternamen in globalParameters werden ohne Warnung ignoriert. Der Schlüssel für die Schematron-Datei lautet schematronPath; eine Schreibweise wie schematronFilePath hat keine Wirkung.
Anforderungen#
Jede Anforderung wird unter requirements mit ihrer ID aufgeführt und hat folgende Einträge:
| Eintrag | Beschreibung |
|---|---|
enabled |
true prüft die Anforderung, false überspringt sie. |
parameters |
Optional. Parameter der Anforderung. Fehlende Parameter werden mit ihren Standardwerten ergänzt. |
Anforderungen, die im Prüfplan nicht vorkommen, werden nicht geprüft. Ein Prüfplan behält dadurch sein Verhalten, wenn in späteren Versionen von CityDoctor neue Anforderungen hinzukommen. Unbekannte Anforderungs-IDs werden mit einer Warnung im Log gemeldet und ignoriert.
Einige Prüfungen hängen von anderen Prüfungen ab (z. B. setzen die Solid-Prüfungen gültige Polygone voraus). Solche Prüfungen werden automatisch ausgeführt, wenn eine aktivierte Anforderung sie benötigt.
Geometrische Anforderungen#
Die Anforderungen sind unter Geometrische Anforderungen im Detail beschrieben.
| ID | Parameter (Standard) |
|---|---|
| R_GE_R_TOO_FEW_POINTS | – |
| R_GE_R_NOT_CLOSED | – |
| R_GE_R_CONSECUTIVE_POINTS_SAME | – (verwendet minVertexDistance) |
| R_GE_R_SELF_INTERSECTION | degeneratedRingTolerance (0, m) |
| R_GE_P_NON_PLANAR | type (distance), distanceTolerance (0.01, m), angleTolerance (1, Grad) |
| R_GE_P_INTERIOR_DISCONNECTED | – (verwendet minVertexDistance) |
| R_GE_P_INTERSECTING_RINGS | – |
| R_GE_P_HOLE_OUTSIDE | – |
| R_GE_P_ORIENTATION_RINGS_SAME | – |
| R_GE_P_INNER_RINGS_NESTED | – |
| R_GE_S_TOO_FEW_POLYGONS | – |
| R_GE_S_NOT_CLOSED | – |
| R_GE_S_NON_MANIFOLD_EDGE | – |
| R_GE_S_NON_MANIFOLD_VERTEX | – |
| R_GE_S_POLYGON_WRONG_ORIENTATION | – |
| R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION | – |
| R_GE_S_MULTIPLE_CONNECTED_COMPONENTS | – |
| R_GE_S_SELF_INTERSECTION | – |
Bei R_GE_P_NON_PLANAR wählt der Parameter type das Prüfverfahren:
distance: Der Abstand jedes Punktes zur Regressionsebene des Polygons darfdistanceTolerancenicht überschreiten,angle: Das Polygon wird trianguliert; die Normale jedes Dreiecks darf um nicht mehr alsangleTolerancevon der mittleren Normale abweichen,both: Beide Prüfungen werden durchgeführt.
Semantische Anforderungen#
Die Anforderungen sind unter Semantische Anforderungen beschrieben. In der grafischen Oberfläche sind sie standardmäßig deaktiviert.
| ID | Parameter (Standard) |
|---|---|
| R_SE_BS_IS_WALL | lowerAngle (45, Grad), upperAngle (135, Grad) |
| R_SE_BS_IS_FLOOR | – |
| R_SE_BS_IS_CEILING | – |
| R_SE_BS_IS_GROUND | – |
| R_SE_BS_GROUND_UNFRAGMENTED | – |
| R_SE_BS_ROOF_UNFRAGMENTED | maxAngleDeviation (1, Grad) |
| R_SE_POLYGON_WITHOUT_SURFACE | – |
Filter#
Mit dem optionalen Eintrag filter können Objekte in die Prüfung eingeschlossen oder von ihr ausgeschlossen werden. Filter wirken auf Top-Level-Features (z. B. Gebäude, Brücken); herausgefilterte Objekte werden nicht geprüft.
filter:
include:
types:
- BUILDING
- BRIDGE
ids:
- DEBW_0010001aBcD
exclude:
ids:
- DEBW_0010001xYz
- 'UUID_.*'
| Eintrag | Beschreibung |
|---|---|
include.types |
Zu prüfende Feature-Typen |
include.ids |
GML-IDs (reguläre Ausdrücke) der zu prüfenden Objekte |
exclude.types |
Nicht zu prüfende Feature-Typen |
exclude.ids |
GML-IDs (reguläre Ausdrücke) der nicht zu prüfenden Objekte |
Die Filter werden wie folgt ausgewertet:
- Enthält
includemindestens einen Eintrag, wird ein Objekt nur geprüft, wenn es mindestens einem der aufgeführten Typen oder einer der IDs entspricht. Ohneincludewerden alle Objekte geprüft. - Ein Objekt, das einem Eintrag unter
excludeentspricht, wird nicht geprüft, auch wenn es unterincludeeingeschlossen ist.
Verfügbare Feature-Typen:
| Typ | Objekte |
|---|---|
BUILDING |
Gebäude |
BRIDGE |
Brücken |
TUNNEL |
Tunnel |
TRANSPORTATION |
Verkehrsobjekte (Straßen, Gleise, …) |
VEGETATION |
Vegetationsobjekte |
WATER |
Gewässer |
LAND |
Landnutzungs- und Reliefobjekte |
CITY_FURNITURE |
Stadtmobiliar |
OTHER_CITY_OBJECT |
Generische Stadtobjekte und sonstige Bauwerke |
Die Einträge unter ids sind reguläre Ausdrücke (Java-Syntax), die auf die vollständige GML-ID des Objekts passen müssen; Groß- und Kleinschreibung wird nicht unterschieden. Beispiele:
| Muster | Trifft zu auf |
|---|---|
DEBW_0010001aBcD |
genau diese ID (auch debw_0010001abcd) |
DEBW_.* |
alle IDs, die mit DEBW_ beginnen |
.*_part.* |
alle IDs, die _part enthalten |
Note
Zeichen mit besonderer Bedeutung in regulären Ausdrücken (z. B. ., (, [, +, ?) müssen mit \ maskiert werden, wenn sie Teil einer ID sind. In YAML werden Muster am besten in einfache Anführungszeichen gesetzt, z. B. 'ID\.1'.
Standardkonfiguration#
Wird auf der Kommandozeile kein Prüfplan angegeben, verwendet CityDoctor eine Standardkonfiguration, in der alle Anforderungen mit ihren Standardparametern aktiviert sind. Details sind unter Kommandozeile beschrieben.