AdV-CityGML Import

Das AdV Plugin erweitert den import Befehl von vcdb-tool um den Unterbefehl citygml-adv. Damit lassen sich Datensätze im AdV-CityGML-1.0 Format in die VCDB v5 importieren. Im Vergleich zum bestehenden CityGML-Import Befehl konvertiert import citygml-adv die Eingangsdaten automatisch in das AdV-CityGML-3.0 Format. Dies betrifft insbesondere die Konvertierung von Gebäudemodellen in Brücken oder sonstige Bauwerke anhand vorgegebener Werte des bldg:function Attributs.

Die Eingangsdaten für den import citygml-adv Befehl sollten dem AdV-PQS-Standard in der Version 2.6 entsprechen. Diese Vorgabe ist jedoch nicht zwingend. Der import citygml-adv-Befehl unterstützt auch CityGML-Daten, die beispielsweise Objektarten, LoD-Stufen oder Attribute enthalten, die über die AdV-Spezifikation hinausgehen, oder in anderen CityGML-Versionen vorliegen.

Synopsis

vcdb import citygml-adv [OPTIONS] <file>...

Optionen

Der import citygml-adv Befehl bietet die identischen Optionen wie der import citygml Befehl an. Die nachfolgende Übersicht dient daher vor allem der Vollständigkeit. Weitergehende Einstellungen können über eine JSON-Konfigurationsdatei definiert werden.

Globale Optionen

Option Beschreibung Standardwert

[@<filename>…​]

Eine oder mehrere Argumentdateien mit Optionen.

-h, --help

Hilfenachricht anzeigen und beenden.

-V, --version

Versionsinformationen ausgeben und beenden.

--config-file=<file>

Konfiguration aus dieser Datei laden.

-L, --log-level=<level>

Log-Level: error, warn, info, debug, trace.

info

--log-file=<file>

Log-Nachrichten in diese Datei schreiben.

--quiet

Deaktiviert Log-Nachrichten auf der Konsole.

--pid-file=<file>

Datei mit der Prozess-ID erstellen.

--extensions=<dir>

Erweiterungen aus diesem Verzeichnis laden.

--use-plugin=<plugin[=true|false]>
[,<plugin[=true|false]>…​]

Plugins mit passendem vollqualifiziertem Klassennamen aktivieren oder deaktivieren.

true

Weitere Informationen zu den globalen Optionen und Nutzungshinweise siehe hier.

Allgemeine Importoptionen

Option Beschreibung Standardwert

<file>…​

Eine oder mehrere Dateien oder Verzeichnisse zur Verarbeitung (Glob-Patterns erlaubt).

--input-encoding=<encoding>

Kodierung der Eingabedatei(en).

--fail-fast

Bei Fehlern sofort beenden.

--temp-dir=<dir>

Temporäre Dateien in diesem Verzeichnis speichern.

-m, --import-mode=<mode>

Importmodus: import_all, skip, delete, terminate.

import_all

--threads=<threads>

Anzahl der Threads für die parallele Verarbeitung.

--preview

Im Vorschau-Modus ausführen. Features werden nicht importiert.

--index-mode=<mode>

Indexmodus: keep, drop, drop_create. Bei der Verarbeitung großer Datenmengen kann das Deaktivieren der Indizes sinnvoll sein.

keep

--compute-extent

Envelopes von Features berechnen und ersetzen.

--transform=
<m0,m1,…​,m11|swap-xy>

Koordinaten mit einer 3x4-Matrix im Row-Major-Format transformieren. swap-xy kann als Abkürzung verwendet werden.

Weitere Informationen zu den allgemeinen Importoptionen und Nutzungshinweise siehe hier.

CityGML-Importoptionen

Option Beschreibung Standardwert

--import-xal-source

XML-Repräsentation von xAL-Adresselementen importieren.

-x, --xsl-transform=<stylesheet>[,<stylesheet>…​]

Anwendung von XSLT-Stylesheets zur Transformation der Eingabedaten.

