view backend/doc/documentation/de/importer-hydr-morph.tex @ 9358:8eddc2393750

Fixed: S-Info flood duration Q-D interpolation for non monotonous Q values, NaN instead of -1 in error cases
author mschaefer
date Wed, 01 Aug 2018 13:20:38 +0200
parents 0c4bdf00f94f
children b880a8adc2b2
line wrap: on
line source
\section{Fachdatenimport}

Der Fachdatenimporter dient dazu, hydrologische und morphologische Gew�sserdaten
aus dem Dateisystem in die FLYS3-Datenbank zu importieren. Das Werkzeug
orientiert sich hierbei an der Dateihierachie, so wie sie auch von Desktop-FLYS
ausgelesen wird. Der Import Vorgang ist in zwei Phasen unterteilt:

\begin{itemize}
    \item Lesen aller Daten eines Gew�ssers aus dem Dateisystem.
    \item Schreiben der erfolgreich eingelesenen Daten in die Datenbank.
\end{itemize}

Beim Import wird versucht, Datens�tze nicht zu importieren,
die bereits in der Datenbank vorhanden sind.
Dies kann aber nicht immer eindeutig bestimmt werden,
so dass vor dem Import ge�nderter Daten
ein L�schen der entsprechenden Datens�tze in der Datenbank notwendig sein kann,
da sonst m�glicherweise aus fachlicher Sicht Duplikate in der Datenbank vorhanden sind,
ge�nderte Daten nicht importiert werden
oder es zu unerwarteten Fehlern kommt.

Sollte beim Lese- oder Schreib-Vorgang eines Gew�ssers ein Fehler auftreten, so
werden s�mtliche Daten des Gew�ssers verworfen. Beide Phasen zusammen bilden
somit eine Transaktion.

\textbf{Hinweis}
\\Der Import geht, wie auch Desktop-FLYS, davon aus, dass die Dateien Latin-1
encodiert vorliegen! Stellen Sie also sicher, dass das von Ihnen verwendete
Encoding korrekt ist. Andernfalls ist es m�glich, dass es w�hrend des Imports zu
unerwarteten Problemen kommt.

Der Importer ist ein in Java geschriebenes Werkzeug und kann von der Konsole aus
gestartet werden. S�mtlich Konfigurationen k�nnen �ber sogenannte
\textit{System-Properties} �bergeben werden. Eine \textit{System-Property} wird
dabei mittels \textit{-Dkey=value} beim Start �bergeben. Im folgenden Beispiel
w�rde der Importer mit einer Konfiguration \textit{flys.backend.importer.dry.run},
welche den Wert \textit{true} gesetzt hat, gestartet.

\begin{lstlisting}
    java -Dflys.backend.importer.dry.run=true de.intevation.flys.importer.Importer
\end{lstlisting}

Auf gleiche Weise k�nnen dem Importer s�mtliche Optionen zur Konfiguration
beim Start mitgegeben werden. Im Folgenden werden die m�glichen \textit{System-Properties} und
ihre Auswirkung auf den Import genauer beschrieben. In den Kapiteln
\ref{configuration} und \ref{start-hydr} wird zur Einfachheit jedoch ein
Shellskript verwendet, das eine Standardkonfiguration vorgibt und den Importer
mit allen erforderlichen Konfigurationen startet.


\subsection{Importierte Daten}
\label{import_data}
In diesem Kapitel werden die verschiedenen Daten aufgelistet und erl�utert, wie sie vom
Importer eingelesen werden.

\subsubsection{Wasserstandsmodell-Stammdaten und H�henreferenz (Basis-*.wst-Datei)}
Mit \textbf{-Dflys.backend.importer.skip.wst=true} kann der
der Import von Wasserst�nden der Basis-*.wst-Datei unterdr�ckt werden.
Aus der Basis-*.wst-Datei wird auch die H�henreferenz und -einheit
des Gew�ssers ausgelesen (z.B. 'NN + m'),
sowie die Flie�richtung des Gew�ssers relativ zur Stationierung ermittelt.
Der Import dieser Informationen in die Datenbank wird daher ebenfalls durch
diese Option unterdr�ckt.
Da es sich hierbei um Gew�sser-Stammdaten handelt,
kann diese Option erst genutzt werden, wenn sich das Gew�sser bereits
in der Datenbank befindet.

\subsubsection{Pegel-Stammdaten (PEGEL.GLT, *.at und *.sta-Dateien)}
Der Import von Pegel- und Stammdaten kann mit \textbf{'-Dflys.backend.importer.skip.gauges=true'}
unterdr�ckt werden. Die PEGEL.GLT-Datei, die neben der Basis-*.wst-Datei liegt, wird zuerst
ausgelesen. Es werden nur Stammdaten von Pegeln geladen, die in der PEGEL.GLT-Datei
vermerkt sind.

Die System-Property \textbf{flys.backend.main.value.types} kann einen String
mit g�ltigen Typen von Stammdaten enthalten. Vorbelegt ist \textit{QWTD-}.

\subsubsection{Streckenfavoriten (*.km-Dateien)}
Der Import der Streckenfavoriten kann mit \textbf{-Dflys.backend.importer.skip.annotations=true}
unterdr�ckt werden.
Ausgehend vom Verzeichnis \textit{./Hydrologie} des Gew�ssers
werden die Verzeichnisse \textit{./Basisdaten}, \textit{./Streckendaten}
und \textit{../Morphologie/Streckendaten} nach *.km-Dateien durchsucht.

Zur Klassifikation von Streckenfavoriten muss mittels\\
\textbf{-Dflys.backend.importer.annotation.types=DATEI} der Pfad zu einer
XML-Datei angegeben werden. In dieser Datei werden die Typen und Regeln
festgelegt, anhand derer die Klassifikation w�hrend des Import-Vorgangs
vorgenommen wird. Details hierzu befinden sich im Kapitel \ref{annotation-types}.

\subsubsection{Bundeswasserstra�en-IDs}
Der Import und die Zuweisung der Bundeswasserstra�en-IDs kann unterbunden werden
mit \textbf{-Dflys.backend.importer.skip.bwastr=true}.
Beim Import wird davon ausgegangen, dass sich die Datei \textbf{BWASTR\_ID.csv}
neben der oder den zu importierenden gew-Dateien befindet.

