Import-Befehl
Der import
Befehl importiert Stadtmodelldaten in einem unterstützten Format in die VCDB v5
. Für jedes Format gibt es
einen eigenen Unterbefehl mit formatspezifischen Optionen.
Optionen
Der import
Befehl erbt globale Optionen vom Hauptbefehl vcdb
. Zusätzlich definiert er allgemeine
Import-, Metadaten- und Filteroptionen, die auch für alle Unterbefehle gelten.
Globale Optionen
Option | Beschreibung | Standardwert |
---|---|---|
|
Eine oder mehrere Argumentdateien mit Optionen. |
|
|
Hilfenachricht anzeigen und beenden. |
|
|
Versionsinformationen ausgeben und beenden. |
|
|
Konfiguration aus dieser Datei laden. |
|
|
Log-Level: |
|
|
Log-Nachrichten in diese Datei schreiben. |
|
|
Deaktiviert Log-Nachrichten auf der Konsole. |
|
|
Datei mit der Prozess-ID erstellen. |
|
|
Plugins aus diesem Verzeichnis laden. |
|
|
Plugins mit passendem vollqualifiziertem Klassennamen aktivieren oder deaktivieren. |
|
Weitere Informationen zu den globalen Optionen und Nutzungshinweise siehe hier.
Allgemeine Importoptionen
Option | Beschreibung | Standardwert |
---|---|---|
|
Eine oder mehrere Dateien oder Verzeichnisse zur Verarbeitung (Glob-Patterns erlaubt). |
|
|
Kodierung der Eingabedatei(en). |
|
|
Bei Fehlern sofort beenden. |
|
|
Temporäre Dateien in diesem Verzeichnis speichern. |
|
|
Importmodus: |
|
|
Anzahl der Threads für die parallele Verarbeitung. |
|
|
Im Vorschau-Modus ausführen. Features werden nicht importiert. |
|
|
Indexmodus: |
|
|
Envelopes von Features berechnen und ersetzen. |
|
|
Koordinaten mit einer 3x4-Matrix im Row-Major-Format transformieren. |
Metadatenoptionen
Option | Beschreibung | Standardwert |
---|---|---|
|
Datenabstammung oder Ursprung der Features. |
|
|
Name des Benutzers, der für den Import verantwortlich ist. |
Datenbankbenutzer |
|
Grund für den Import der Daten. |
Filteroptionen
Option | Beschreibung | Standardwert |
---|---|---|
|
Namen der zu verarbeitenden Features. |
|
|
Identifier der zu verarbeitenden Features. |
|
|
Bounding Box als räumlicher Filter. |
|
|
Bounding Box Modus: |
|
|
Maximale Anzahl der zu verarbeitenden Features. |
|
|
Index innerhalb der Eingabemenge, ab dem Features verarbeitet werden. |
Befehle
Befehl | Beschreibung |
---|---|
Zusätzliche Befehle zur Unterstützung weiterer Formate können in zukünftigen Versionen hinzukommen. Es kann auch ein eigenes Plugin umgesetzt werden, um ein bestimmtes Format zu unterstützen. |
Verwendung
Import-Dateien angeben
Der Input für den Import wird über ein oder mehrere <file>
Argumente angegeben, von denen jedes auf eine Datei
oder ein Verzeichnis verweisen kann. Es können auch Glob-Pattern mit Platzhaltern wie *
, ?
, [ ]
oder { }
verwendet werden, um mehrere
Dateien auszuwählen.
Wird ein Verzeichnis angegeben, wird es rekursiv nach unterstützten Eingabedateien durchsucht. Die unterstützten Formate und Dateiendungen hängen vom Unterbefehl ab. Neben regulären Dateien werden auch ZIP-Archive und GZIP-komprimierte Dateien als Eingabe unterstützt. Wie Verzeichnisse werden auch ZIP-Archive rekursiv nach unterstützten Eingabedateien durchsucht. Das folgende Beispiel zeigt verschiedene Möglichkeiten zur Angabe von Eingabedateien.
-
Linux
-
Windows CMD
./vcdb import citygml [...] \
/path/to/my-city.gml \
/foo/ \
/bar/**/city*.{gml,gz,zip}
vcdb import citygml [...] ^
C:\path\to\my-city.gml ^
C:\foo\ ^
C:\bar\**\city*.{gml,gz,zip}
Um eine bestimmte Zeichenkodierung für die Eingabedateien festzulegen, muss der IANA-basierte Kodierungsname (z.B. UTF-8
) mit der
--input-encoding
Option angegeben werden. Diese Kodierung wird auf alle Eingabedateien angewendet.
Importmodi und doppelte Objekte
Der Importmodus, der über die Option --import-mode
festgelegt wird, bestimmt, wie mit doppelten Stadtobjekten in der Datenbank umgegangen wird.
Die verfügbaren Modi sind:
-
import_all
: Alle Features aus den Eingabedateien werden importiert, auch wenn dadurch Duplikate in der Datenbank entstehen. Dies ist der Standardmodus. -
skip
: Bereits in der Datenbank vorhandene Features haben Vorrang. Wird ein Duplikat gefunden, wird das Feature aus der Eingabedatei ignoriert und nicht importiert. -
delete
: Features aus den Eingabedateien haben Vorrang. Wird ein Duplikat gefunden, wird das vorhandene Feature in der Datenbank gelöscht, bevor das neue Feature importiert wird. -
terminate
: Ähnlich wie beidelete
, jedoch wird das doppelte Feature in der Datenbank terminiert anstatt gelöscht (zum Unterschied siehe dendelete
Befehl).
|
Importvorschau
Die Option --preview
führt den Import im Vorschau-Modus aus. Die Eingabedaten werden dabei so verarbeitet, als ob der Import tatsächlich stattfinden würde,
jedoch werden keine Änderungen an der Datenbank vorgenommen. Dieser Modus hilft dabei, potenzielle Probleme wie Konflikte oder Fehler im Vorfeld zu erkennen,
bevor sie Auswirkungen auf die Datenbank haben. So lässt sich sicherstellen, dass der eigentliche Import wie erwartet durchgeführt werden kann.
Filterung von Features
Der import
Befehl bietet verschiedene Filteroptionen, mit denen kontrolliert werden kann, welche Features aus den Eingabedateien importiert werden.
Feature-Typ Filter
Über die Option --type-name
können eine oder mehrere Feature-Typen angegeben werden, die importiert werden sollen. Für jeden Feature-Typ ist
der Typname wie in der Tabelle OBJECTCLASS
der VCDB v5
anzugeben. Um
Mehrdeutigkeit zu vermeiden, kann der Namespace-Alias aus der NAMESPACE
Tabelle
als Präfix im Format prefix:name
hinzugefügt werden. Es werden nur Features importiert, die einem der angegebenen Typen entsprechen.
Feature-Identifier Filter
Die --id
Option ermöglicht das Filtern nach einem oder mehreren Identifiern, die als kommaseparierte Liste angegeben werden. Nur Features
mit einem entsprechenden Identifier werden importiert.
Bounding-Box Filter
Mit der Option --bbox
kann eine 2D Bounding-Box als räumlicher Filter angegeben werden – bestehend aus vier Koordinaten für den linken unteren und
rechten oberen Eckpunkt. Standardmäßig wird angenommen, dass die Koordinaten im gleichen CRS vorliegen, das auch für die VCDB-Instanz verwendet wird.
Optional kann die SRID des CRS als fünfter Wert angegeben werden (z.B. 4326
für WGS84). Alle Werte müssen durch
Kommas getrennt werden.
Das Verhalten dieses Filters wird durch die --bbox-mode
gesteuert:
-
intersects
: Es werden nur Features importiert, deren Bounding-Box sich mit dem angegebenen Bereich überschneidet. Dies ist der Standardmodus. -
contains
: Es werden nur Features importiert, deren Bounding-Box vollständig innerhalb des angegebenen Bereichs liegt. -
on_tile
: Es werden nur Features importiert, deren Bounding-Box-Mittelpunkt innerhalb des angegebenen Bereichs oder auf dessen linken bzw. unteren Rand liegt. Dieser Modus stellt sicher, dass bei mehreren Filterbereichen, die in einem Kachelraster organisiert sind, jedes Feature genau einer Kachel zugeordnet wird.
Count-Filter
Mit --limit
wird die maximale Anzahl der zu importierenden Features festgelegt. Die --start-index
Option
definiert den 0
-basierten Index des ersten Features, bei welchem der Import beginnen soll. Beide Optionen gelten global für alle Eingabedateien und können
getrennt oder zusammen verwendet werden, um die Gesamtanzahl der zu importierenden Features zu definieren.
Filter-Beispiel
Das folgende Beispiel zeigt einen CityGML Import-Befehl mit mehreren Filterkriterien:
-
Linux
-
Windows CMD
./vcdb import citygml [...] my-city.gml \
--type-name=bldg:Building,tran:Road \
--bbox=367123,5807268,367817,5807913,25833 \
--bbox-mode=on_tile \
--limit=100
vcdb import citygml [...] my-city.gml ^
--type-name=bldg:Building,tran:Road ^
--bbox=367123,5807268,367817,5807913,25833 ^
--bbox-mode=on_tile ^
--limit=100
|
Verwaltung von Indizes während des Imports
Während des Imports von Daten werden Datenbankindizes in Echtzeit aktualisiert, was den Importprozess verlangsamen kann, insbesondere
bei großen Datenmengen. Die Option --index-mode
bietet die folgenden Modi zur Steuerung des Indexverhaltens:
-
keep
: Die Indizes bleiben unverändert. Dies ist der Standardmodus. -
drop
: Die Indizes werden vor dem Import deaktiviert, was die Import-Performance verbessert. -
drop_create
: Wiedrop
, aber die Indizes werden nach dem Import automatisch wieder aktiviert. Die stellt sicher, dass sie für nachfolgende Abfragen verfügbar sind.
Das Deaktivieren und Wiederherstellen von Indizes kann je nach Datenbankgröße ebenfalls viel Zeit in Anspruch nehmen. Der drop_create
Modus ist daher besonders beim Import großer Datensätze sinnvoll, z.B. beim initialen Befüllen der Datenbank. Wenn die Datenbank jedoch
bereits sehr groß ist und viele Daten enthält, kann der Zeitaufwand für das Deaktivieren und Neuerstellen der Indizies höher sein als
für den Import bei aktivierten Indizes – insbesondere wenn nur kleinere Datensätze importiert werden.
|
Mit dem index Befehl können Indizes auch unabhängig von einem Importvorgang verwaltet werden,
was eine gezieltere Kontrolle ermöglicht.
|
Berechnung von Envelopes
Standardmäßig liest vcdb-tool die Bounding Boxes der Features aus der Eingabedatei und speichert sie in der envelope
Spalte der
FEATURE
Tabelle. Ein korrekter Envelope ist unerlässlich für räumliche Abfragen.
Mit der Option --compute-extent
berechnet vcdb-tool die Envelopes stattdessen selbst. Dabei werden die Geometrien
des Features und seiner Subfeatures über alle LoDs hinweg berücksichtigt.
Envelopes können auch nach dem Import mit Datenbankfunktionen der VCDB v5 neu berechnet werden, wie
hier erläutert.
|
Transformation von Geometrien
Die --transform
Option wendet eine affine Transformation auf die Eingabegeometrien an, bevor sie in die Datenbank importiert werden.
Dabei wird eine 3x4-Transformationsmatrix verwendet, die mit homogenen Koordinaten arbeitet, um die transformierten
Koordinaten zu berechnen:
Die Option --transform
erwartet eine kommaseparierte Liste der 12 Matrix-Koeffizienten im Row-Major-Format, also von
--transform=m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11
Ein häufiges Anwendungsbeispiel ist das Vertauschen der swap_xy
als Kurzschreibweise
verwendet werden, wie im folgenden Beispiel gezeigt.
-
Linux
-
Windows CMD
./vcdb import citygml [...] my-city.gml \
--transform=swap_xy
vcdb import citygml [...] my-city.gml ^
--transform=swap_xy
Es muss sichergestellt werden, dass die transformierten Koordinaten weiterhin zum CRS der VCDB-Instanz passen. |
Definition von Import-Metadaten
Die Optionen --lineage
, --updating-person
und --reason-for-update
erfassen Metadaten über den Ursprung des Features, die
verantwortliche Person für den Import und den Grund des Imports. Diese Metadaten sind spezifisch für die VCDB und sind nicht
Teil des CityGML-Standards (siehe auch hier). Wenn --updating-person
nicht angegeben wird, wird
standardmäßig der Benutzername verwendet, mit dem die Verbindung zur VCDB-Datenbank hergestellt wurde.
Steuerung des Importprozesses
Der import
Befehl bietet folgende Optionen zur Steuerung des Importprozesses:
-
--fail-fast
: Beendet den Prozess sofort beim Auftreten eines Fehlers. Standardmäßig wird der Import trotz Fehlern beim Import einzelner Features fortgesetzt. -
--temp-dir
: Legt das Verzeichnis für temporäre Dateien während des Imports fest. Für optimale Performance sollte ein schnelles Speichermedium gewählt werden, das nicht zum Lesen der Eingabedateien verwendet wird. -
--threads
: Setzt die Anzahl der Threads für die parallele Prozessierung fest. Eine höhere Anzahl von Threads kann zu einer Performance-Steigerung führen. Standardmäßig entspricht die Anzahl der Threads der Anzahl der für die JVM verfügbaren Prozessoren, mindestens jedoch zwei.
Eine zu hohe Anzahl an Threads kann zu Leistungseinbußen durch Thrashing führen. Außerdem benötigt jeder Thread eine eigene Datenbankverbindung, weshalb sichergestellt werden muss, dass die Datenbank die erforderliche Anzahl von Verbindungen zur Verfügung stellen kann. |