Zum Inhalt

Kommandozeile#

Beide Distributionen von CityDoctor – die Batch-Version (CityDoctorValidation) und die grafische Version (CityDoctorGUI) – sind Java-Programme, die über die Kommandozeile gestartet werden.

Startskripte#

Am einfachsten werden Parameter über die mitgelieferten Startskripte übergeben (start.bat unter Windows, start.sh unter Linux/Mac). Alle Parameter, die dem Skript übergeben werden, reicht es unverändert an CityDoctor weiter:

start.bat -in stadt.gml -config plan.yml -xmlReport stadt_bericht.xml
./start.sh -in stadt.gml -config plan.yml -xmlReport stadt_bericht.xml

Die Skripte können aus jedem Verzeichnis aufgerufen werden. Distributionen mit mitgelieferter Java-Laufzeitumgebung verwenden diese aus dem Ordner runtime; Distributionen ohne Laufzeitumgebung verwenden die Java-Installation aus JAVA_HOME oder, falls diese Variable nicht gesetzt ist, das java aus dem PATH.

Wird das Startskript der Batch-Version ohne Parameter aufgerufen, prüft es die mitgelieferte Beispieldatei REKaiserwall.gml mit dem Prüfplan testConfigWithStreaming.yml und schreibt den Bericht output.xml.

Direkter Java-Aufruf#

Die Startskripte können auch durch einen direkten Java-Aufruf ersetzt werden, z. B. in eigenen Skripten. Die folgenden Beispiele gehen davon aus, dass der Befehl in dem Verzeichnis ausgeführt wird, in das die Zip-Datei entpackt wurde (es enthält die Ordner app und plugins und je nach Distribution runtime).

Note

Unter Linux und Mac muss das Trennzeichen ; im Classpath durch : ersetzt werden. Distributionen mit mitgelieferter Java-Laufzeitumgebung verwenden runtime/bin/java (bzw. runtime\bin\java.exe unter Windows) anstelle von java; in der Mac-Distribution liegt die Laufzeitumgebung unter runtime/Contents/Home/bin/java.

Batch-Version (CityDoctorValidation)#

Die Batch-Version prüft eine CityGML-Datei ohne Benutzeroberfläche und schreibt die Ergebnisse in Berichtsdateien.