\subsubsection{Historische Abflusstafeln (*.at-Dateien)}
Mit \textbf{'-Dflys.backend.importer.skip.historical.discharge.tables=true'}
kann der Import von historischen Abflusstafeln
unterdr�ckt werden. Diese Flagge wird nur ausgewertet, wenn �berhaupt
Pegel-Daten (siehe oben) importiert werden.

% Mittels \textbf{-Dflys.backend.sta.parse.gauge.numbers=true} wird versucht, die
% offiziellen Pegelnummern aus den Stammdaten zu extrahieren.
% \textbf{Dies ist mit Vorsicht zu behandeln, denn die meisten STA-Dateien
% enthalten invalide Pegelnummern.}

\subsubsection{Zus�tzliche L�ngsschnitte (*.zus, *.wst-Dateien)}
Mit \textbf{-Dflys.backend.importer.skip.extra.wsts=true} kann
der Import von zus�tzlichen L�ngs\-schnitten
unterdr�ckt werden. Es werden die *.zus- und *.wst-Dateien aus dem Verzeichnis
\textit{../Zus.Laengsschnitte} relativ zur
\textit{gewaesser}.wst-Datei betrachtet.

\subsubsection{Fixierungen (*.wst-Dateien)}
Der Import von Fixierungen kann mit \textbf{-Dflys.backend.importer.skip.fixations=true}
unterdr�ckt werden. Es werden die *.wst-Dateien aus
\textit{../Fixierungen} relativ zur \textit{gewaesser}.wst-Datei betrachtet.

\subsubsection{Amtliche Linien (*.wst-Dateien)}
Der Import von amtlichen Linien kann mit \textbf{-Dflys.backend.importer.skip.official.lines=true}
unterdr�ckt werden. Es werden die \textit{Amtl\_Linien.wst}-Dateien aus dem
Verzeichnis \textit{../Basisdaten} und \textit{../Fixierungen} relativ zur
\textit{gewaesser.wst}-Datei betrachtet.

F�r die Zuordnung zu den Hauptwerten wird zudem die Datei
\textit{Amtl\_Linien.config} ben�tigt.

\subsubsection{Profilspuren (*.prf-Dateien)}
Der Import von Profilspuren kann mit \textbf{-Dflys.backend.importer.skip.prfs=true}
unterdr�ckt werden. Es werden rekursiv alle *.prf-Dateien aus \textit{../../..}
relativ zur gewaesser.wst-Datei betrachtet.

Vor dem Import von Profilspuren werden mit Hilfe
eines L�ngen- und eines MD5-Summen-Vergleichs inhaltliche Duplikate
ausgeschlossen.

\subsubsection{Profilspuren (*.w80-Dateien)}
Der Import von W80-Profilspuren kann mit \textbf{-Dflys.backend.importer.skip.w80s=true}
unterdr�ckt werden. Es werden rekursiv alle *.w80-Dateien aus \textit{../../..}
relativ zur \textit{gewaesser}.wst-Datei betrachtet.

\subsubsection{Profilspuren (*.d50-Dateien)}
Der Import von D50-Profilspuren kann mit \textbf{-Dflys.backend.importer.skip.da50s=true}
unterdr�ckt werden. Es werden rekursiv alle *.d50-Dateien aus \textit{../../..}
relativ zur \textit{gewaesser}.wst-Datei betrachtet.

\subsubsection{Profilspuren (*.d66-Dateien)}
Der Import von D66-Profilspuren kann mit \textbf{-Dflys.backend.importer.skip.da66s=true}
unterdr�ckt werden. Es werden rekursiv alle *.d66-Dateien aus \textit{../../..}
relativ zur \textit{gewaesser}.wst-Datei betrachtet.

\subsubsection{Profilspuren (*.csv-Dateien)}
Der Import von CSV-Profilspuren kann mit
\textbf{-Dflys.backend.importer.skip.w80.csvs=true}
unterdr�ckt werden.
Es werden rekursiv alle *.csv-Dateien aus
\textit{./Geodaesie/Querprofile/QP-Daten} im Verzeichnis des
Gew�ssers betrachtet.

\subsubsection{Hydraulische Kennzahlen (*.hyk)}
Der Import von hydraulischen Kennzahlen kann mit \textbf{-Dflys.backend.importer.skip.hyks=true} unterdr�ckt
werden. Es werden rekursiv alle *.hyk-Dateien aus \textit{../../..} relativ zur
\textit{gewaesser}.wst-Datei betrachtet. Vor dem Import werden mit Hilfe eines L�ngen- und
eines MD5-Summen-Vergleichs inhaltliche Duplikate ausgeschlossen.

\subsubsection{Hochwassermarken (*.zus, *.wst)}
Der Import von Hochwassermarken kann mit \textbf{-Dflys.backend.importer.skip.flood.water=true}
unterdr�ckt werden. Es werden die *.zus- und *.wst-Dateien aus dem Verzeichnis
\textit{../HW-Marken} relativ zur \textit{gewaesser}.wst-Datei betrachtet.

\subsubsection{Hochwasserschutzanlagen (*.zus, *.wst)}
Mit \textbf{-Dflys.backend.importer.skip.flood.protection=true}
kann der Import von Hochwasserschutzanlagen
unterdr�ckt werden. Es werden die *.zus- und *.wst-Dateien aus dem Verzeichnis
\textit{../HW-Schutzanlagen} relativ zur \textit{gewaesser.wst}-Datei betrachtet.

\subsubsection{Messstellen-Stammdaten}
Mit \textbf{-Dflys.backend.importer.skip.measurement.stations=true}
kann der Import von Messstellen-Stammdaten aus
\textit{Morphologie/Basisdaten/Messstellen-Stammdaten.csv}
unterdr�ckt werden.

