\section{Übersicht}

Diese Dokumentation beschreibt die von Intevation entwickelten Werkzeuge zum
Importieren der hydrologischen, morphologischen und geodätischen Daten der BfG.
Die im folgenden\\ beschriebenen Werkzeuge zum Importieren der fachlichen und
geodätischen Daten sind speziell auf das Verzeichnissystem der BfG ausgerichtet.
Dabei wird angenommen, dass sich das Verzeichnis eines Gewässers auf oberster
Ebene in drei Unterverzeichnisse aufgliedert:

\begin{itemize}
    \item Geodaesie
    \item Hydrologie
    \item Morphologie
\end{itemize}

Desweiteren beziehen sich die Befehle, die auf der Kommandozeile abgesetzt
werden, auf ein SuSE-Linux-Enterprise-Server Version 11. Bitte beachten Sie
auch, dass einige der Befehle \textit{root}-Rechte benötigen.

\subsection{Vorbereitungen}

\subsubsection{Entpacken des Datenimporters}

Damit die Software performant und korrekt ausgeführt werden kann, ist es
erforderlich, dass sie auf dem selben System installiert und ausgeführt wird,
wie auch die Datenbank installiert ist. Sollten Sie das Paket nicht auf dem
Zielsystem selbst heruntergeladen haben, sind ggf. weitere Werkzeuge notwendig.
Im Fall, dass das Sie von einem Windows System auf das Zielsystem zugreifen
wollen, können Sie beispielsweise folgende Werkzeuge verwenden:

