# HG changeset patch # User Andre Heinecke # Date 1360945327 -3600 # Node ID 4e5d209253dd19709e54cea8f333298299f61a7a # Parent 769593a846063dc93b0db3dddda7f3b5a5ce5ecc Importer doc: Update installation documentation. diff -r 769593a84606 -r 4e5d209253dd flys-backend/doc/documentation/de/importer-geodaesie.tex --- a/flys-backend/doc/documentation/de/importer-geodaesie.tex Fri Feb 15 16:22:13 2013 +0100 +++ b/flys-backend/doc/documentation/de/importer-geodaesie.tex Fri Feb 15 17:22:07 2013 +0100 @@ -1,10 +1,14 @@ \section{Geodatenimport} -Der Geodaten Importer ist ein in Python geschriebenes Kommandozeilen Tool zum -Import von Shapefiles in eine Datenbank. Zum Lesen der Shapefiles und zum -Schreiben der Geodaten in die Datenbank wird GDAL verwendet. Der Import in eine -Oracle Datenbank erfordert, dass GDAL und GDAL Python Bindungs mit -Oracle Unterstützung installiert sind. Weitere Details hierzu befinden sich im +Der Geodaten Importer ist ein in der Programmiersprache Python +geschriebenes Kommandozeilen Werkzeug zum Import von Shapefiles in +eine Datenbank. +Zum Lesen der Shapefiles und zum schreiben der Geodaten +in die Datenbank wird die GDAL Bibliothek verwendet. +Um Daten in eine Oracle Datenbank zu importieren ist es nötig, dass +GDAL und GDAL Python Bindungs mit Oracle Unterstützung installiert +sind. Bei der Verwendung von PostgreSQL entfällt dieser Schritt. +Weitere Details hierzu befinden sich im Kapitel \ref{Systemanforderungen} und \ref{Installationsanleitung}. Der Importer kann mit einem Shellscript von der Kommandozeile gestartet werden @@ -13,7 +17,7 @@ importiert werden sollen. Für jede Klasse gibt es einen speziellen Parser, der die speziellen Attribute eines Shapefiles liest und in die entsprechende Relation der Datenbank schreibt. Die Parser sind speziell auf das -Dateisystem der BfG ausgerichtet. So wird z.B. erwartet, dass die Shapefiles der +Dateisystem der BfG ausgerichtet. So wird beispielsweise erwartet, dass die Shapefiles der Gewässerachse im Ordner $Geodaesie/Flussachse+km$ liegen. Weitere Informationen zu den einzelnen Parsern sind dem nächsten Kapitel \ref{Beschreibung der Parser} zu entnehmen. Der Erfolg oder Misserfolg eines Shape-Imports wird je nach @@ -28,10 +32,17 @@ \textbf{INFO: Failed to create 2 features} \\Gibt die Anzahl der Features an, die nicht importiert werden konnten.\\ -\textbf{INFO: Found 3 unsupported features} +\textbf{INFO: Found 3 unsupported features of type: wbkMultiLineString} \\Gibt die Anzahl der Features an, die aufgrund ihres Datentyps nicht importiert -werden konnten. Z.B: es werden Linien erwartet, im Shapefile sind jedoch -Polygone enthalten.\\ +werden konnten. Wenn etwa Punkte erwartet wurden aber sich im Shapefile +Polygone befanden.\\ + +\textbf{INFO: Did not import values from fields: TYP ID GRUENDUNG BHW} +\\Manche Importer versuchen neben der Geographischen Information weitere +Felder in die Datenbank einzulesen. Um festzustellen ob ein Feld aufgrund +von Tippfehlern oder unterschiedlicher Schreibweise nicht importiert wurde, +gibt diese Information Auskunft darüber welche Felder aus der Shape Datei +nicht verwendet wurden.\\ \textbf{ERROR: No source SRS given! No transformation possible!} \\Das Shapefile enthält keine Information, in welcher Projektion die Geometrien @@ -90,7 +101,7 @@ \begin{tabular}[t]{ll} Pfad & Hydrologie/Hydr.Grenzen/Linien \\ Geometrie & LINESTRING, POLYGON \\ -Attribute & name, kind \\ +Attribute & name, kind, sectie, sobek \\ \end{tabular} \subsubsection{Bauwerke} @@ -151,8 +162,9 @@ \hspace{1cm} \begin{tabular}[t]{ll} Pfad & Hydrologie/HW-Schutzanlagen \\ -Geometrie & LINESTRING \\ -Attribute & TYP, Bauart, Name, name \\ +Geometrie & LINESTRING, POINT \\ +Attribute & name, source, description, status\_date, agency, + dike\_km, range, z\_target, rated\_level, z \\ \end{tabular} @@ -165,19 +177,6 @@ \end{tabular} -\subsubsection{Linien} -\hspace{1cm} -\begin{tabular}[t]{ll} -Pfad & Geodaesie/Linien \\ -Geometrie & LINESTRING, MULTILINESTRING \\ -Attribute & name, TYP, Z \\ - -Anmerkung & Wenn kein Attribut 'TYP' definiert ist, wird standardmäßig der Wert \\ - & 'DAMM' angenommen. Fehlt ein Attribut 'Z' wird '9999' als Höhe \\ - & angenommen. \\ -\end{tabular} - - \subsubsection{Überschwemmungsfläche} \hspace{1cm} \begin{tabular}[t]{ll} @@ -191,7 +190,7 @@ \label{Systemanforderungen} \begin{itemize} \item Oracle Datenbank inkl. Schema für FLYS - \item GDAL Binding für Python mit Oracle Support + \item GDAL ab Version 1.9 für Python mit Oracle Support \item ogr2ogr \item Python $>=$ 2.6 \end{itemize} @@ -199,22 +198,19 @@ \subsection{Installationsanleitung} \label{Installationsanleitung} -\begin{itemize} - - \item Python\\ - Zum Starten des Importers ist es notwendig Python zu installieren. Dies können - Sie mit folgendem Befehl auf der Kommandozeile erledigen: - \begin{lstlisting} - zypper in python - \end{lstlisting} + \subsubsection Oracle Instantclient\\ + % TODO: oracle_cx + Der Oracle Instantclient 11.2.0.2.0 wird benötigt, damit der Importer mittels Python +und GDAL in die bestehende Oracle Datenbank schreiben kann. Wenn Sie +eine PosgreSQL Datenbank verwenden, können Sie diesen Schritt überspringen. - \item Oracle Instantclient\\ - 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. Zu finden sind die - folgenden Pakete unter\\ - \href{http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html}{http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html} +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 @@ -222,42 +218,80 @@ \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} - - mkdir /opt - - 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 - 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 . + 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 - rpm -i --nodeps ~/flys-importer/rpm/RPMS/x86_64/libgdal1180-1.8.0-intevation1.x86_64.rpm - rpm -i --nodeps ~/flys-importer/rpm/RPMS/x86_64/libgdal180-devel-1.8.0-intevation1.x86_64.rpm - rpm -i --nodeps ~/flys-importer/rpm/RPMS/x86_64/gdal180-1.8.0-intevation1.x86_64.rpm + 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 +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. Mit den Befehlen $rpm -i --nodeps$ - haben Sie anschließend die notwendigen Bindings installiert, damit der Importer - die Geodaten in die Oracle Datenbank schreiben kann. + \textit{/opt/instantclient\_11\_2} abgelegt. +\subsubsection Python, Mapserver 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 gdal +und Mapserver. +% ^ Das sollte sich in zukunft ändern und alles in einem repo sein. + +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 FastCGI + zypper mr -d "intevation:bfg" + zypper ref # Paketliste neu laden + ln -s /usr/lib64/libproj.so.0.6.6 /usr/lib64/libproj.so + \end{lstlisting} + +Nun können Sie die unter \url{http://ftp.intevation.de/local/flys/2012-09-11/RPMS/x86\_64} +bereitgestellten Pakete: +\begin{itemize} +\item libgdal1-1.9.0-intevation1.x86\_64.rpm +\item gdal-1.9.0-intevation1.x86\_64.rpm +\item python-gdal-1.9.0-intevation1.x86\_64.rpm +\item mapserver-6.0.2-1.x86\_64.rpm \end{itemize} +Installieren. Laden Sie diese dazu Herunter und wechseln Sie in das Verzeichnis in welches Sie +die Pakete heruntergeladen haben und führen Sie dann folgende Befehle aus: + + \begin{lstlisting} + rpm -i --nodeps libgdal1-1.9.0-intevation1.x86_64.rpm gdal-1.9.0-intevation1.x86_64.rpm python-gdal-1.9.0-intevation1.x86_64.rpm + rpm -i --nodeps mapserver-6.0.2-1.x86_64.rpm + \end{lstlisting} + \subsection{Konfiguration} \label{Konfiguration}