\subsubsection{Sohlh�hen (Peilungen)}
Mit \textbf{-Dflys.backend.importer.skip.bed.height=true}
kann der Import von Sohlh�hen-Peilungen unterdr�ckt werden.
Es werden die CSV-Dateien aus dem Verzeichnis
\textit{Morphologie/Sohlhoehen/Einzeljahre} geladen.

\subsubsection{Sedimentdichte}
Der Import der Sedimentdichte kann mit
\textbf{-Dflys.backend.importer.skip.sediment.density=true}
unterdr�ckt werden. Es werden die CSV-Dateien aus dem Verzeichnis
\textit{Morphologie/Sedimentdichte} geladen.

\subsubsection{Porosit�t}
Der Import der Porosit�tsdaten kann mit
\textbf{-Dflys.backend.importer.skip.porosity=true}
unterdr�ckt werden. Es werden die CSV-Dateien aus dem Verzeichnis
\textit{Morphologie/Porositaet} geladen.

\subsubsection{Morphologische Breite}
Mit \textbf{-Dflys.backend.importer.skip.morphological.width=true}
kann der Import der morphologischen Breite unterdr�ckt werden.
Es werden alle CSV-Dateien aus dem Verzeichnis
\textit{Morphologie/morphologische\_Breite} geladen.

\subsubsection{Flie�geschwindigkeit}
Der Import der Flie�geschwindigkeit kann mit
\textbf{-Dflys.backend.importer.skip.flow.velocity=true}
unterdr�ckt werden. Es werden die CSV-Dateien aus dem Verzeichnis\\
\textit{Morphologie/Geschwindigkeit\_Schubspannung/Modellrechnungen} und\\
\textit{Morphologie/Geschwindigkeit\_Schubspannung/v-Messungen} geladen.

\subsubsection{Sedimentfracht an Messstellen}
Mit
\textbf{-Dflys.backend.importer.skip.sediment.load=true}
kann der Import der Sedimentfracht an Messstellen unterdr�ckt werden.
Es werden die CSV-Dateien aus dem Verzeichnis
\textit{Morphologie/Fracht/Messstellen} geladen.
Dabei werden die Dateien aus den
Unterverzeichnissen \textit{Einzeljahre}, \textit{Epochen}
und \textit{amtliche Epochen} entsprechend als
\textit{Einzeljahre}, \textit{Epochen} und
\textit{amtliche Epochen} gespeichert.

Voraussetzung f�r den Import ist, dass die Messstellen-Stammdaten
bereits importiert sind.

\subsubsection{Sedimentfracht (L�ngsschnitt-Daten)}
Mit
\textbf{-Dflys.backend.importer.skip.sediment.load.ls=true}
kann der Import der L�ngsschnitt-Daten (auf freier Strecke)
der Sedimentfracht unterdr�ckt werden.
Es werden die CSV-Dateien aus dem Verzeichnis
\textit{Morphologie/Fracht/Laengsschnitte} geladen.
Dabei werden die Dateien aus den
Unterverzeichnissen \textit{Einzeljahre}, \textit{Epochen}
und \textit{amtliche Epochen} entsprechend als
\textit{Einzeljahre}, \textit{Epochen} und
\textit{amtliche Epochen} gespeichert.

\subsubsection{Wasserspiegellagen f�r M-INFO}
Mit \textbf{-Dflys.backend.importer.skip.waterlevels=true}
kann der Import der f�r M-INFO spezifischen Wasserspiegellagen
unterdr�ckt werden. Es werden die CSV-Dateien aus dem Verzeichnis
\textit{Morphologie/Fixierungsanalyse/Wasserspiegellagen} geladen.

\subsubsection{Wasserspiegeldifferenzen f�r M-INFO}
Mit \textbf{-Dflys.backend.importer.skip.waterlevel.differences=true}
kann der Import der f�r M-INFO spezifischen Wasserspiegeldifferenzen
unterdr�ckt werden. Es werden die CSV-Dateien aus dem Verzeichnis
\textit{Morphologie/Fixierungsanalyse/Wasserspiegeldifferenzen} geladen.

\subsubsection{Transport-Abfluss-Beziehung}
Mit \textbf{flys.backend.importer.skip.sq.relation=true}
kann der Import der Daten f�r die Transport-Abfluss-Beziehung
unterdr�ckt werden. Es werden die CSV-Dateien unter
\textit{Feststofftransport-Abfluss-Beziehung} geladen.

Voraussetzung f�r den Import ist, dass die Messstellen-Stammdaten
bereits importiert sind.

\subsection{Klassifikation von Streckenfavoriten}
\label{annotation-types}
Streckenfavoriten werden aus KM-Dateien importiert. Um die einzelnen Eintr�ge
einer Kategorie (Br�cke, Pegel, etc.) zuzuordnen, kann eine XML angegeben werden,
in der Regeln f�r diese Klassifikation definiert werden. Schematisch gliedert
sich diese Datei in die zwei Bereiche 'types' und 'patterns':

\begin{lstlisting}
    <annotation>
        <types>
            <type>...</type>
            <type>...</type>
            ...
        </types>
        <patterns>
            <pattern>...</pattern>
            <pattern>...</pattern>
            ...
        </patterns>
    </annotation>
\end{lstlisting}

In der Sektion \textit{types} werden die Kategorien vereinbart, in die klassifiziert
werden soll. Dies geschieht mit entsprechenden Zeilen in der XML Datei. Es folgt
ein Auszug aus einer solchen Datei:

\begin{lstlisting}
  <type name="Pegel"/>
  <type name="Br�cke"/>
  ...
  <type name="Sonstige" default="true"/>
\end{lstlisting}

Das Attribut 'default' darf maximal einmal vergeben werden und besagt, dass diese
Kategorie gew�hlt werden soll, wenn keine andere Kategorie zugeordnet werden kann.

In der Sektion 'patterns' werden dann die Regeln definiert, die einzelne Eintr�ge
den zuvor definierten Kategorien zuordnet. Hierf�r k�nnen zwei Arten von
Definitionen angegeben werden:

\begin{lstlisting}
  <file pattern="^Br�cken$" type="Br�cke"/>
\end{lstlisting}

oder

\begin{lstlisting}
  <line pattern="^Br�cke[:\s].*$" type="Br�cke"/>