\begin{itemize}
\item WinSCP \\
WinSCP ist ein Open Source Werkzeug zum Transferieren von Dateien zwischen zwei
Systemen. Um das heruntergeladene Paket auf das Zielsystem zu transferieren,
können Sie WinSCP benutzen. Für weitere Informationen und den Gebrauch von
WinSCP lesen Sie bitte unter folgender Adresse nach:
\href{http://winscp.net/}{http://winscp.net/}.

\item Putty \\
Putty ist ein Open Source Werkzeug, mit dem Sie sich von einem Windows System
per SSH auf das Zielsystem verbinden können. Anschließend können Sie über die
Kommandozeile auf dem Zielsystem die Befehle, die in diesem Dokument beschrieben
sind, ausführen. Für weitere Informationen zu Putty und dessen Gebrauch lesen
Sie bitte unter folgender Adresse nach: \href{http://www.putty.org/}
{http://www.putty.org/}.
\end{itemize}

Bitte beachten Sie, dass diese Werkzeuge nicht zur Installtion und zum Betrieb
der Software selbst notwendig sind!

\subsection{Systemanforderungen}
\label{Systemanforderungen}
\begin{itemize}
  \item Oracle oder PosgreSQL Datenbank inkl. Schema für FLYS
  \item SUSE Enterprise Linux 11.2 SP 1
\end{itemize}

\subsection{Installationsanleitung}
\label{Installationsanleitung}

Nachdem Sie das Paket nun in das Heimatverzeichnis des Nutzers auf das
Zielsystem kopiert haben, entpacken Sie es mit folgenden Befehlen:

\begin{lstlisting}
    cd ~
    tar xvfz flys-importer.tar.gz
    cd flys-importer
\end{lstlisting}

\subsubsection Java
Der flys-importer benötigt Java Version 6 um diese zu installieren laden Sie
bitte von \url{http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1902814.html}
eine aktulle Java Version als -rpm.bin herunter. Zum Beispiel: jdk-6u41-linux-x64-rpm.bin

Nach dem Herunterladen, öffnen Sie eine konsole und wechseln in das Downloadverzeichnis.
Führen Sie nun folgende Befehle aus:

 \begin{lstlisting}
    su - # login als root
    sh jdk-6u41-linux-x64-rpm.bin
    <bestaetigen mit enter>
    update-alternatives --install /usr/bin/java java /usr/java/jdk1.6.0_41/bin/java 5
    update-alternatives --install /etc/alternatives/jre jre /usr/java/jdk1.6.0_41/jre 5
    update-alternatives --config java
 \end{lstlisting}

\subsubsection Python und GDAL\\
Installieren Sie nun die restlichen benötigten Pakete.
Dazu installieren Sie zuerst einige Abhängigkeiten und anschließend die
von der Intevation GmbH bereitgestellten speziellen Versionen von proj und libgeos

Um die Abhängigkeiten zu installieren führen Sie bitte folgende Befehle aus:

 \begin{lstlisting}
     zypper ar http://download.opensuse.org/repositories/home:/intevation:/bfg/SLE_11/ "intevation:bfg"
     rpm --import http://download.opensuse.org/repositories/home:/intevation:/bfg/SLE_11/repodata/repomd.xml.key
     zypper ref # Paketlist neu laden
     zypper in python libgeos0 libproj0 proj netcdf libnetcdf4 \
        xerces-c libxerces-c-3_0 unixODBC postgresql-libs
     zypper mr -d "intevation:bfg"
     zypper ref # Paketliste neu laden
 \end{lstlisting}

%\subsubsection Oracle Instantclient\\
%Der Oracle Instantclient 11.2.0.2.0 wird benötigt, damit der Importer mittels Python
%und GDAL in die bestehende Oracle Datenbqlnk schreiben kann. Wenn Sie
%eine PosgreSQL Datenbank verwenden, können Sie diesen Schritt überspringen.
%
%Zur Anbindung von Oracle ist es erforderlich, folgende Archive von
%Oracle herunterzuladen (Sie benötigen dafür ein Oracle Benutzerkonto):
%
%Der Oracle Instantclient 11.2 wird benötigt, damit der Importer mittels Python
%und GDAL in die bestehende Oracle Datenbank schreiben kann. Dazu ist es
%erforderlich, folgende Archive von Oracle herunterzuladen. 
%
% \begin{itemize}
%    \item instantclient-basic-linux-x86-64-11.2.0.2.0.zip
%    \item instantclient-sdk-linux-x86-64-11.2.0.2.0.zip
%    \item instantclient-sqlplus-linux-x86-64-11.2.0.2.0.zip
% \end{itemize}
%
%Zu finden sind die
% Pakete unter:\\
%\href{http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html}
%{http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html}
%
%
%Um diese Pakete zu installieren, öffnen Sie eine Konsole und wechseln
%in das Verzeichnis in welches Sie die heruntergeladenen Pakete
%gespeichert haben. (z.B.: cd /home/benutzername/Downloads )
% Anschließend führen Sie folgende Befehle auf der Kommandozeile aus:
%
% \begin{lstlisting}
%     unzip instantclient-basic-linux-x86-64-11.2.0.2.0.zip -d /opt
%     unzip instantclient-sdk-linux-x86-64-11.2.0.2.0.zip -d /opt
%     unzip instantclient-sqlplus-linux-x86-64-11.2.0.2.0.zip -d /opt
%
%     mkdir /opt/instantclient_11_2/lib
%     cd /opt/instantclient_11_2/lib
%     ln -s ../libclntsh.so.11.1 .
%     ln -s ../libclntsh.so.11.1 libclntsh.so
%     ln -s ../libnnz11.so .
%     ln -s ../libocci.so.11.1 .
%     ln -s ../libocci.so.11.1 libocci.so
%     ln -s ../libociei.so .
%     ln -s ../libocijdbc11.so .
%     ln -s ../libsqlplusic.so .
%     ln -s ../libsqlplus.so .
%
%     echo "/opt/instantclient_11_2/lib/" > /etc/ld.so.conf.d/oci.conf 
%     ldconfig
% \end{lstlisting}
%
%Sollten keine Fehler aufgetreten sein, haben Sie den \textit{Oracle
% Instantclient 11.2} erfolgreich entpackt und im Dateisystem unter
% \textit{/opt/instantclient\_11\_2} abgelegt.
%
\subsubsection{Vorbereiten der Datenbank}
Bevor die Importer verwendet werden können, ist es notwendig, dass eine leere
Oracle Datenbank vorhanden ist. Anschließend müssen folgende SQL Skripte in
diese Datenbank eingespielt werden:

\begin{enumerate}
\item oracle.sql \\
In diesem SQL Skript befindet sich das Schema zum Speichern der hydrologischen
Daten.

\item oracle-minfo.sql \\
In diesem SQL Skript befindet sich das Schema zum Speichern der morphologischen
Daten.

\item oracle-spatial.sql \\
In diesem SQL Skript befindet sich das Schema zum Speichern der geodätischen
Daten.

\item oracle-spatial\_idx.sql \\
Mittels diesem SQL Skript werden die Indizes zum geodätischen Datenbankschema\\
hinzugefügt.

\end{enumerate}

Zum Einspielen dieser Schemata setzen Sie folgende Befehle auf der Kommandozeile
ab. Beachten Sie, dass $sqlplus$ im Pfad liegen muss, und der Linux-Nutzer
dies Kommando ausführen können muss. Außerdem sind $benutzername$ und $passwort$
entsprechend Ihres Datenbank-Zugangs anzupassen.
SQLPlus befindet sich in /opt/instantclient\_11\_2 um es verfügbar zu machen
führen Sie im Importer Verzeichnis folgende Befehle aus:

\begin{lstlisting}
export LD_LIBRARY_PATH=opt/instantclient\_11\_2/lib:$LD_LIBRARY_PATH
export PATH=opt/instantclient\_11\_2:$PATH
\end{lstlisting}

Nun erstellen Sie das Schema:

\begin{lstlisting}
    sqlplus benutzername/passwort @schema/oracle.sql
    sqlplus benutzername/passwort @schema/oracle-minfo.sql
    sqlplus benutzername/passwort @schema/oracle-spatial.sql
    sqlplus benutzername/passwort @schema/oracle-spatial_idx.sql
\end{lstlisting}


