ingo@3661: \section{Fachdatenimport}
ingo@3666:
ingo@3666: Der Fachdatenimporter dient dazu, hydrologische und morphologische Gewässerdaten
ingo@3666: aus dem Dateisystem in die FLYS3-Datenbank zu importieren. Das Werkzeug
ingo@3666: orientiert sich hierbei an der Dateihierachie, so wie sie auch von Desktop-FLYS
ingo@3666: ausgelesen wird. Der Import Vorgang ist in zwei Phasen unterteilt:
ingo@3666:
ingo@3666: \begin{itemize}
ingo@3666: \item Lesen aller Daten eines Gewässers aus dem Dateisystem.
ingo@3666: \item Schreiben der erfolgreich eingelesenen Daten in die Datenbank.
ingo@3666: \end{itemize}
ingo@3666:
ingo@3666: Sollte beim Lese- oder Schreib-Vorgang eines Gewässers ein Fehler auftreten, so
ingo@3666: werden sämtliche Daten des Gewässers verworfen. Beide Phasen zusammen bilden
ingo@3666: somit eine Transaktion.
ingo@3666:
ingo@3666: \textbf{Hinweis}
ingo@3666: \\Der Import geht wie Desktop-FLYS davon aus, dass die Dateien Latin-1 encodiert
ingo@3666: vorliegen!
ingo@3666:
ingo@3666:
ingo@3666: \subsection{Importierte Daten}
ingo@3666: Der Importer importiert folgende Datentypen:
ingo@3666:
ingo@3666: \subsubsection{Streckenfavoriten (*.km-Dateien)}
ingo@3666: Der Import kann mit \textbf{-Dflys.backend.importer.skip.annotations=true}
ingo@3666: unterdrückt werden.
ingo@3666:
ingo@3666: Zur Klassifikation von Streckenfavoriten kann mit
ingo@3666: \textbf{-Dflys.backend.importer.annotation.types=DATEI} der Pfad zu einer
ingo@3666: XML-Datei angegeben werden, in der über Regeln festgelegt wird, wie diese
ingo@3666: geschehen soll. Details hierzu im Anhang 'Klassifikation von Streckenfavoriten'.
ingo@3666:
ingo@3666: \subsubsection{Pegel, Stammdaten (*.glt, *.sta-Dateien)}
ingo@3666: Der Import kann mit \textbf{'-Dflys.backend.importer.skip.gauges=true'}
ingo@3666: unterdrückt werden. Die .glt-Datei, die neben der .wst-Datei liegt, wird zuerst
ingo@3666: ausgelesen. Es werden nur *.sta-Datei von Pegeln geladen, die in der .glt-Datei
ingo@3666: vermerkt sind.
ingo@3666:
ingo@3666: Mittels \textbf{-Dflys.backend.sta.parse.gauge.numbers=true'} wird versucht, die
ingo@3666: offiziellen Pegelnummern aus den Stammdaten zu extrahieren.
ingo@3666: \textbf{Dies ist mit Vorsicht zu behandeln, denn die meisten STA-Dateien
ingo@3666: enthalten invalide Pegelnummern.}
ingo@3666:
ingo@3666: Die System-Property \textbf{flys.backend.main.value.types} kann einen String
ingo@3666: mit gültigen Typen von Stammdaten enthalten. Vorbelegt ist \textbf{QWTD}. In der
ingo@3666: Praxis ist "QWD" eine sinnvolle Belegung.
ingo@3666:
ingo@3666: \subsection{Basis-Wasserstände (gewaesser.wst-Dateien)}
ingo@3666: Der Import kann mit \textbf{-Dflys.backend.importer.skip.wst=true} unterdrückt werden.
ingo@3666:
ingo@3666: \subsection{Zusätzliche Längsschnitte (*.zus, *.wst-Dateien)}
ingo@3666: Der Import kann mit \textbf{-Dflys.backend.importer.skip.extra.wsts=true}
ingo@3666: unterdrückt werden. Es werden die *.zus- und *.wst-Dateien aus dem Verzeichnis
ingo@3666: \textit{../Zus.Längsschnitte} relativ zur gewaesser.wst-Datei betrachtet.
ingo@3666:
ingo@3666: \subsection{Fixierungen (*.wst-Dateien)}
ingo@3666: Der Import kann mit \textbf{-Dflys.backend.importer.skip.fixations=true}
ingo@3666: unterdrückt werden. Es werden die *.wst-Dateien aus dem Verzeichnis
ingo@3666: \textit{../Fixierungen} relativ zur gewaesser.wst-Datei betrachtet.
ingo@3666:
ingo@3666: \subsection{Amtliche Linien (*.wst-Dateien)}
ingo@3666: Der Import kann mit \textbf{-Dflys.backend.importer.skip.official.lines=true}
ingo@3666: unterdrückt werden. Es werden die \textit{Amtl\_Linien.wst}-Dateien aus dem
ingo@3666: Verzeichnis \textit{../Basisdaten} und \textit{../Fixierungen} relativ zur
ingo@3666: gewaesser.wst-Datei betrachtet.
ingo@3666:
ingo@3666: \subsection{Profilspuren (*.prf-Dateien)}
ingo@3666: Der Import kann mit \textbf{-Dflys.backend.importer.skip.prfs=true}
ingo@3666: unterdrückt werden. Es werden rekursiv alle *.prf-Dateien aus \textit{../../..}
ingo@3666: relativ zur gewaesser.wst-Datei betrachtet. Vor dem Import werden mithilfe
ingo@3666: eines Längen- und eines MD5-Summen-Vergleichs inhaltliche Duplikate
ingo@3666: ausgeschlossen.
ingo@3666:
ingo@3666: \subsection{Hydraulische Kennzahlen (*.hyk)}
ingo@3666: Der Import kann mit \textbf{-Dflys.backend.importer.skip.hyks=true} unterdrückt
ingo@3666: werden. Es werden rekursiv alle *.hyk-Dateien aus \textit{../../..} relativ zur
ingo@3666: gewaesser.wst-Datei betrachtet. Vor dem Import werden mithilfe eines Längen- und
ingo@3666: eines MD5-Summen-Vergleichs inhaltliche Duplikate ausgeschlossen.
ingo@3666:
ingo@3666: \subsection{Hochwassermarken (*.zus, *.wst)}
ingo@3666: Der Import kann mit \textbf{-Dflys.backend.importer.skip.flood.water=true}
ingo@3666: unterdrückt werden. Es werden die *.zus- und *.wst-Dateien aus dem Verzeichnis
ingo@3666: \textit{../HW-Marken} relativ zur gewaesser.wst-Datei betrachtet.
ingo@3666:
ingo@3666: \textbf{Hochwasserschutzanlagen (*.zus)}
ingo@3666: Der Import kann mit \textbf{-Dflys.backend.importer.skip.flood.protection=true}
ingo@3666: unterdrückt werden. Es werden die *.zus- und *.wst-Dateien aus dem Verzeichnis
ingo@3666: \textit{../HW-Schutzanlagen} relativ zur gewaesser.wst-Datei betrachtet.
ingo@3666:
ingo@3666: \todo INGO:
ingo@3666:
ingo@3666: flys.backend.importer.skip.bed.height.single
ingo@3666: flys.backend.importer.skip.bed.height.epoch
ingo@3666: flys.backend.importer.skip.sediment.density
ingo@3666: flys.backend.importer.skip.morphological.width
ingo@3666: flys.backend.importer.skip.flow.velocity
ingo@3666: flys.backend.importer.skip.sediment.yield
ingo@3666: flys.backend.importer.skip.waterlevels
ingo@3666: flys.backend.importer.skip.waterlevel.differences
ingo@3666: flys.backend.importer.skip.sq.relation
ingo@3666:
ingo@3666:
ingo@3666: \subsection{Konfiguration}
ingo@3666: \label{configuration}
ingo@3666: \todo
ingo@3666: Zum Starten des Importers ist es notwendig, in der Datei \textit{run.sh} die
ingo@3666: Variablen am Anfang der Datei anzupassen. Im folgenden werden notwendige und
ingo@3666: optionale Einstellungen beschrieben, die beim Starten des Importers
ingo@3666: berücksichtigt werden. Folgende Einstellungen sind zwangsläufig an die
ingo@3666: bestehende Umgebung anzupassen:
ingo@3666:
ingo@3666: \textbf{INFO\_GEW}
ingo@3666: \\Diese Option muss auf eine valide *.gew Datei verweisen (bekannt aus
ingo@3666: Desktop-FLYS). Wichtig für den Importer sind in dieser Datei die Zeilen, die mit
ingo@3666: \textit{WSTDatei:} beginnen. In ihnen wird der Pfad zu der zentralen WST-Datei
ingo@3666: des jeweiligen Gewässers angegeben. Alle anderen importierten Dateien werden in
ingo@3666: ihrer Lage im Dateisystem relativ zur Lage dieser Datei betrachtet.
ingo@3666:
ingo@3666: \textbf{BACKEND\_USER}
ingo@3666: \\Der Nutzername, der zum Verbinden zur Datenbank verwendet werden soll.
ingo@3666:
ingo@3666: \textbf{BACKEND\_PASS}
ingo@3666: \\Das Passwort, welches in Kombination mit \textbf{BACKEND\_USER} zum Verbinden
ingo@3666: zur Datenbank verwendet werden soll.
ingo@3666:
ingo@3666: \textbf{BACKEND\_HOST}
ingo@3666: \\Der Datenbank-Host. In der Regel sollte hier \textit{localhost} eingetragen
ingo@3666: werden, da es empfohlen wird, den Importer auf dem selben Host zu starten, auf
ingo@3666: dem auch die Datenbank läuft.
ingo@3666:
ingo@3666: \textbf{BACKEND\_PORT}
ingo@3666: \\Der Port auf dem die Datenbank zu erreichen ist. Bei einer Oracle XE Instanz
ingo@3666: z.B.: \textit{1521}, sofern nicht anders konfiguriert.
ingo@3666:
ingo@3666: \textbf{BACKEND\_NAME}
ingo@3666: \\Der Name der Datenbank Instanz. Beispielsweise \textit{XE} bei einer Oracle XE
ingo@3666: Instanz.
ingo@3666:
ingo@3666:
ingo@3666: Für die Verbindung zur Datenbank ist es nötig, dem Import die Verbindungsdaten
ingo@3666: zu übergeben. Dies geschieht ebenfalls über System-Properties:
ingo@3666:
ingo@3666: \textbf{BACKEND\_DB\_PREFIX}
ingo@3666: \\Der Präfix zum Aufbau einer Datenbankverbindung. Für Oracle z.B.: \textit{jdbc:oracle:thin:@}.
ingo@3666:
ingo@3666: \textbf{BACKEND\_DB\_DRIVER}
ingo@3666: \\Der Name des JDBC-Treibers, der es erlaubt das Protokoll der Datenbank zu
ingo@3666: sprechen. Im Falle einer Oracle XE wäre dies z.B.: \textit{oracle.jdbc.OracleDriver}.
ingo@3666:
ingo@3666: \textbf{BACKEND\_DB\_DIALECT}
ingo@3666: \\Der Hibernate-Dialekt, den die Datenbank versteht. Im Falle einer Oracle-XE
ingo@3666: wäre dies z.B.: \textit{org.hibernate.dialect.OracleDialect}.
ingo@3666:
ingo@3666:
ingo@3666: Weitere Details zum Verbinden zu einer Oracle Datenbank finden Sie unter
ingo@3666: \href{http://www.orafaq.com/wiki/JDBC}.
ingo@3666:
ingo@3666:
ingo@3666: \textbf{IMPORTER\_MAINVALUE\_TYPES}
ingo@3666: \\Diese Einstellung erlaubt die Angabe eines Textes, der aus den gültigen Typen
ingo@3666: für Hauptwerte zusammengesetzt ist. \textit{QWTD} ist standardmäßig gesetzt.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_ANNOTATION\_TYPES}
ingo@3666: \\Diese Einstellung verweist auf eine Datei (relativ zum Ort der \textit{run.sh}
ingo@3666: im Dateisystem), die die möglichen Typen von Streckenfavoriten und deren Regeln
ingo@3666: definiert. Siehe hierzu auch Kapitel \ref{annotation-types}.
ingo@3666:
ingo@3666:
ingo@3666: Die im folgenden beschriebenen Einstellungen können jeweils die Werte
ingo@3666: \textit{true} oder \textit{false} annehmen und sind optional anzupassen.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_DRY\_RUN}
ingo@3666: \\Falls \textit{true} gesetzt wird, wird der Import nur simuliert. Es werden
ingo@3666: keine Daten in die Datenbank geschrieben. Dies kann z.B.: zum Ermitteln
ingo@3666: potentieller Dateninkonsistenzen sinnvoll sein.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_SKIP\_GAUGES}
ingo@3666: \\Wenn \textit{true} gesetzt ist werden keine Pegel- und Stammdaten bearbeitet.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_SKIP\_ANNOTATIONS}
ingo@3666: \\Wenn \textit{true} gesetzt ist werden keine Streckenfavoriten bearbeitet.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_SKIP\_WST}
ingo@3666: \\Wenn \textit{true} gesetzt ist werden keine WST Dateien bearbeitet.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_SKIP\_PRFS}
ingo@3666: \\Wenn \textit{true} gesetzt ist werden keine Querprofilspuren bearbeitet.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_SKIP\_HYKS}
ingo@3666: \\Wenn \textit{true} gesetzt ist werden keine HYK Dateien bearbeitet.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_SKIP\_EXTRA\_WST}
ingo@3666: \\Wenn \textit{true} gesetzt ist werden keine zusätzlichen Längsschnitte
ingo@3666: bearbeitet.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_SKIP\_FIXATIONS}
ingo@3666: \\Wenn \textit{true} gesetzt ist werden keine Fixierungen bearbeitet.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_SKIP\_OFFICIAL\_LINES}
ingo@3666: \\Wenn \textit{true} gesetzt ist werden keine offiziellen Linien bearbeitet.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_SKIP\_FLOOD\_WATER}
ingo@3666: \\Wenn \textit{true} gesetzt ist werden keine Hochwassermarken bearbeitet.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_SKIP\_FLOOD\_PROTECTION}
ingo@3666: \\Wenn \textit{true} gesetzt ist werden keine Hochwasserschutzanlagen
ingo@3666: bearbeitet.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_SKIP\_BED\_HEIGHT\_SINGLE}
ingo@3666: \\Wenn \textit{true} gesetzt ist werden keine mittleren Sohlhöhen (Peilungen) bearbeitet.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_SKIP\_BED\_HEIGHT\_EPOCH}
ingo@3666: \\Wenn \textit{true} gesetzt ist werden keine mittleren Sohlhöhen (Epochen)
ingo@3666: bearbeitet.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_SKIP\_SEDIMENT\_DENSITY}
ingo@3666: \\Wenn \textit{true} gesetzt ist werden keine Dateien zur Sedimentdichte
ingo@3666: bearbeitet.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_SKIP\_MORPHOLOGICAL\_WIDTH}
ingo@3666: \\Wenn \textit{true} gesetzt ist wird keine morphologische Breite bearbeitet.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_SKIP\_FLOW\_VELOCITY}
ingo@3666: \\Wenn \textit{true} gesetzt ist werden keine Fließgeschwindigkeiten bearbeitet.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_SKIP\_SEDIMENT\_YIELD}
ingo@3666: \\Wenn \textit{true} gesetzt ist werden keine Sedimentfrachten bearbeitet.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_SKIP\_WATERLEVELS}
ingo@3666: \\Wenn \textit{true} gesetzt ist werden keine Sohlhöhen bearbeitet.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_SKIP\_WATERLEVEL\_DIFFERENCES}
ingo@3666: \\Wenn \textit{true} gesetzt ist werden keine Sohlhöhendifferenzen bearbeitet.
ingo@3666:
ingo@3666: \textbf{IMPORTER\_SKIP\_SQ\_RELATION}
ingo@3666: \\Wenn \textit{true} gesetzt ist werden keine Daten für die Berechnungsart
ingo@3666: SQ-Beziehung bearbeitet.
ingo@3666:
ingo@3666:
ingo@3666: \subsection{Klassifikation von Streckenfavoriten}
ingo@3666: \label{annotation-types}
ingo@3666: Streckenfavoriten werden aus KM-Dateien importiert. Um die einzelnen Einträge
ingo@3666: eine Kategorie (Brücken, Pegel, etc.) zuzuordnen, kann eine XML angegeben werden,
ingo@3666: in der Regeln für diese Klassifikation definiert werden. Schematisch gliedert
ingo@3666: sich diese Datei in die zwei Bereiche 'types' und 'patterns':
ingo@3666:
ingo@3666: \begin{lstlisting}
ingo@3666:
ingo@3666:
ingo@3666: ...
ingo@3666: ...
ingo@3666: ...
ingo@3666:
ingo@3666:
ingo@3666: ...
ingo@3666: ...
ingo@3666: ...
ingo@3666:
ingo@3666:
ingo@3666: \end{lstlisting}
ingo@3666:
ingo@3666: In der Sektion 'types' werden die Kategorien vereinbart, in die klassifiziert
ingo@3666: werden sollen. Die geschieht mit einzelnen
ingo@3666:
ingo@3666: \begin{lstlisting}
ingo@3666:
ingo@3666:
ingo@3666: ...
ingo@3666:
ingo@3666: \end{lstlisting}
ingo@3666:
ingo@3666: Das Attribut 'default' kann einmal vergeben werden und besagt, dass diese
ingo@3666: Kategorie gewählt werden soll, wenn keine andere Kategorie zugeordnet werden kann.
ingo@3666:
ingo@3666: In der Sektion 'patterns' werden dann die Regel definiert, die einzelne Einträge
ingo@3666: den zuvor definierten Kategorien zuordnet. Hierfür können zwei Arten von
ingo@3666: Definitionen angegeben werden:
ingo@3666:
ingo@3666: \begin{lstlisting}
ingo@3666:
ingo@3666: \end{lstlisting}
ingo@3666:
ingo@3666: oder
ingo@3666:
ingo@3666: \begin{lstlisting}
ingo@3666:
ingo@3666: \end{lstlisting}
ingo@3666:
ingo@3666: Die erste Variante bestimmt die Kategorie, die pro KM-Datei gelten soll.
ingo@3666: \textit{pattern} ist hierbei ein regulärer Ausdruck, der auf den Dateinamen
ingo@3666: angewandt wird. Passt der Name der Datei auf den regulären Ausdruck, wird
ingo@3666: \textit{type} als Vorgabe angenommen. Treffen mehrere -Regeln zu, wird
ingo@3666: der erste Treffer angewandt. Findet keine der -Regeln Anwendung, wird
ingo@3666: die Kategorie ausgewählt, die in der -Section das Attribut
ingo@3666: \textit{default} gesetzt hat.
ingo@3666:
ingo@3666: Die zweite Regel-Variante wird auf jeden Eintrag innerhalb einer KM-Datei
ingo@3666: auf den Bezeichner der Streckenfavoriten angewandt. Als Muster dient auch hier
ingo@3666: ein regulärer Ausdruck, der über das Attribut \textit{pattern} definiert wird.
ingo@3666: Die Kategorie wird in Trefferfall über das Attribut \textit{type} bestimmt.
ingo@3666: Treffen mehrere Regeln zu, wird die Kategorie gewählt, die zum ersten Treffer
ingo@3666: gehört. Trifft keine Regel zu wird der Eintrag der Kategorie zugeteilt, die für
ingo@3666: die beinhaltende Datei als Vorgabe gilt.
ingo@3666:
ingo@3666:
ingo@3666: \subsection{Fehler und Warnungen}
ingo@3666:
ingo@3666: \subsubsection{Fehler}
ingo@3666:
ingo@3666: \textbf{error while parsing gew}
ingo@3666: \\Die GEW-Datei ist fehlerhaft oder konnte nicht geöffnet werden.
ingo@3666:
ingo@3666: \textbf{File 'XYZ' is broken!}
ingo@3666: \\Die Datei XYZ ist inkonsistent und führt zu Fehlern.
ingo@3666:
ingo@3666: \textbf{Error while parsing file for morph. width.}
ingo@3666: \\Beim Lesen der morphologischen Breite trat ein Fehler auf.
ingo@3666:
ingo@3666: \textbf{Error while storing flow velocity model.}
ingo@3666: \\Beim Schreiben eines Fliessgeschwindigkeitsmodells trat ein Fehler auf.
ingo@3666:
ingo@3666: \textbf{Error while storing flow velocity measurement.}
ingo@3666: \\Beim Schreiben einer Fliessgeschwindigkeitsmessung trat ein Fehler auf.
ingo@3666:
ingo@3666: \textbf{Error while storing sediment yield.}
ingo@3666: \\Beim Schreiben einer Sedimentablagerung trat ein Fehler auf.
ingo@3666:
ingo@3666: \textbf{Error while storing waterlevel diff.}
ingo@3666: \\Beim Schreiben einer Wassspiegeldifferenz trat ein Fehler auf.
ingo@3666:
ingo@3666: \textbf{Error while storing sq relation.}
ingo@3666: \\Beim Schreiben einer S(Q) Beziehung trat ein Fehler auf.
ingo@3666:
ingo@3666: \textbf{Error reading PRF file.}
ingo@3666: \\Beim Lesen einer PRF-Datei trat ein Fehler auf.
ingo@3666:
ingo@3666: \textbf{Error closing PRF file.}
ingo@3666: \\Beim Schliessen einer PRF-Datei trat ein Fehler auf.
ingo@3666:
ingo@3666: \textbf{HYK 1: not enough elements in line \#}
ingo@3666: \\Eine Zeile in einer HYK-Datei hat nicht genügend Elemente.
ingo@3666:
ingo@3666: \textbf{HYK 2: not enough elements in line \#}
ingo@3666: \\Eine Zeile in einer HYK-Datei hat nicht genügend Elemente.
ingo@3666:
ingo@3666: \textbf{HYK 5: not enough elements in line \#}
ingo@3666: \\Eine Zeile in einer HYK-Datei hat nicht genügend Elemente.
ingo@3666:
ingo@3666: \textbf{HYK 6: not enough elements in line \#}
ingo@3666: \\Eine Zeile in einer HYK-Datei hat nicht genügend Elemente.
ingo@3666:
ingo@3666: \textbf{HYK: parsing num zones, bottom or top height failed in line \#}
ingo@3666: \\Die Anzahl der Zonen oder Daten über die Zonen sind nicht korrekt.
ingo@3666:
ingo@3666: \textbf{HYK: HYK: number of flow zones mismatches in line \#}
ingo@3666: \\Die Anzahl der Zonen oder Daten über die Zonen sind nicht korrekt.
ingo@3666:
ingo@3666: \textbf{HYK: cannot parse number in line \#}
ingo@3666: \\Eine Zahl wurde erwartet.
ingo@3666:
ingo@3666: \textbf{HYK: Error reading file.}
ingo@3666: \\Beim Lesen einer HYK-Datei trat ein Fehler auf.
ingo@3666:
ingo@3666: \textbf{HYK: Error closing file.}
ingo@3666: \\Beim Schliessen einer HYK-Datei trat ein Fehler auf.
ingo@3666:
ingo@3666: \subsubsection{Warnungen}
ingo@3666: \textbf{annotation type file 'XYZ' is not readable.}
ingo@3666: \\Die Datein XYZ kann nicht gelesen werden.
ingo@3666:
ingo@3666: \textbf{cannot parse annotation types file.}
ingo@3666: \\Während der Verarbeitung der Annotationsdatei ist Fehler aufgetreten.
ingo@3666:
ingo@3666: \textbf{Cannot read directory.}
ingo@3666: \\Verzeichnis konnte nicht gelesen werden.
ingo@3666:
ingo@3666: \textbf{no official lines wst file found}
ingo@3666: \\Keine Datei mit amtlichen Linien gefunden.
ingo@3666:
ingo@3666: \textbf{cannot read fixations wst file directory}
ingo@3666: \\Das Verzeichnis mit den Fixierungen kann nicht gelesen werden.
ingo@3666:
ingo@3666: \textbf{cannot read extra longitudinal wst file directory}
ingo@3666: \\Das Verzeichnis mit den zusätzlichen Längsschnitten kann nicht gelesen werden.
ingo@3666:
ingo@3666: \textbf{cannot read gauges from 'XYZ'}
ingo@3666: \\Die Pegelgültigkeiten können nicht gelesen werden.
ingo@3666:
ingo@3666: \textbf{HYK file 'XYZ' seems to be a duplicate.}
ingo@3666: \\Die HYK-Datei wurde unter anderem Namen aber gleichen Inhalts bereits
ingo@3666: gefunden.
ingo@3666:
ingo@3666: \textbf{PRF file 'XYZ' seems to be a duplicate.}
ingo@3666: \\Die PRF-Datei wurde unter anderem Namen aber mit gleichem Inhalt bereits
ingo@3666: gefunden.
ingo@3666:
ingo@3666: \textbf{Skip invalid SedimentYield: time interval or unit null!}
ingo@3666: \\Eine Sedimentablagerung ist ungültig und wurde ausgelassen.
ingo@3666:
ingo@3666: \textbf{skip flow velocity model: No discharge zone specified.}
ingo@3666: \\Da kein Abflussbereich angegeben wurde, wurde das Fließgeschwindigkeitsmodell ausgelassen.
ingo@3666:
ingo@3666: \textbf{skip invalid waterlevel - no unit set!}
ingo@3666: \\Ein einheitenloser Wasserstand wurde ausgelassen.
ingo@3666:
ingo@3666: \textbf{Cannot parse time range.}
ingo@3666: \\Das Zeitformat wurde nicht erkannt.
ingo@3666:
ingo@3666: \textbf{skip invalid data line \#}
ingo@3666: \\Ungültige Datenzeile wurde ausgelassen.
ingo@3666:
ingo@3666: \textbf{Error while parsing sq relation row \#}
ingo@3666: \\Eine Zeile in der S(Q)-Beziehung ist ungültig.
ingo@3666:
ingo@3666: \textbf{GLT: no gauge found in line \#}
ingo@3666: \\In der GLT-Datei wurde ein Pegel erwartet, aber nicht gefunden.
ingo@3666:
ingo@3666: \textbf{GLT: line \# has not enough columns.}
ingo@3666: \\Eine Zeile in der Pegelgültigkeitsdatei hat nicht genug spalten.
ingo@3666:
ingo@3666: \textbf{Error while parsing flow velocity values.}
ingo@3666: \\Invalide Datenzeile in einer Datei mit einer Fliessgeschwindigkeitsmessung.
ingo@3666:
ingo@3666: \textbf{skip invalid data line: \#}
ingo@3666: \\Invalide Datenzeile in einer Datei mit einer Fliessgeschwindigkeitsmessung.
ingo@3666:
ingo@3666: \textbf{skip invalid waterlevel line: \#}
ingo@3666: \\Invalide Datenzeile in einer Datei mit Wasserstandsdifferenzen.
ingo@3666:
ingo@3666: \textbf{Error while parsing value: \#}
ingo@3666: \\Invalide Datenzeile in einer Datei mit Wasserstandsdifferenzen.
ingo@3666:
ingo@3666: \textbf{Error while parsing station: \#}
ingo@3666: \\Invalide Datenzeile in einer Datei mit Wasserstandsdifferenzen.
ingo@3666:
ingo@3666: \textbf{skip invalid MainValue part: \#}
ingo@3666: \\Invalide Datenzeile in einer Datei Fließgeschwindigkeitsmodellen.
ingo@3666:
ingo@3666: \textbf{skip invalid gauge part: \#}
ingo@3666: \\Invalide Datenzeile in einer Datei Fließgeschwindigkeitsmodellen.
ingo@3666:
ingo@3666: \textbf{Error while parsing Q value: }
ingo@3666: \\Invalide Datenzeile in einer Datei Fließgeschwindigkeitsmodellen.
ingo@3666:
ingo@3666: \textbf{skip invalid data line: \#}
ingo@3666: \\Invalide Datenzeile in einer Datei Fließgeschwindigkeitsmodellen.
ingo@3666:
ingo@3666: \textbf{Error while parsing flow velocity values.}
ingo@3666: \\Invalide Datenzeile in einer Datei Fließgeschwindigkeitsmodellen.
ingo@3666:
ingo@3666: \textbf{Error while parsing number from data row: \#}
ingo@3666: \todo INGO
ingo@3666:
ingo@3666: \textbf{Unknown meta line: \#}
ingo@3666: \\Invalide Datenzeile in einer Datei mit Sedimentdichten.
ingo@3666:
ingo@3666: \textbf{Error while parsing numbers in: \#}
ingo@3666: \\Invalide Datenzeile in einer Datei mit Sedimentdichten.
ingo@3666:
ingo@3666: \textbf{skip invalid data line: \#}
ingo@3666: \\Invalide Datenzeile in einer Datei mit Sedimentdichten.
ingo@3666:
ingo@3666: \textbf{Error while parsing numbers in \#}
ingo@3666: \\Invalide Datenzeile in einer Datei mit Sedimentdichten.
ingo@3666:
ingo@3666: \textbf{STA file is empty}
ingo@3666: \\Stammdatendatei ist leer oder hat zu wenige Zeilen.
ingo@3666:
ingo@3666: \textbf{STA file has not enough lines}
ingo@3666: \\Stammdatendatei ist leer oder hat zu wenige Zeilen.
ingo@3666:
ingo@3666: \textbf{STA file is too short}
ingo@3666: \\Stammdatendatei ist leer oder hat zu wenige Zeilen.
ingo@3666:
ingo@3666: \textbf{First line in STA file is too short.}
ingo@3666: \\Die erste Zeile der Stammdaten ist zu kurz.
ingo@3666:
ingo@3666: \textbf{STA: second line is too short}
ingo@3666: \\Die zweite Zeile ist zu kurz.
ingo@3666:
ingo@3666: \textbf{STA: parsing of the datum of the gauge failed}
ingo@3666: \\Das Datum in der Stammdatendatei konnte nicht gelesen werden.
ingo@3666:
ingo@3666: \textbf{STA: 'XYZ' is not a valid long number.}
ingo@3666: \\Die Pegelnummer ist invalide.
ingo@3666:
ingo@3666: \textbf{STA: Not enough columns for aeo and datum}
ingo@3666: \\AEO und Pegelnullpunkt können nicht ermittelt werden.
ingo@3666:
ingo@3666: \textbf{STA: cannot parse aeo or datum.}
ingo@3666: \\AEO oder Pegelnullpunkt sind invalide.
ingo@3666:
ingo@3666: \textbf{STA: value not parseable in line \#}
ingo@3666: \\Wert ist nicht als Zahl zu interpretieren.
ingo@3666:
ingo@3666: \textbf{PRF: cannot open file }
ingo@3666: \\Die PRF kann nicht geöffnet werden.
ingo@3666:
ingo@3666: \textbf{PRF: file is empty}
ingo@3666: \textbf{PRF: First line does not look like a PRF data pattern.}
ingo@3666: \textbf{PRF: premature EOF. Expected integer in line 2}
ingo@3666: \textbf{PRF: Expected in line 2}
ingo@3666: \textbf{PRF: invalid integer in line 2}
ingo@3666: \textbf{PRF: premature EOF. Expected pattern for km extraction}
ingo@3666: \textbf{PRF: line 4 does not look like a PRF km extraction pattern.}
ingo@3666: \textbf{PRF: premature EOF. Expected skip row count.}
ingo@3666: \textbf{PRF: line 5 is not an positive integer.}
ingo@3666: \textbf{PRF: cannot extract km in line \#}
ingo@3666: \\Das PRF-Format ist komplex. Hier sollten weitere Information zur genaueren
ingo@3666: Analyse herangezogen werden.
ingo@3666:
ingo@3666: \textbf{cannot access WST file }
ingo@3666: \\Die WST-Datei konnte nicht gefunden werden.
ingo@3666:
ingo@3666: \textbf{Found an invalid row in the AT file.}
ingo@3666: \\Eine Zeile in einer AT-Datei ist nicht korrekt.
ingo@3666:
ingo@3666: \textbf{AT: invalid number }
ingo@3666: \\Eine Zahl wurde erwartet aber nicht gefunden.
ingo@3666:
ingo@3666: \textbf{Try to add Q range without waterlevel!}
ingo@3666: \\Q-Bereich ohne Wasserstand gefunden.
ingo@3666:
ingo@3666: \textbf{Error while parsing Q range: \#}
ingo@3666: \\Invalider Q-Bereich
ingo@3666:
ingo@3666: \textbf{skip invalid waterlevel line: \#}
ingo@3666: \\Ungültige Wasserstandslinie
ingo@3666:
ingo@3666: \textbf{Error while parsing number values: \#}
ingo@3666: \\Ungültige Zahlenwerte.
ingo@3666:
ingo@3666: \textbf{ANN: not enough columns in line \#}
ingo@3666: \\Nicht genug Zeichenspalten in KM-Datei
ingo@3666:
ingo@3666: \textbf{ANN: invalid number in line \#}
ingo@3666: \\Ungültige Zahl.
ingo@3666:
ingo@3666: \textbf{ANN: cannot parse 'Unterkante' in line \#}
ingo@3666: \\Die Unterkante in einer KM-Datei konnte nicht gelesen werden.
ingo@3666:
ingo@3666: \textbf{ANN: cannot parse 'Unterkante' or 'Oberkante' in line \#}
ingo@3666: \\Unter- oder Oberkannte liegen in einem falschen Format vor.
ingo@3666:
ingo@3666: \textbf{ANN: duplicated annotation 'XYZ' in line \#}
ingo@3666: \\Ein Duplikat eines Streckenfavoriten wurde gefunden.
ingo@3666:
ingo@3666: \textbf{ANN: 'XYZ' is not a directory.}
ingo@3666: \\Unterverzeichnis konnte nicht geöffnet werden.
ingo@3666:
ingo@3666: \textbf{ANN: cannot list directory 'XYZ'}
ingo@3666: \\Unterverzeichnis konnte nicht durchsucht werden.
ingo@3666:
ingo@3666: \textbf{BHP: Meta line did not match any known type: \#}
ingo@3666: \\Unbekannter Typ.
ingo@3666:
ingo@3666: \textbf{BHP: Error while parsing timeinterval!}
ingo@3666: \\Ungültiges Zeitinterval.
ingo@3666:
ingo@3666: \textbf{BHP: Error while parsing year!}
ingo@3666: \\Ungültige Jahresangabe.
ingo@3666:
ingo@3666: \textbf{BHP: Error while parsing sounding width!}
ingo@3666: \\Unbekannte Peilungsbreite.
ingo@3666:
ingo@3666: \textbf{BHP: Error while parsing range!}
ingo@3666: \\Bereichsangabe fehlerhaft.
ingo@3666:
ingo@3666: \textbf{MWP: Unknown meta line: \#}
ingo@3666: \\Meta-Informationen ungültig.
ingo@3666:
ingo@3666: \textbf{MWP: skip invalid data line: \#}
ingo@3666: \\Ungültige Datenzeile wurde übersprungen.
ingo@3666:
ingo@3666: \textbf{MWP: Error while parsing numbers in \#}
ingo@3666: \\Falsche Zahlenformat.
ingo@3666:
ingo@3666: \textbf{ANNCLASS: rule has no name}
ingo@3666: \\Klassifizierungsregel für Streckenfavoriten hat keinen Namen.
ingo@3666:
ingo@3666: \textbf{ANNCLASS: pattern has no 'pattern' attribute.}
ingo@3666: \\Klassifizierungsmuster für Streckenfavoriten hat kein Muster.
ingo@3666:
ingo@3666: \textbf{ANNCLASS: pattern has unknown type 'XYZ'}
ingo@3666: \\Klassifizierungsmuster für Streckenfavoriten konnte keinem Typ zugeordnet werden.
ingo@3666:
ingo@3666: \textbf{ANNCLASS: pattern 'XYZ' is invalid.}
ingo@3666: \\Klassifizierungsmuster für Streckenfavoriten ist ungültig.
ingo@3666:
ingo@3666: \textbf{BSP: Error while parsing data row.}
ingo@3666: \\Ungültige Datenzeile.
ingo@3666:
ingo@3666: \textbf{SYP: Unknown meta line: \#}
ingo@3666: \\Ungültige Metadatenzeile.
ingo@3666:
ingo@3666: \textbf{SYP: skip invalid data line \#}
ingo@3666: \\Ungültige Datenzeile wurde übersprungen.
ingo@3666:
ingo@3666: \textbf{SYP: Error while parsing numbers in \#}
ingo@3666: \\Ungültige Zahlenformatierung.
ingo@3666:
ingo@3666: \textbf{SYP: Unknown time interval string }
ingo@3666: \\Falsches Datumformat.
ingo@3666:
ingo@3666: \textbf{SYP: Error while parsing years }
ingo@3666: \\Falsches Jahreszahlformat.
ingo@3666:
ingo@3666: \textbf{SYP: Error while parsing ranges of }
ingo@3666: \\Bereichsangaben fehlerhaft.
ingo@3666:
ingo@3666: \textbf{SYP: Unknown grain fraction }
ingo@3666: \\Unbekannte Kornfraktion.
ingo@3666:
ingo@3666: \textbf{WST: invalid number.}
ingo@3666: \\Ungültige Zahl.
ingo@3666:
ingo@3666: \textbf{WST: km () found more than once. -> ignored.}
ingo@3666: \\Ein Kilometer ist doppelt in einer WST-Datei enthalten.
ingo@3666:
ingo@3666: \textbf{HYK: zone coordinates swapped in line \#}
ingo@3666: \\Fließzonenkordinaten wurden in umgekehrter Reihenfolge angeben.
ingo@3666:
ingo@3666: \textbf{BHS: Skip invalid file 'XYZ'}
ingo@3666: \\Die Inhalte der Datei sind ungültig.
ingo@3666:
ingo@3666: \textbf{ISQ: Unable to store sq relation value.}
ingo@3666: \\S(Q) Beziehung konnte nicht gespeichert werden.
ingo@3666:
ingo@3666: \textbf{ISQ: Cannot determine sq relation without time interval.}
ingo@3666: \\Einer S(Q)-Beziehung ist keine zeitliche Gültigkeit zugeordnet.
ingo@3666:
ingo@3666: \textbf{IWD: skip invalid waterlevel difference - no unit set!}
ingo@3666: \\Wasserstandsdifferenz hat keine Einheit.
ingo@3666:
ingo@3666: \textbf{BHE: Skip file - invalid current elevation model.}
ingo@3666: \\Höhenmodell ungültig.
ingo@3666:
ingo@3666: \textbf{BHE: Skip file - invalid time range.}
ingo@3666: \\Zeitbereich ungültig.
ingo@3666:
ingo@3666: \textbf{BHE: Skip file - invalid km range.}
ingo@3666: \\Kilometerbereich ungültig.
ingo@3666:
ingo@3666:
ingo@3666: \subsection{Hinweise zum Betrieb}
ingo@3666: Aufgrund des hohen Speicherverbrauchs des Importers wird empfohlen, der JVM
ingo@3666: mindestens 8 GiB Hauptspeicher zuzuordnen. Dies kann beim Starten des Java
ingo@3666: Prozesses mittels folgendem Parameter '-Xmx8192m' getan werden. Das
ingo@3666: Shellskript zum Starten des Importers setzt diesen Wert standardmäßig.
ingo@3666: Besonders speicherintensiv ist der Import der HYKs und der PRFs.
ingo@3666: Hier ist es unter Umständen empfehlenswert, diese in zwei oder drei
ingo@3666: Schritten zu importieren. Zuerst die sonstigen hydrologischen Daten importieren;
ingo@3666: anschließend einen Import-Vorgang ausschließlich für HYKs starten; anschließend
ingo@3666: einen Import-Vorgang für PRFs starten. Siehe Kapitel \ref{configuration} für
ingo@3666: weitere Informationen zum Aktivieren/Deaktivieren einzelner Dateitypen beim
ingo@3666: Import.
ingo@3666:
ingo@3666:
ingo@3666: \subsection{Starten des Fachdaten Importers}
ingo@3666: Der Fachdaten Importer wird mit Hilfe eines Shellskripts von einer Konsole
ingo@3666: gestartet. Dazu wechseln Sie auf der Konsole in das Verzeichnis \todo und führen
ingo@3666: folgenden Befehl aus:\\
ingo@3666:
ingo@3666: \begin{lstlisting}
ingo@3666: sh contrib/run.sh
ingo@3666: \end{lstlisting}