--no-appearances

Appearances nicht verarbeiten.

-a, --appearance-theme=<theme>[,<theme>…​]

Appearances mit passendem Theme verarbeiten. Verwenden Sie none für das Null-Theme.

Weitere Informationen zu den CityGML-Importoptionen und Nutzungshinweise siehe hier.

Metadatenoptionen

Option Beschreibung Standardwert

--creation-date=<time>

Zeitstempel im Format <YYYY-MM-DD> oder <YYYY-MM-DDThh:mm:ss[(+|-)hh:mm]> oder now, der für das Attribut creationDate verwendet werden soll.

Attributwert oder now

--lineage=<lineage>

Datenabstammung oder Ursprung der Features.

--updating-person=<name>

Name des Benutzers, der für den Import verantwortlich ist.

Datenbankbenutzer

--reason-for-update=<reason>

Grund für den Import der Daten.

Weitere Informationen zu den Metadatenoptionen und Nutzungshinweise siehe hier.

Upgrade-Optionen für CityGML 2.0 und 1.0

Option Beschreibung Standardwert

--use-lod4-as-lod3

Verwende LoD4 als LoD3 und ersetze bestehende LoD3 Geometrien.

--map-lod0-roof-edge

Bilde LoD0 Roof-Edge Geometrien auf Dachflächen ab.

--map-lod1-surface

Bilde LoD1 Multi-Surfaces auf generische thematische Begrenzungsflächen ab.

Weitere Informationen zu den Upgrade-Optionen und Nutzungshinweise siehe hier.

Filteroptionen

Option Beschreibung Standardwert

-t, --type-name=<[prefix:]name>
[,<[prefix:]name>…​]

Namen der zu verarbeitenden Features.

-i, --id=<id>[,<id>…​]

Identifier der zu verarbeitenden Features.

-b, --bbox=<x_min,y_min,x_max,y_max[,srid]>

Bounding Box als räumlicher Filter.

--bbox-mode=<mode>

Bounding Box Modus: intersects, contains, on_tile.

intersects

--limit=<count>

Maximale Anzahl der zu verarbeitenden Features.

--start-index=<index>

Index innerhalb der Eingabemenge, ab dem Features verarbeitet werden.

Weitere Informationen zu den Filteroptionen und Nutzungshinweise siehe hier.

Datenbank-Verbindungsoptionen

Option Beschreibung Standardwert

-H, --db-host=<host>

Hostname des VCDB Datenbankservers.

-P, --db-port=<port>

Port des VCDB Datenbankservers.

5432

-d, --db-name=<database>

Name der VCDB-Instanz, zu eine Verbindung hergestellt werden soll.

-S, --db-schema=<schema>

Schema, das beim Verbinden zur VCDB verwendet werden soll.

citydb oder Benutzername

-u, --db-username=<user>

Benutzername für die Verbidung zur VCDB.

-p, --db-password
[=<password>]

Passwort für die Verbidung zur VCDB. Leer lassen, um zur Eingabe aufgefordert zu werden.

--db-property=<property=value>
[,<proeprty=value>…​]

Datenbankspezifische Verbindungsparameter.

Weitere Informationen zu den Datenbank-Verbindungsoptionen und Nutzungshinweise siehe hier.

Verwendung

Die Dokumentation der einzelnen Optionen und allgemeine Hinweise zu ihrer Nutzung finden Sie in der Dokumentation zum import citygml Befehl hier.

Im Gegensatz zum normalen CityGML-Import Befehl werden Gebäudemodelle durch import citygml-adv beim Import in die Datenbank gemäß den Vorgaben des AdV-PQS-Standards v3.0 bei Bedarf in eine andere CityGML-Objektart umgewandelt. Dazu wird jedes Top-Level-Objekt vom Typ bldg:Building in den Eingangsdaten untersucht und der zugehörige Funktionscode aus dem Attribut bldg:function ausgelesen.

