# Validierungsplan

der Validierungsplan für CityDoctor wird in [YAML](https://de.wikipedia.org/wiki/YAML) angegeben.

Für die Version 3.12.x und neuere 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. 