\end{lstlisting}

Die erste Variante bestimmt die Kategorie, die pro KM-Datei gelten soll.
\textit{pattern} ist hierbei ein regul�rer Ausdruck, der auf den Dateinamen
angewandt wird. Passt der Name der Datei auf den regul�ren Ausdruck, wird
\textit{type} als Vorgabe angenommen. Treffen mehrere \textit{file}-Regeln zu,
wird der erste Treffer angewandt. Findet keine der \textit{file}-Regeln Anwendung, wird
die Kategorie ausgew�hlt, die in der \textit{types}-Section das Attribut
\textit{default} gesetzt hat.

Die zweite Regel-Variante \textit{line} wird auf jeden Eintrag innerhalb einer KM-Datei
auf den Bezeichner der Streckenfavoriten angewandt. Als Muster dient auch hier
ein regul�rer Ausdruck, der �ber das Attribut \textit{pattern} definiert wird.
Die Kategorie wird im Trefferfall �ber das Attribut \textit{type} bestimmt.
Treffen mehrere Regeln zu, wird die Kategorie gew�hlt, die zum ersten Treffer
geh�rt. Trifft keine Regel zu, wird der Eintrag der Kategorie zugeteilt, die f�r
die beinhaltende Datei als Vorgabe gilt.


\subsection{Konfiguration}
\label{configuration}
Zum Starten des Importers ist es notwendig, in der Datei
\textit{./run\_hydr\_morph.sh} die Variablen am Anfang der Datei
anzupassen. Im folgenden werden notwendige und optionale Einstellungen
beschrieben, die beim Starten des Importers ber�cksichtigt werden. Folgende
Einstellungen sind zwangsl�ufig an die bestehende Umgebung anzupassen:

\textbf{BACKEND\_USER}
\\Der Nutzername, der zum Verbinden zur Datenbank verwendet werden soll.

\textbf{BACKEND\_PASS}
\\Das Passwort, welches in Kombination mit \textbf{BACKEND\_USER} zum Verbinden
zur Datenbank verwendet werden soll.

\textbf{BACKEND\_HOST}
\\Der Datenbank-Host. In der Regel sollte hier \textit{localhost} eingetragen
werden, da es empfohlen wird, den Importer auf dem selben Host zu starten, auf
dem auch die Datenbank l�uft.

\textbf{BACKEND\_PORT}
\\Der Port auf dem die Datenbank zu erreichen ist. Bei einer Oracle XE Instanz
z.B.: \textit{1521}, sofern nicht anders konfiguriert.

\textbf{BACKEND\_NAME}
\\Der Name der Datenbank Instanz. Beispielsweise \textit{XE} bei einer Oracle XE
Instanz.

\textbf{BACKEND\_DB\_PREFIX}
\\Der Pr�fix zum Aufbau einer Datenbankverbindung. F�r Oracle z.B.: \textit{jdbc:oracle:thin:@}.

\textbf{BACKEND\_DB\_DRIVER}
\\Der Name des JDBC-Treibers, der es erlaubt das Protokoll der Datenbank zu
sprechen. Im Falle einer Oracle XE w�re dies z.B.: \textit{oracle.jdbc.OracleDriver}.

\textbf{BACKEND\_DB\_DIALECT}
\\Der Hibernate-Dialekt, den die Datenbank versteht. Im Falle einer Oracle-XE
w�re dies z.B.: \textit{org.hibernate.dialect.OracleDialect}.