Anhand des Funktionscodes wird bestimmt, ob eine Konvertierung in eine andere Objektart erforderlich ist. Die Prüfung erfolgt in folgender Reihenfolge:

  1. Konvertierung in eine Brücke (brid:Bridge)

  2. Konvertierung in ein sonstiges Bauwerk (con:OtherConstruction)

  3. Übernahme des Objekts als bldg:Building (Default-Verhalten)

Welche Funktionscodes die Konvertierung eines Gebäudes in brid:Bridge oder con:OtherConstruction auslösen, ist gemäß dem AdV-PQS-Standard festgelegt. Mithilfe der JSON-Konfiguration kann die Liste der Funktionscodes jedoch benutzerspezifisch und pro Objektart angepasst werden.

Abhängig von der Zielobjektart werden unterschiedliche Konvertierungsschritte durchgeführt, die in den folgenden Kapiteln beschrieben werden.

Übernahme von Gebäuden

Konvertierung von Objektarten

Bei der Übernahme eines Gebäudes werden die Objektarten für AdV-CityGML-3.0 wie folgt umklassifiziert:

Ausgangsobjekt Zielobjekt

bldg:Building

bldg:Building

bldg:BuildingPart

bldg:BuildingPart

bldg:WallSurface

con:WallSurface

bldg:RoofSurface

con:RoofSurface

bldg:GroundSurface

con:GroundSurface

bldg:ClosureSurface

core:ClosureSurface

Konvertierung von Attributen

Für die Konvertierung von Attributen gelten die folgenden Regeln:

  • Generische Attribute werden grundsätzlich übernommen. Eine Validierung der Attributwerte findet nicht statt.

  • Die folgenden generischen Attribute werden in AdV-CityGML-1.0 am bldg:BuildingPart geführt und müssen für die Konvertierung nach AdV-CityGML-3.0 am bldg:Building zusammengeführt werden. Bei widersprüchlichen Attributwerten gelten folgende Regeln:

    • DatenquelleBodenhoehe: Der erste Wert wird übernommen.

    • DatenquelleLage: Der erste Wert wird übernommen.

    • Grundrissaktualitaet: Das älteste Datum wird übernommen.

  • Das generische Attribut LetzteAenderung ist für bldg:Building Objekte verpflichtend. Wenn es für das Eingangsobjekt nicht gesetzt ist, wird es hinzugefügt und mit dem Wert von core:creationDate belegt. Ist auch dieses nicht vorhanden, wird das aktuelle Datum verwendet.

  • Bei core:ExternalReference wird das Attribut core:informationSystem entfernt.

  • bldg:measuredHeight-Attribute werden in con:Height umgeschrieben. Das status Attribut wird abhängig vom generischen Attribut DatenquelleDachhoehe wie folgt gesetzt:

    • estimated: Bei einem Wert von 3000.

    • measured: Bei allen anderen Werten.

  • Adressen des Gebäudes werden übernommen.

Übernahme von Geometrien

Alle Geometrien des Gebäudeobjekts und seiner Kindobjekte werden unverändert übernommen. Dies gilt für alle Geometriearten wie gml:Solid und gml:MultiSurface sowie für gml:MultiCurve Geometrien von Geländeschnittkurven. Eine Geometrievalidierung findet nicht statt.

Konvertierung in Brücken

Konvertierung von Objektarten

Bei der Konvertierung eines Gebäudes in eine Brücke werden das Gebäude und seine Kindobjekte wie folgt umklassifiziert:

Ausgangsobjekt Zielobjekt

bldg:Building

brid:Bridge

bldg:BuildingPart

brid:BridgePart

bldg:WallSurface

con:WallSurface

bldg:RoofSurface

con:OuterFloorSurface

bldg:GroundSurface

con:OuterCeilingSurface

bldg:ClosureSurface

core:ClosureSurface

Konvertierung von Attributen

