Zum Inhalt

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
  1. 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.
  2. Der Parameter useStreaming ist 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.
  3. Validiert die CityGML-Datei beim Einlesen gegen das XML-Schema.
  4. 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 darf distanceTolerance nicht überschreiten,
  • angle: Das Polygon wird trianguliert; die Normale jedes Dreiecks darf um nicht mehr als angleTolerance von 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:

  1. Enthält include mindestens einen Eintrag, wird ein Objekt nur geprüft, wenn es mindestens einem der aufgeführten Typen oder einer der IDs entspricht. Ohne include werden alle Objekte geprüft.
  2. Ein Objekt, das einem Eintrag unter exclude entspricht, wird nicht geprüft, auch wenn es unter include eingeschlossen 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.