Weitere Details zum Verbinden zu einer Oracle Datenbank finden Sie unter\\
\href{http://www.orafaq.com/wiki/JDBC}{http://www.orafaq.com/wiki/JDBC}.

Alle weiteren Einstellungen sind optional anpassbar:

\textbf{LOG4J\_CONFIG}
\\Der Fachdatenimport verwendet die externe Bibliothek \textit{Apache Log4J} zum Loggen
von Informationen. Dazu ist es notwendig eine entsprechende Konfiguration beim
Start anzugeben. \textit{LOG4J\_CONFIG} verweist in diesem Fall auf eine externe
Datei zur Konfiguration von Log4J. Im Standardfall wird die Datei
\textit{conf/log4j.properties} verwendet, welche eine sinnvolle Standardkonfiguration
enth�lt. Sollten Sie diese Konfiguration verwenden, wird beim Import eine
Log-Datei namens \textit{import.log} erstellt, die maximal 100 MB gro� werden
kann. Sollte die Log-Datei gr��er als 100 MB anwachsen, wird die aktuelle Datei
nach \textit{import.log.1} umbenannt und eine neue Datei \textit{import.log}
wird begonnen. Maximal werden 10 Log-Dateien gespeichert. F�r weitere Details
zu Log4J siehe Online Dokumentation unter
\href{http://logging.apache.org/log4j/1.2/}{http://logging.apache.org/log4j/1.2/}


\textbf{IMPORTER\_MAINVALUE\_TYPES}
\\Diese Einstellung erlaubt die Angabe eines Textes, der aus den g�ltigen Typen
f�r Hauptwerte zusammengesetzt ist. \textit{QWTD-} ist standardm��ig gesetzt.

\textbf{IMPORTER\_ANNOTATION\_TYPES}
\\Diese Einstellung verweist auf eine Datei (relativ zum Ort der \textit{run\_hydr\_morph.sh}
im Dateisystem), die die m�glichen Typen von Streckenfavoriten und deren Regeln
definiert. Siehe hierzu auch Kapitel \ref{annotation-types}.


Die im folgenden beschriebenen Einstellungen k�nnen jeweils die Werte
\textit{true} oder \textit{false} annehmen und sind optional anzupassen.

\textbf{IMPORTER\_DRY\_RUN}
\\Falls \textit{true} gesetzt wird, wird der Import nur simuliert. Es werden
keine Daten in die Datenbank geschrieben. Die Log-Dateien k�nnen dann verwendet werden, um Fehler in den Daten vor dem Schreiben in die
Datenbank zu ermitteln.

Die weiteren Optionen haben selbsterkl�rende Namen und
entsprechen je einer System-Property,
die in Kapitel \ref{import_data} bereits erl�utert wurde.

\subsection{Fehler und Warnungen}
Selbsterkl�rende Meldungen sind hier nicht alle aufgef�hrt.

\subsubsection{Fehler}

\textbf{error while parsing gew}
\\Die GEW-Datei ist fehlerhaft oder konnte nicht ge�ffnet werden.

\textbf{River not yet in database. You cannot skip importing waterlevel model.}
\\\textbf{-Dflys.backend.importer.skip.wst=true} wurde verwendet,
obwohl sich das Gew�sser noch nicht in der Datenbank befindet
(siehe Kapitel \ref{import_data}).

\textbf{WST: Stations in 'XYZ' near line \# not ordered. File rejected.}
\\Die Stationen in einer WST-Datei sind nicht konsequent auf- oder
absteigend geordnet. Die Datei wird verworfen.

\textbf{File 'XYZ' is broken!}
\\Die Datei XYZ ist inkonsistent und f�hrt zu Fehlern.

\textbf{Error while parsing file for morph. width.}
\\Beim Lesen der morphologischen Breite trat ein Fehler auf.

\textbf{Error while storing flow velocity model.}
\\Beim Schreiben eines Flie�geschwindigkeitsmodells trat ein Fehler auf.

\textbf{Error while storing flow velocity measurement.}
\\Beim Schreiben einer Flie�geschwindigkeitsmessung trat ein Fehler auf.

\textbf{Error while storing sediment yield.}
\\Beim Schreiben einer Sedimentablagerung trat ein Fehler auf.

\textbf{Error while storing waterlevel diff.}
\\Beim Schreiben einer Wasserspiegeldifferenz trat ein Fehler auf.

\textbf{No core data file '...' found}
\\Keine \textit{Stammdaten\_Messstellen.csv} gefunden.

\textbf{No measurement stations found at km \#}
\\F�r eine in einer SQ-Beziehungs-Datei gegebene Station liegt
keine Messstelle vor.

\textbf{No km for measurement station: Can not reference measurement station: ...}
\\In der gegebenen Zeile einer SQ-Beziehungs-Datei liegt ist keine
Station gegeben. Damit ist keine Zuordnung zu einer Messstelle m�glich.
Die Zeile wird verworfen.

\textbf{Incomplete SQ-relation row (missing a, b, Qmax or parameter): ...}
\\In der gegebenen Zeile einer SQ-Beziehungs-Datei liegt mindestens
ein Pflicht-Wert nicht vor. Die Zeile wird verworfen.

\textbf{Error while storing sq relation.}
\\Beim Schreiben einer S(Q) Beziehung trat ein Fehler auf.

\textbf{Unknown bed height type: \#. File ignored.}
\\Die gegebene Aufnahmeart ist unbekannt. Die Datei wird ignoriert.
\\Bekannte Aufnahmearten:
\begin{itemize}
\item Querprofile
\item Fl�chenpeilung
\item Fl�chen- u. Querprofilpeilungen
\item DGM
\item TIN
\item Modell
\end{itemize}

\textbf{Error reading PRF file.}
\\Beim Lesen einer PRF-Datei trat ein Fehler auf.

\textbf{Error closing PRF file.}
\\Beim Schlie�en einer PRF-Datei trat ein Fehler auf.

\textbf{HYK 1: not enough elements in line \#}
\\Eine Zeile in einer HYK-Datei hat nicht gen�gend Elemente.

\textbf{HYK 2: not enough elements in line \#}
\\Eine Zeile in einer HYK-Datei hat nicht gen�gend Elemente.

\textbf{HYK 5: not enough elements in line \#}
\\Eine Zeile in einer HYK-Datei hat nicht gen�gend Elemente.

\textbf{HYK 6: not enough elements in line \#}
\\Eine Zeile in einer HYK-Datei hat nicht gen�gend Elemente.

\textbf{HYK: parsing num zones, bottom or top height failed in line \#}
\\Die Anzahl der Zonen oder Daten �ber die Zonen sind nicht korrekt.

\textbf{HYK: HYK: number of flow zones mismatches in line \#}
\\Die Anzahl der Zonen oder Daten �ber die Zonen sind nicht korrekt.

\textbf{HYK: cannot parse number in line \#}
\\Eine Zahl wurde erwartet.

\textbf{HYK: Error reading file.}
\\Beim Lesen einer HYK-Datei trat ein Fehler auf.

\textbf{HYK: Error closing file.}
\\Beim Schlie�en einer HYK-Datei trat ein Fehler auf.

\textbf{Null Start time will be ignored}
\\F�r ein Zeitintervall wurde keine Anfangszeit gegeben.

\textbf{Skipping malformed w80csv line \#}
\\Die genannte Zeile einer QP-Daten-CSV-Datei wurde verworfen
(z.B.\ weil keine H�he gegeben war).

\subsubsection{Warnungen}
\textbf{No unit given. Waterlevel-model WST-file has to be imported already.}
\\Es wird keine H�henreferenz mit dazugeh�riger Einheit importiert.
Dies ist nur m�glich, wenn sich die Gew�sser-Stammdaten bereits
in der Datenbank befinden (siehe Kapitel \ref{import_data}).

\textbf{no unit and height reference found. Using default.}
\\Aus einer WST-Datei konnte keine H�henreferenz
mit dazugeh�riger Einheit ausgelesen werden.
Als Default wird 'm �. unbekannte Referenz' verwendet.
Dies hat nur im Falle der Basis-WST-Datei einen Einfluss auf den Import.

\textbf{annotation type file 'XYZ' is not readable.}
\\Die Datein XYZ kann nicht gelesen werden.

\textbf{cannot parse annotation types file.}
\\W�hrend der Verarbeitung der Annotationsdatei ist Fehler aufgetreten.

\textbf{Cannot read directory.}
\\Verzeichnis konnte nicht gelesen werden.

\textbf{no official lines wst file found}
\\Keine Datei mit amtlichen Linien gefunden.

\textbf{Invalid bwastr-id line: ...}
\\Aus einer Zeile in \textbf{BWASTR\_ID.csv} konnte kein Gew�sser bzw.
Bundeswasserstra�en-ID gelesen werden.

\textbf{cannot read fixations wst file directory}
\\Das Verzeichnis mit den Fixierungen kann nicht gelesen werden.

\textbf{cannot read extra longitudinal wst file directory}
\\Das Verzeichnis mit den zus�tzlichen L�ngsschnitten kann nicht gelesen werden.

\textbf{cannot read gauges from 'XYZ'}
\\Die Pegelg�ltigkeiten k�nnen nicht gelesen werden.

\textbf{'XYZ' does not exist. Gauge ignored.}
\\Ein in PEGEL.GLT gegebener Pegel wird ignoriert,
weil die gegebene *.sta- oder *.at-Datei nicht vorhanden ist.

\textbf{HYK file 'XYZ' seems to be a duplicate.}
\\Die HYK-Datei wurde unter anderem Namen aber gleichen Inhalts bereits
gefunden.

\textbf{PRF file 'XYZ' seems to be a duplicate.}
\\Die PRF-Datei wurde unter anderem Namen aber mit gleichem Inhalt bereits
gefunden.

\textbf{Skip invalid SedimentYield: time interval or unit null!}
\\Eine Sedimentablagerung ist ung�ltig und wurde ausgelassen.

\textbf{skip flow velocity model: No discharge zone specified.}
\\Da kein Abflussbereich angegeben wurde, wurde das Flie�geschwindigkeitsmodell ausgelassen.

\textbf{skip invalid waterlevel - no unit set!}
\\Ein einheitenloser Wasserstand wurde ausgelassen.

\textbf{Cannot parse time range.}
\\Das Zeitformat wurde nicht erkannt.

\textbf{skip invalid data line \#}
\\Ung�ltige Datenzeile wurde ausgelassen.

\textbf{Error while parsing sq relation row \#}
\\Eine Zeile in der S(Q)-Beziehung ist ung�ltig.

\textbf{GLT: no gauge found in line \#}
\\In der GLT-Datei wurde ein Pegel erwartet, aber nicht gefunden.

\textbf{GLT: line \# has not enough columns.}
\\Eine Zeile in der Pegelg�ltigkeitsdatei hat nicht genug Spalten.

\textbf{Error while parsing flow velocity values.}
\\Invalide Datenzeile in einer Datei mit einer Flie�geschwindigkeitsmessung.

\textbf{skip invalid data line: \#}
\\Invalide Datenzeile (weniger als acht Spalten)
in einer Datei mit einer Flie�geschwindigkeitsmessung.

\textbf{Unparseable flow velocity values: ...}
\\Invalide Werte in einer Datenzeile einer Flie�geschwindigkeitsmessung.

\textbf{skip invalid waterlevel line: \#}
\\Invalide Datenzeile in einer Datei mit Wasserstandsdifferenzen.

\textbf{Error while parsing value: \#}
\\Invalide Datenzeile in einer Datei mit Wasserstandsdifferenzen.

\textbf{Error while parsing station: \#}
\\Invalide Datenzeile in einer Datei mit Wasserstandsdifferenzen.

\textbf{skip invalid MainValue part: \#}
\\Invalide Datenzeile in einer Datei Flie�geschwindigkeitsmodellen.

\textbf{skip invalid gauge part: \#}
\\Invalide Datenzeile in einer Datei Flie�geschwindigkeitsmodellen.

\textbf{Error while parsing Q value: $<Q>$}
\\Invalide Datenzeile in einer Datei Flie�geschwindigkeitsmodellen.

\textbf{skip invalid data line: \#}
\\Invalide Datenzeile in einer Datei Flie�geschwindigkeitsmodellen.

\textbf{Error while parsing flow velocity values.}
\\Invalide Datenzeile in einer Datei Flie�geschwindigkeitsmodellen.

\textbf{Error while parsing number from data row: \#}
\\In der eingelesenen Zeile konnte keine Zahl gefunden werden.

\textbf{Unknown meta line: \#}
\\Meta-Informationen unbekannt. Werden ignoriert.

\textbf{Unparseable numbers in '...'}
\\Invalide Zahlen in einer Datenzeile in einer Datei mit Sedimentdichten.

\textbf{skip invalid data line: \#}
\\Invalide Datenzeile in einer Datei mit Sedimentdichten wird ignoriert.

\textbf{SDP: No km nor density given. Skip line}
\\Weder Station noch Dichte gegeben in einer Datenzeile in einer Datei mit Sedimentdichten.
Zeile wird ignoriert.

\textbf{STA file is empty}
\\Stammdatendatei ist leer oder hat zu wenige Zeilen.

\textbf{STA file has not enough lines}
\\Stammdatendatei ist leer oder hat zu wenige Zeilen.

\textbf{STA file is too short}
\\Stammdatendatei ist leer oder hat zu wenige Zeilen.

\textbf{First line in STA file is too short.}
\\Die erste Zeile der Stammdaten ist zu kurz.

\textbf{STA: second line is too short}
\\Die zweite Zeile ist zu kurz.

\textbf{STA: parsing of the datum of the gauge failed}
\\Die Station in der Stammdatendatei konnte nicht gelesen werden.

\textbf{STA: 'XYZ' is not a valid long number.}
\\Die Pegelnummer ist invalide.

\textbf{STA: Not enough columns for aeo and datum}
\\AEO und Pegelnullpunkt k�nnen nicht ermittelt werden.

\textbf{STA: cannot parse aeo or datum.}
\\AEO oder Pegelnullpunkt sind invalide.

\textbf{STA: value not parseable in line \#}
\\Wert ist nicht als Zahl zu interpretieren (meist Kommentare).

\textbf{STA: Invalid date ...}
\textbf{STA: Invalid start date ...}
\textbf{STA: Invalid end date ...}
\textbf{STA: Need start date.}
\\M�gliche Datumsangabe zu Hauptwert ist kein g�ltiger Zeitraum.

\textbf{PRF: cannot open file $<FILE>$}
\\Die PRF-Datei kann nicht ge�ffnet werden.

\textbf{PRF: First line does not look like a PRF data pattern.}
\\Erste Zeile entspricht nicht der PRF-Spezifikation.

\textbf{PRF: premature EOF. Expected integer in line 2}
\\Zweite Zeile entspricht nicht der PRF-Spezifikation.

\textbf{PRF: Expected $<num>$ in line 2}
\\Zweite Zeile entspricht nicht der PRF-Spezifikation.

\textbf{PRF: invalid integer in line 2}
\\Zweite Zeile entspricht nicht der PRF-Spezifikation.

\textbf{PRF: premature EOF. Expected pattern for km extraction}
\\Vierte Zeile entspricht nicht der PRF-Spezifikation.

\textbf{PRF: line 4 does not look like a PRF km extraction pattern.}
\\Vierte Zeile entspricht nicht der PRF-Spezifikation.

\textbf{PRF: premature EOF. Expected skip row count.}
\\F�nfte Zeile entspricht nicht der PRF-Spezifikation.

\textbf{PRF: line 5 is not an positive integer.}
\\F�nfte Zeile entspricht nicht der PRF-Spezifikation.

\textbf{PRF: cannot extract km in line \#}
\\Der gegebenen Zeile konnte die Station nicht entnommen werden.

Das PRF-Format ist komplex! Bei oben genannten Fehlern sollten ggf. weitere
Information zur genaueren Analyse herangezogen werden.

\textbf{cannot access WST file $FILE$}
\\Die WST-Datei konnte nicht gefunden werden.

\textbf{Found an invalid row in the AT file.}
\\Eine Zeile in einer AT-Datei ist nicht korrekt.

\textbf{AT: invalid number $XYZ$}
\\Eine Zahl wurde erwartet aber nicht gefunden.

\textbf{Try to add Q range without waterlevel!}
\\Q-Bereich ohne Wasserstand gefunden.

\textbf{Error while parsing Q range: \#}
\\Invalider Q-Bereich

\textbf{skip invalid waterlevel line: \#}
\\Ung�ltige Wasserstands-Zeile.

\textbf{Error while parsing number values: \#}
\\Ung�ltige Zahlenwerte.

\textbf{ANN: not enough columns in line \#}
\\Nicht genug Zeichenspalten in KM-Datei

\textbf{ANN: invalid number in line \#}
\\Ung�ltige Zahl.

\textbf{ANN: cannot parse 'Unterkante' in line \#}
\\Die Unterkante in einer KM-Datei konnte nicht gelesen werden.

\textbf{ANN: cannot parse 'Unterkante' or 'Oberkante' in line \#}
\\Unter- oder Oberkannte liegen in einem falschen Format vor.

\textbf{ANN: duplicated annotation 'XYZ' in line \#}
\\Ein Duplikat eines Streckenfavoriten wurde gefunden.

\textbf{ANN: 'XYZ' is not a directory.}
\\Unterverzeichnis konnte nicht ge�ffnet werden.

\textbf{ANN: cannot list directory 'XYZ'}
\\Unterverzeichnis konnte nicht durchsucht werden.

\textbf{BHP: Meta line did not match any known type: \#}
\\Meta-Informationen unbekannt. Werden ignoriert.

\textbf{BHP: Error while parsing timeinterval!}
\\Ung�ltiges Zeitinterval.

\textbf{BHP: Error while parsing year!}
\\Ung�ltige Jahresangabe.

\textbf{BHP: Error while parsing sounding width!}
\\Unbekannte Peilungsbreite.

\textbf{BHP: Error while parsing range!}
\\Bereichsangabe fehlerhaft.

\textbf{BHP: Could not parse sounding width in line '...'. -$>$ Set default value '0'}
\\Peilbreite in gegebener Zeile wurde nicht als g�ltige Zahl erkannt. Setze 0.

\textbf{Unparseable number in data row: \#}
\\In der gegebenen Zeile wurde eine Zahl erwartet,
es konnte aber an entsprechender Stelle nichts als solche gelesen werden.

\textbf{MWP: Unknown meta line: \#}
\\Meta-Informationen unbekannt. Werden ignoriert.

\textbf{MWP: skip invalid data line: \#}
\\Ung�ltige Datenzeile wurde �bersprungen.

\textbf{MWP: unparseable number in data row: \#}
\\Falsche Zahlenformat.

\textbf{ANNCLASS: rule has no name}
\\Klassifizierungsregel f�r Streckenfavoriten hat keinen Namen.

\textbf{ANNCLASS: pattern has no 'pattern' attribute.}
\\Klassifizierungsmuster f�r Streckenfavoriten hat kein Muster.

\textbf{ANNCLASS: pattern has unknown type 'XYZ'}
\\Klassifizierungsmuster f�r Streckenfavoriten konnte keinem Typ zugeordnet werden.

\textbf{ANNCLASS: pattern 'XYZ' is invalid.}
\\Klassifizierungsmuster f�r Streckenfavoriten ist ung�ltig.

\textbf{BSP: Error while parsing data row.}
\\Ung�ltige Datenzeile.

\textbf{duplicate station '...': -$>$ ignored}
\\Duplikat einer Station. Wird ignoriert.

\textbf{BSP: unparseable height ...}
\\Nicht lesbare Sohlh�he in einer Sohlh�hen-Datei.

\textbf{BSP: unparseable uncertainty value ...}
\\Nicht lesbare Unsicherheit in einer Sohlh�hen-Datei.

\textbf{BSP: unparseable data gap ...}
\\Nicht lesbare Datenl�cke in einer Sohlh�hen-Datei.

\textbf{BSP: unparseable sounding width ...}
\\Nicht lesbare Peilbreite in einer Sohlh�hen-Datei.

\textbf{BSP: unparseable width ...}
\\Nicht lesbare Breite in einer Sohlh�hen-Datei.

\textbf{BSP: unparseable value in data row.}
\\Nicht lesbare Werte in einer Sohlh�hen-Datei.

\textbf{SYP: Unknown meta line: \#}
\\Meta-Informationen unbekannt. Werden ignoriert.

\textbf{SYP: skip invalid data line \#}
\\Ung�ltige Datenzeile wurde �bersprungen.

\textbf{SYP: Error while parsing numbers in \#}
\\Ung�ltige Zahlenformatierung.

\textbf{SYP: Unknown time interval string 'XYZ'}
\\Falsches Datumformat.

\textbf{SYP: Error while parsing years 'XYZ'}
\\Falsches Jahreszahlformat.

\textbf{SYP: Error while parsing ranges of 'XYZ'}
\\Bereichsangaben fehlerhaft.

\textbf{SYP: Unknown grain fraction 'XYZ'}
\\Unbekannte Kornfraktion.

\textbf{WST: invalid number.}
\\Ung�ltige Zahl.

\textbf{WST: km $km$ ($<Zeile>$) found more than once. -$>$ ignored.}
\\Ein Kilometer ist doppelt in einer WST-Datei enthalten.

\textbf{WST: String ... could not be interpreted as valid timestamp}
\\In einer Kopfzeile einer WST-Datei konnte ein Eintrag nicht als Datum erkannt werden.

\textbf{HYK: zone coordinates swapped in line \#}
\\Flie�zonenkordinaten wurden in umgekehrter Reihenfolge angeben.

\textbf{BHS: Skip invalid file 'XYZ'}
\\Die Inhalte der Datei sind ung�ltig.

\textbf{ISQ: Unable to store sq relation value.}
\\S(Q) Beziehung konnte nicht gespeichert werden.

\textbf{ISQ: Cannot determine sq relation without time interval.}
\\Einer S(Q)-Beziehung ist keine zeitliche G�ltigkeit zugeordnet.

\textbf{Unparseable ... in sq relation row: ...}
\\Der gegebene Wert in der gegebenen Zeile konnte nicht als Zahl gelesen werden.

\textbf{IWD: skip invalid waterlevel difference - no unit set!}
\\Wasserstandsdifferenz hat keine Einheit.

\textbf{BHE: Skip file - invalid current elevation model.}
\\H�henmodell ung�ltig.

\textbf{BHE: Skip file - invalid time range.}
\\Zeitbereich ung�ltig.

\textbf{BHE: Skip file - invalid km range.}
\\Kilometerbereich ung�ltig.

\textbf{No upper value for range found in ...}
\textbf{No range found for measurement station '...'}
\\Streckeng�ltigkeit einer Messstelle in \textit{Stammdaten\_Messstellen.csv} ung�ltig.

\textbf{invalid gauge found: ...}
\\Kein g�ltiger Pegel zur Messstelle gegeben.

\textbf{Found invalid observation time ...}
\textbf{Observation time date invalid: ...}
\textbf{Observation time date not parseable: ...}
\\Kein g�ltiger zeitlicher Bezug zur Messstelle gegeben.

\textbf{No gauge found for measurement station '...'}
\\Der in \textit{Stammdaten\_Messstellen.csv} gegebene Pegel existiert nicht in der Datenbank.

\subsection{Hinweise zum Betrieb}
Aufgrund des hohen Speicherverbrauchs des Importers wird empfohlen, der JVM
mindestens 8 GiB Hauptspeicher zuzuordnen. Dies kann beim Starten des Java
Prozesses mittels folgendem Parameter '-Xmx8192m' getan werden. Das
Shellskript zum Starten des Importers setzt diesen Wert standardm��ig.
Besonders speicherintensiv ist der Import der HYKs und der PRFs.
Hier ist es unter Umst�nden empfehlenswert, diese in zwei oder drei
Schritten zu importieren. Zuerst die sonstigen hydrologischen Daten importieren;
anschlie�end einen Import-Vorgang ausschlie�lich f�r HYKs starten; anschlie�end
einen Import-Vorgang f�r PRFs starten. Siehe Kapitel \ref{configuration} f�r
weitere Informationen zum Aktivieren/Deaktivieren einzelner Dateitypen beim
Import.


\subsection{Starten des Fachdaten Importers}
\label{start-hydr}
Der Fachdaten Importer wird mit Hilfe eines Shellskripts von einer Konsole
gestartet. Dazu folgenden Befehl ausf�hren:\\

\begin{lstlisting}
    ./run_hydr_morph.sh pfad/zur/beispiel.gew
\end{lstlisting}

Der �bergebene Pfad muss auf eine valide *.gew Datei verweisen (bekannt aus
Desktop-FLYS). Wichtig f�r den Importer sind in dieser Datei die Zeilen, die mit
\textit{WSTDatei:} beginnen. In ihnen wird der Pfad zu der zentralen WST-Datei
des jeweiligen Gew�ssers angegeben. Alle anderen importierten Dateien werden in
ihrer Lage im Dateisystem relativ zur Lage dieser Datei betrachtet.
Ebenfalls wichtig ist die Zeile beginnend mit \textit{Gew�sser:}
in der der Name des Gew�ssers festgelegt wird.

Zus�tzlich kann die Datei eine Zeile beginnend mit \textit{uuid:}
enthalten. Dahinter kann eine
UUID\footnote{\url{http://de.wikipedia.org/wiki/UUID}} stehen,
die als eindeutiger Bezeichner des Datensatzes verwendet wird
(derzeit f�r die Zuordnung der Darstellung von Gew�ssern in der
interaktiven Einstiegskarte zu Datens�tzen in der Datenbank).

Nachdem der Prompt der Konsole zur�ckkehrt, ist der Import abgeschlossen oder es
ist ein Fehler aufgetreten. Weitere Informationen entnehmen Sie der Log-Datei.

Um einen Gew�sserdatensatz in einem Durchlauf (inkl.\ Geodaten)
zu importieren, kann auch das Skript \textit{import\_river.sh} verwendet werden.

Details zur Verwendung erhalten Sie auf der Kommandozeile mit
\begin{lstlisting}
    ./import_river.sh --help
\end{lstlisting}
Alternativ k�nnen auch in diesem Skript einige Variablen
(\textit{DEFAULT\_*}) angepasst werden.
Das Logging kann in diesem Fall nicht wie oben beschrieben
�ber \textit{conf/log4j.properties} angepasst werden, da hier
mehrere Log-Dateien geschrieben werden m�ssen.

http://dive4elements.wald.intevation.org