Für die Konvertierung von Attributen gelten die folgenden Regeln:

  • Gebäudespezifische Attribute aus dem bldg-Namensraum werden übernommen, soweit ein entsprechendes Attribut für das Brückenobjekt existiert.

  • Generische Attribute werden grundsätzlich übernommen. Eine Validierung der Attributwerte findet nicht statt.

  • Die folgenden generischen Attribute werden in AdV-CityGML-1.0 am bldg:BuildingPart geführt und müssen für die Konvertierung nach AdV-CityGML-3.0 an der brid:Bridge zusammengeführt werden. Bei widersprüchlichen Attributwerten gelten folgende Regeln:

    • DatenquelleBodenhoehe: Der erste Wert wird übernommen.

    • DatenquelleLage: Der erste Wert wird übernommen.

    • Grundrissaktualitaet: Das älteste Datum wird übernommen.

  • Die folgenden generischen Attribute sind für Brücken nicht vorgesehen und werden entfernt:

    • BezugspunktDach

    • DatenquelleGeschossanzahl

  • Das generische Attribut LetzteAenderung ist für brid:Bridge Objekte verpflichtend. Wenn es für das bldg:Building nicht gesetzt ist, wird es hinzugefügt und mit dem Wert von core:creationDate belegt. Ist auch dieses nicht vorhanden, wird das aktuelle Datum verwendet.

  • In Abhängigkeit des Funktionscodes wird brid:isMovable auf true oder false gesetzt.

  • Bei core:ExternalReference wird das Attribut core:informationSystem entfernt.

  • bldg:measuredHeight-Attribute werden in con:Height umgeschrieben. Das status Attribut wird abhängig vom generischen Attribut DatenquelleDachhoehe wie folgt gesetzt:

    • estimated: Bei einem Wert von 3000.

    • measured: Bei allen anderen Werten.

  • Adressen des Gebäudes werden für die Brücke übernommen.

Übernahme von Geometrien

Alle Geometrien des Gebäudeobjekts und seiner Kindobjekte werden unverändert in die entsprechenden Brückenobjekte übernommen. Dies gilt für alle Geometriearten wie gml:Solid und gml:MultiSurface sowie für gml:MultiCurve Geometrien von Geländeschnittkurven. Eine Geometrievalidierung findet nicht statt.

Konvertierung in sonstige Bauwerke

Konvertierung von Objektarten

Bei der Konvertierung eines Gebäudes in ein sonstiges Bauwerk werden das Gebäude und seine Kindobjekte wie folgt umklassifiziert:

Ausgangsobjekt Zielobjekt

bldg:Building

con:OtherConstruction

bldg:BuildingPart

werden in con:OtherConstruction zusammengeführt

bldg:WallSurface

con:WallSurface

bldg:RoofSurface

con:RoofSurface

bldg:GroundSurface

con:GroundSurface

bldg:ClosureSurface

-

Im Gegensatz zu bldg:Building erlaubt con:OtherConstruction keine weitere Untergliederung in Bauwerksteile. Gebäudeteile können daher nicht als solche erhalten werden, sondern werden im con:OtherConstruction Objekt zusammengeführt. Begrenzungsflächen der bldg:BuildingPart Objekte werden hierfür in das con:OtherConstruction Objekt übernommen.

Konvertierung von Attributen