java -classpath app/*;plugins/* de.hft.stuttgart.citydoctor2.CityDoctorValidation -in <datei.gml> [Optionen]

Parameter#

Parameter Pflicht Beschreibung
-in <datei> ja Zu prüfende CityGML-Datei. Der Dateiname muss auf .gml oder .xml enden.
-config <datei> nein Prüfplan im YAML-Format. Ohne Angabe wird eine Standardkonfiguration verwendet (siehe unten).
-xmlReport <datei> nein Schreibt einen XML-Bericht an den angegebenen Ort.
-pdfReport <datei> nein Schreibt einen PDF-Bericht an den angegebenen Ort.
-out <datei> nein Schreibt eine Kopie der Eingabedatei an den angegebenen Ort, in der die Prüfergebnisse mit der Quality-ADE gespeichert sind.
-db_location <pfad> nein Ort der eingebetteten Datenbank, die CityDoctor während der Verarbeitung nutzt. Zeigt der Pfad nicht auf eine bestehende Datei, wird er als Verzeichnis behandelt und darin die Datenbankdatei cd_db angelegt (fehlende Verzeichnisse werden erstellt). Siehe Datenbankeinstellungen.
-db_config <datei> nein .properties-Datei, die die Einstellungen der eingebetteten Datenbank überschreibt (siehe Datenbankeinstellungen).

Jeder Parameter beginnt mit einem einfachen - und erwartet genau einen Wert. Groß- und Kleinschreibung der Parameternamen spielt keine Rolle (-xmlReport und -xmlreport sind gleichwertig). Pfade mit Leerzeichen müssen in Anführungszeichen gesetzt werden.

Note

Wird keiner der Parameter -xmlReport, -pdfReport oder -out angegeben, läuft die Prüfung zwar durch, es wird aber keine Ergebnisdatei geschrieben.

Beispiele#

Prüfung mit Prüfplan und beiden Berichten:

java -classpath app/*;plugins/* de.hft.stuttgart.citydoctor2.CityDoctorValidation -in stadt.gml -config plan.yml -xmlReport stadt_bericht.xml -pdfReport stadt_bericht.pdf

Prüfung mit Standardkonfiguration, Ergebnisse werden in die CityGML-Datei geschrieben (Linux/Mac):

java -classpath "app/*:plugins/*" de.hft.stuttgart.citydoctor2.CityDoctorValidation -in stadt.gml -out stadt_geprueft.gml

Exit-Codes#

Bei ungültigen Parametern beendet sich das Programm mit einem Exit-Code ungleich 0:

Exit-Code Ursache
1 -in fehlt, Eingabedatei existiert nicht, Datei endet nicht auf .gml/.xml oder ein Parameter konnte nicht gelesen werden
2 -in hat nicht genau einen Wert
4 -config hat nicht genau einen Wert
5 -xmlReport hat nicht genau einen Wert
6 -pdfReport hat nicht genau einen Wert
12 -out hat nicht genau einen Wert

Fehler beim Einlesen der CityGML-Datei (z. B. kein wohlgeformtes XML) oder beim Schreiben der Berichte beenden das Programm mit einer Fehlermeldung und einem Stacktrace.

Alternativer Einstiegspunkt mit langen Optionen#

Die Batch-Distribution enthält zusätzlich den Einstiegspunkt de.hft.stuttgart.citydoctor2.CityDoctorValidationCLI. Er bietet dieselben Funktionen mit kurzen und langen Optionsnamen im üblichen GNU-Stil sowie einen Hilfetext:

java -classpath app/*;plugins/* de.hft.stuttgart.citydoctor2.CityDoctorValidationCLI --help
Option Entspricht
-i, --in, --input -in
-c, --config, --configuration, --plan -config
-x, --xml, --xmlReport -xmlReport
-p, --pdf, --pdfReport -pdfReport
-o, --out, --output -out
--db_location, --db_loc -db_location
-db, --db_config, --db_settings -db_config
-h, --help gibt den Hilfetext aus

Beispiel:

java -classpath app/*;plugins/* de.hft.stuttgart.citydoctor2.CityDoctorValidationCLI -i stadt.gml -c plan.yml -x stadt_bericht.xml

Anders als bei CityDoctorValidation wird bei diesem Einstiegspunkt zwischen Groß- und Kleinschreibung der Optionsnamen unterschieden.

Grafische Version (CityDoctorGUI)#

Ohne Parameter startet die grafische Oberfläche leer, und eine Datei kann über das Menü geladen werden (siehe Nutzeroberfläche):

java -classpath app/*;plugins/* de.hft.stuttgart.citydoctor2.gui.CityDoctorGUIStarter

Die GUI akzeptiert dieselben Parameter wie die Batch-Version. Ist -in angegeben, lädt CityDoctor die Datei direkt nach dem Start, führt die Prüfung durch und schreibt bei Bedarf die Berichte. Modell und Fehler können anschließend in der Oberfläche untersucht werden.

Parameter Beschreibung
-in <datei> CityGML-Datei, die nach dem Start geladen und geprüft wird.
-config <datei> Prüfplan für die Prüfung beim Start. Ohne Angabe Standardkonfiguration.
-xmlReport <datei> Schreibt nach der Prüfung beim Start einen XML-Bericht.
-pdfReport <datei> Schreibt nach der Prüfung beim Start einen PDF-Bericht.
-db_location <pfad> Ort der eingebetteten Datenbank (siehe Batch-Version).
-db_config <datei> Einstellungen der eingebetteten Datenbank (siehe Batch-Version).

-config, -xmlReport und -pdfReport werden nur zusammen mit -in ausgewertet. Der Parameter -out wird von der GUI nicht unterstützt; die geprüfte Datei kann stattdessen aus der Oberfläche heraus gespeichert werden.

Beispiel:

java -classpath app/*;plugins/* de.hft.stuttgart.citydoctor2.gui.CityDoctorGUIStarter -in stadt.gml -config plan.yml -pdfReport stadt_bericht.pdf

Note

Prüft die GUI eine Datei beim Start, wird die Einstellung useStreaming des Prüfplans ignoriert: Die komplette Datei wird in den Speicher geladen, damit sie angezeigt werden kann.

Standardkonfiguration#

Wird kein Prüfplan angegeben, verwendet CityDoctor eine Standardkonfiguration:

  • alle verfügbaren geometrischen und semantischen Anforderungen sind mit ihren Standardparametern aktiviert (siehe Prüfplan),
  • numberOfRoundingPlaces: 8, minVertexDistance: 0.0001,
  • schematronPath: checkForSolid.xml (relativ zum Arbeitsverzeichnis; existiert die Datei nicht, wird die Schematron-Prüfung mit einer Warnung übersprungen),
  • kein Streaming, keine XML-Schemavalidierung, kein Filter.

Eine Warnung im Log weist darauf hin, dass die Standardkonfiguration verwendet wird. Für reproduzierbare Ergebnisse empfiehlt es sich, immer einen expliziten Prüfplan zu übergeben.

Datenbankeinstellungen#

Während der Verarbeitung legt CityDoctor Daten in einer eingebetteten Datenbankdatei (H2) ab. Standardmäßig wird die Datei cd_db im Verzeichnis citydoctor/database innerhalb des temporären Verzeichnisses des Systems angelegt (z. B. %TEMP%\citydoctor\database unter Windows, /tmp/citydoctor/database unter Linux). Ein anderer Ort, z. B. ein Laufwerk mit mehr freiem Speicher, kann mit -db_location festgelegt werden.

Weitere Einstellungen können in einer .properties-Datei vorgenommen werden, die mit -db_config übergeben wird. Eine Datei namens DBSettings.properties im Arbeitsverzeichnis wird automatisch eingelesen. Unterstützte Schlüssel:

Schlüssel Standard Beschreibung
database.directory <temp>/citydoctor/database Verzeichnis der Datenbankdatei
database.name cd_db Name der Datenbankdatei
database.connectionPoolSize Anzahl der CPU-Kerne Maximale Anzahl gepoolter Datenbankverbindungen
database.tempMode false Legt die Datenbankdatei in einem neuen, eindeutig benannten Unterverzeichnis von database.directory an, das beim Beenden von CityDoctor gelöscht wird. Nützlich, wenn mehrere CityDoctor-Instanzen gleichzeitig laufen.
database.inMemoryMode false Hält die Datenbank im Arbeitsspeicher. Kann bei großen Dateien zu Speicherfehlern führen.
database.attemptFallback true Wechselt in den In-Memory-Modus, falls die Datenbankdatei nicht angelegt werden kann
database.debugMode false Startet die Datenbank im Mixed Mode mit lokalem Server (nur zur Fehlersuche)

Beispiel:

database.directory=D:\\citydoctor\\db
database.connectionPoolSize=4

Sind beide angegeben, überschreibt -db_location die Werte database.directory und database.name aus der -db_config-Datei.

Arbeitsspeicher#

Bei großen Dateien kann der maximale Arbeitsspeicher der Java Virtual Machine mit der JVM-Option -Xmx erhöht werden, die vor -classpath stehen muss:

java -Xmx16g -classpath app/*;plugins/* de.hft.stuttgart.citydoctor2.CityDoctorValidation -in grosse_stadt.gml -config plan.yml -xmlReport bericht.xml

Alternativ kann die Batch-Version die Datei mit useStreaming: true im Prüfplan Stück für Stück einlesen, was den Speicherbedarf erheblich reduziert.