# CityDoctor2

[![pipeline status](https://transfer.hft-stuttgart.de/gitlab/betzms/citydoctor2/badges/master/pipeline.svg)](https://transfer.hft-stuttgart.de/gitlab/betzms/citydoctor2/-/commits/master)

CityDoctor2 is a Java program for validating CityGML files. It checks whether certain criteria for e.g. geometries are met and outputs a report on the results.

## Releases

You can download releases from the BHT page [here](https://projekt.bht-berlin.de/citydoctor2/downloads/) or from a git repository [here](https://gitlab.com/volkercoors/CiD4Sim/-/tree/master/CityDoctorExtension).

Since version 3.12.0 CityDoctor2 requires java version 17, older version are based on version 1.8. The GUI version requires Javafx which is included in Java 1.8 but not in Java 17. You can download a Java version with Javafx included from [here](https://bell-sw.com/pages/downloads/#/java-17-lts). Choose your platform and then choose to download the full JRE or JDK which includes Javafx.

The releases include builds for the validation library (CityDoctorValidation-x.x.x) and the grahpic user interface (CityDoctorGUI-x.x.x). While the GUI is not open source it is free to use.

## Build

Use [Maven](https://maven.apache.org/) to build CityDoctor2.

```bash
cd CityDoctorParent
mvn install
```

CityDoctor2 uses the [quality ade plugin](https://transfer.hft-stuttgart.de/gitlab/betzms/qualityade). A jar is provided in a local repository for ease of use.

## Usage

Once built there is a CityDoctorValidation-\<version\>.zip file in the target folder of the CityDoctorValidation folder in which the CityDoctorValidation jar can be used to start the program.

There is a start script included in the binary releases of citydoctor. An example start command looks like this:

```bash
java -classpath libs/*;plugins/*;CityDoctorValidation-<version>.jar de.hft.stuttgart.citydoctor2.CityDoctorValidation -in <path-to-gml-file>.gml -config <path-to-validation-config>.yml -xmlReport <path-to-xml-output>.xml -pdfReport <path-to-pdf-output>.pdf -out <path-to-output-gml>.gml
```

Note:
-xmlReport, -pdfReport and -out are optional


## License
[LGPL](http://www.gnu.org/licenses/lgpl-3.0.de.html)