Für die Konvertierung von Attributen gelten die folgenden Regeln:

  • Gebäudespezifische Attribute aus dem bldg-Namensraum werden übernommen, soweit ein entsprechendes Attribut für con:OtherConstruction existiert.

  • Generische Attribute werden grundsätzlich übernommen. Eine Validierung der Attributwerte findet nicht statt.

  • Die folgenden generischen Attribute werden in AdV-CityGML-1.0 am bldg:BuildingPart geführt und für die Konvertierung bei con:OtherConstruction zusammengeführt. Bei widersprüchlichen Attributwerten gelten folgende Regeln:

    • DatenquelleDachhoehe: Der erste Wert wird übernommen.

    • BezugspunktDach: Der erste Wert wird übernommen.

    • DatenquelleBodenhoehe: Der erste Wert wird übernommen.

    • DatenquelleLage: Der erste Wert wird übernommen.

    • Grundrissaktualitaet: Das älteste Datum wird übernommen.

  • Die folgenden generischen Attribute sind für sonstige Bauwerke nicht vorgesehen und werden entfernt:

    • DatenquelleGeschossanzahl

  • Das generische Attribut LetzteAenderung ist für con:OtherConstruction Objekte verpflichtend. Wenn es für das bldg:Building nicht gesetzt ist, wird es hinzugefügt und mit dem Wert von core:creationDate belegt. Ist auch dieses nicht vorhanden, wird das aktuelle Datum verwendet.

  • Bei core:ExternalReference wird das Attribut core:informationSystem entfernt.

  • bldg:measuredHeight-Attribute werden in con:Height umgeschrieben. Das status-Attribut wird abhängig vom generischen Attribut DatenquelleDachhoehe wie folgt gesetzt:

    • estimated: Bei einem Wert von 3000.

    • measured: Bei allen anderen Werten.

  • Bei der Zusammenführung von Gebäudeteilen wird die größte vorhandene Teilhöhe als Höhe des Bauwerks verwendet.

  • Adressen des Gebäudes werden für con:OtherConstruction nicht übernommen.

Übernahme von Geometrien

Die Geometrien des Gebäudeobjekts werden grundsätzlich unverändert in con:OtherConstruction übernommen. Dies gilt grundsätzlich für alle Geometriearten wie gml:Solid und gml:MultiSurface sowie für gml:MultiCurve Geometrien von Geländeschnittkurven. Eine Geometrievalidierung findet nicht statt.

Wenn Gebäudeteile modelliert sind, ist zusätzlich eine Konvertierung auf Geometrieebene erforderlich. Für die Zusammenführung der Geometrien im con:OtherConstruction Objekt gelten folgende Regeln:

  • Begrenzungsflächen vom Typ bldg:WallSurface, bldg:RoofSurface und bldg:GroundSurface werden einschließlich ihrer Geometrie in con:OtherConstruction übernommen.

  • Die Polygone der übernommenen Begrenzungsflächen werden als Referenz in die LoD2 Solid Geometrie der con:OtherConstruction aufgenommen.

  • Begrenzungsflächen vom Typ bldg:ClosureSurface dienen ausschließlich als Trennfläche zwischen zwei bldg:BuildingPart Objekten. Sie werden daher einschließlich ihrer Geometrie ersatzlos entfernt.

  • Die LoD1 Solid Geometrien der Gebäudeteile werden in einer einzelnen LoD1 Solid Geometrie für die con:OtherConstruction zusammengeführt.

  • Geometrien der Geländeschnittkurven der Gebäudeteile werden in einer einzelnen gml:MultiCurve Geometrie als Geländeschnittkurve der con:OtherConstruction getrennt für LoD2 und LoD1 zusammengeführt.

Bei validen Eingangsdaten bleiben die zusammengeführten Geometrien im LoD2 und LoD1 valide. Nur in der LoD1 Solid Geometrie können an den Berührungsflächen der ursprünglichen Gebäudeteile doppelte Polygone entstehen, durch die die Volumengeometrie invalide wird.

Logging

Nach einem erfolgreichen Import schreibt das AdV Plugin die Anzahl der Gebäudeobjekte, die in Brücken oder sonstige Bauwerke konvertiert wurden, als Zusammenfassung in die Log-Ausgabe von vcdb-tool. Falls keine Konvertierungen erfolgt sind, wird dies ebenfalls protokolliert.

Wenn --log-level auf debug gesetzt ist, wird zusätzlich für jedes konvertierte Gebäude ein Log-Eintrag mit dem Funktionscode geschrieben, der die Konvertierung ausgelöst hat.

Die Log-Ausgaben des AdV Plugins enthalten den Marker [AdV] und können damit einfach gesucht und gefiltert werden.