comparison flys-backend/doc/documentation/de/importer-geodaesie.tex @ 3800:69d19995bc3c 2.9.1

merged flys-backend/2.9.1
author Thomas Arendsen Hein <thomas@intevation.de>
date Fri, 28 Sep 2012 12:14:48 +0200
parents 1bef83948d61
children 890eaa0a5162
comparison
equal deleted inserted replaced
3786:4adc35aa655c 3800:69d19995bc3c
1 \section{Geodatenimport}
2
3 Der Geodaten Importer ist ein in Python geschriebenes Kommandozeilen Tool zum
4 Import von Shapefiles in eine Datenbank. Zum Lesen der Shapefiles und zum
5 Schreiben der Geodaten in die Datenbank wird GDAL verwendet. Der Import in eine
6 Oracle Datenbank erfordert, dass GDAL und GDAL Python Bindungs mit
7 Oracle Unterstützung installiert sind. Weitere Details hierzu befinden sich im
8 Kapitel \ref{Systemanforderungen} und \ref{Installationsanleitung}.
9
10 Der Importer kann mit einem Shellscript von der Kommandozeile gestartet werden
11 (siehe Kapitel \ref{Starten des Geodaten Importers}). Nach dem Start wird anhand der
12 Konfiguration festgestellt, welche Klassen von Shapefiles aus dem Dateisystem
13 importiert werden sollen. Für jede Klasse gibt es einen speziellen
14 Parser, der die speziellen Attribute eines Shapefiles liest und in die entsprechende
15 Relation der Datenbank schreibt. Die Parser sind speziell auf das
16 Dateisystem der BfG ausgerichtet. So wird z.B. erwartet, dass die Shapefiles der
17 Gewässerachse im Ordner $Geodaesie/Flussachse+km$ liegen. Weitere Informationen zu
18 den einzelnen Parsern sind dem nächsten Kapitel \ref{Beschreibung der Parser} zu
19 entnehmen. Der Erfolg oder Misserfolg eines Shape-Imports wird je nach
20 Konfiguration im Logfile vermerkt. Folgende Einträge können dem Logfile
21 entnommen werden:
22
23 \textbf{INFO: Inserted 4 features}
24 \\Gibt die Anzahl der erfolgreich importierten Features an.\\
25
26 \textbf{INFO: Failed to create 2 features}
27 \\Gibt die Anzahl der Features an, die nicht importiert werden konnten.\\
28
29 \textbf{INFO: Found 3 unsupported features}
30 \\Gibt die Anzahl der Features an, die aufgrund ihres Datentyps nicht importiert
31 werden konnten. Z.B: es werden Linien erwartet, im Shapefile sind jedoch
32 Polygone enthalten.\\
33
34 \textbf{ERROR: No source SRS given! No transformation possible!}
35 \\Das Shapefile enthält keine Information, in welcher Projektion die Geometrien
36 vorliegen. Es findet keine Transformation in die Zielprojektion statt. Bitte
37 beachten Sie, dass FLYS diese Geometrien später ggf nicht korrekt darstellen
38 kann.
39
40 \textbf{ERROR: Unable to insert feature: DETAIL}
41 \\Beim Lesen der Attribute eines Features ist ein Fehler aufgetreten.
42 Das Feature konnte nicht in die Datenbank geschrieben werden.\\
43
44 \textbf{ERROR: Exception while committing transaction}
45 \\Beim Abschluss des Schreib-Vorgangs in die Datenbank ist ein unerwarteter
46 Fehler aufgetreten. Die Features des Shapes sind nicht importiert worden.\\
47
48 \textbf{ERROR 1: ORA-01017: invalid username/password; logon denied}
49 \\Es konnte keine Verbindung zur Oracle Datenbank hergestellt werden. Prüfen Sie
50 die Verbindungseinstellungen.
51
52 Damit die Geodaten eines Shapes später eindeutig in der Datenbank identifiziert
53 werden können, wird für jede Geometrie der Pfad des Shapes im Dateisystem in
54 einer Spalte der Datenbank gespeichert. Anwendungen, die auf der Datenbank
55 aufbauen, können die Geodaten eines Shapefiles später anhand dieses Merkmals
56 gruppieren und anzeigen.
57
58
59 \subsection{Beschreibung der Parser}
60 \label{Beschreibung der Parser}
61
62 Wie im letzten Kapitel beschrieben, sind die Parser speziell an das Dateisystem
63 der BfG ausgerichtet. Im Folgenden werden zu jedem Parser folgende Informationen
64 angegeben:
65
66 \textbf{Pfad}
67 \\Der Pfad, in dem die Shapefiles im Dateisystem abgelegt sein müssen ausgehend
68 vom Gewässer Verzeichnis.
69
70 \textbf{Geometrie}
71 \\Der Geometrie Typ, der für diese Klasse von Shapefiles erwartet wird.
72
73 \textbf{Attribute}
74 \\Eine Liste der Attribute, die vom Parser aus dem Shape gelesen werden.
75
76
77 \subsubsection{Achsen}
78 \hspace{1cm}
79 \begin{tabular}[t]{ll}
80 Pfad & Geodaesie/Flussachse+km \\
81 Geometrie & LINESTRING \\
82 Attribute & name, kind \\
83 \end{tabular}
84
85
86 \subsubsection{Hydrologische Grenzen}
87 \hspace{1cm}
88 \begin{tabular}[t]{ll}
89 Pfad & Hydrologie/Hydr.Grenzen/Linien \\
90 Geometrie & LINESTRING, POLYGON \\
91 Attribute & name, kind \\
92 \end{tabular}
93
94 \subsubsection{Bauwerke}
95 \hspace{1cm}
96 \begin{tabular}[t]{ll}
97 Pfad & Geodaesie/Bauwerke \\
98 Geometrie & LINESTRING \\
99 Attribute & name, Name, KWNAAM \\
100 \end{tabular}
101
102
103 \subsubsection{Einzugsgebiete}
104 \hspace{1cm}
105 \begin{tabular}[t]{ll}
106 Pfad & Hydrologie/Einzugsgebiet \\
107 Geometrie & POLYGON, MULTIPOLYGON \\
108 Attribute & name, Name, AREA, area \\
109 \end{tabular}
110
111
112 \subsubsection{Querprofilspuren}
113 \hspace{1cm}
114 \begin{tabular}[t]{ll}
115 Pfad & Geodaesie/Querprofile \\
116 Geometrie & LINESTRING \\
117 Attribute & KILOMETER, KM, STATION, ELEVATION \\
118 \end{tabular}
119
120
121 \subsubsection{Festpunkte}
122 \hspace{1cm}
123 \begin{tabular}[t]{ll}
124 Pfad & Geodaesie/Festpunkte \\
125 Geometrie & POINT \\
126 Attribute & name, KM, ELBE\_KM, X, Y, HPGP \\
127 \end{tabular}
128
129
130 \subsubsection{Talaue}
131 \hspace{1cm}
132 \begin{tabular}[t]{ll}
133 Pfad & Hydrologie/Hydr.Grenzen \\
134 Geometrie & POLYGON, MULTIPOLYGON \\
135 Attribute & name \\
136 \end{tabular}
137
138
139 \subsubsection{Pegelstationen}
140 \hspace{1cm}
141 \begin{tabular}[t]{ll}
142 Pfad & Hydrologie/Streckendaten \\
143 Geometrie & POINT \\
144 Attribute & Name, name, MPNAAM \\
145 \end{tabular}
146
147
148 \subsubsection{Hochwasserschutzanlagen}
149 \hspace{1cm}
150 \begin{tabular}[t]{ll}
151 Pfad & Hydrologie/HW-Schutzanlagen \\
152 Geometrie & LINESTRING \\
153 Attribute & TYP, Bauart, Name, name \\
154 \end{tabular}
155
156
157 \subsubsection{Kilometrierung}
158 \hspace{1cm}
159 \begin{tabular}[t]{ll}
160 Pfad & Geodaesie/Flussachse+km \\
161 Geometrie & POINT \\
162 Attribute & name, km, KM \\
163 \end{tabular}
164
165
166 \subsubsection{Linien}
167 \hspace{1cm}
168 \begin{tabular}[t]{ll}
169 Pfad & Geodaesie/Linien \\
170 Geometrie & LINESTRING, MULTILINESTRING \\
171 Attribute & name, TYP, Z \\
172
173 Anmerkung & Wenn kein Attribut 'TYP' definiert ist, wird standardmäßig der Wert \\
174 & 'DAMM' angenommen. Fehlt ein Attribut 'Z' wird '9999' als Höhe \\
175 & angenommen. \\
176 \end{tabular}
177
178
179 \subsubsection{Überschwemmungsfläche}
180 \hspace{1cm}
181 \begin{tabular}[t]{ll}
182 Pfad & Hydrologie/UeSG/Berechnung \\
183 Geometrie & POLYGON, MULTIPOLYGON \\
184 Attribut & name, diff, count, area, perimeter \\
185 \end{tabular}
186
187
188 \subsection{Systemanforderungen}
189 \label{Systemanforderungen}
190 \begin{itemize}
191 \item Oracle Datenbank inkl. Schema für FLYS
192 \item GDAL Binding für Python mit Oracle Support
193 \item ogr2ogr
194 \item Python $>=$ 2.6
195 \end{itemize}
196
197
198 \subsection{Installationsanleitung}
199 \label{Installationsanleitung}
200 \begin{itemize}
201
202 \item Python\\
203 Zum Starten des Importers ist es notwendig Python zu installieren. Dies können
204 Sie mit folgendem Befehl auf der Kommandozeile erledigen:
205
206 \begin{lstlisting}
207 zypper in python
208 \end{lstlisting}
209
210 \item Oracle Instantclient\\
211 Der Oracle Instantclient 11.2 wird benötigt, damit der Importer mittels Python
212 und GDAL in die bestehende Oracle Datenbank schreiben kann. Dazu ist es
213 erforderlich, folgende Archive von Oracle herunterzuladen. Zu finden sind die
214 folgenden Pakete unter\\
215 \href{http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html}{http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html}
216
217 \begin{itemize}
218 \item instantclient-basic-linux-x86-64-11.2.0.2.0.zip
219 \item instantclient-sdk-linux-x86-64-11.2.0.2.0.zip
220 \item instantclient-sqlplus-linux-x86-64-11.2.0.2.0.zip
221 \end{itemize}
222
223 Anschließend führen Sie folgende Befehle auf der Kommandozeile aus:
224
225 \begin{lstlisting}
226
227 mkdir /opt
228
229 unzip ~/instantclient-basic-linux-x86-64-11.2.0.2.0.zip -d /opt
230 unzip ~/instantclient-sdk-linux-x86-64-11.2.0.2.0.zip -d /opt
231 unzip ~/instantclient-sqlplus-linux-x86-64-11.2.0.2.0.zip -d /opt
232
233 mkdir /opt/instantclient_11_2/lib
234 cd /opt/instantclient_11_2/lib
235 ln -s ../libclntsh.so.11.1 .
236 ln -s ../libclntsh.so.11.1 libclntsh.so
237 ln -s ../libnnz11.so .
238 ln -s ../libocci.so.11.1 .
239 ln -s ../libocci.so.11.1 libocci.so
240 ln -s ../libociei.so .
241 ln -s ../libocijdbc11.so .
242 ln -s ../libsqlplusic.so .
243 ln -s ../libsqlplus.so .
244
245 rpm -i --nodeps ~/flys-importer/rpm/RPMS/x86_64/libgdal1180-1.8.0-intevation1.x86_64.rpm
246 rpm -i --nodeps ~/flys-importer/rpm/RPMS/x86_64/libgdal180-devel-1.8.0-intevation1.x86_64.rpm
247 rpm -i --nodeps ~/flys-importer/rpm/RPMS/x86_64/gdal180-1.8.0-intevation1.x86_64.rpm
248
249 \end{lstlisting}
250
251 Sollten keine Fehler aufgetreten sein, haben Sie den \textit{Oracle
252 Instantclient 11.2} erfolgreich entpackt und im Dateisystem unter
253 \textit{/opt/instantclient\_11\_2} abgelegt. Mit den Befehlen $rpm -i --nodeps$
254 haben Sie anschließend die notwendigen Bindings installiert, damit der Importer
255 die Geodaten in die Oracle Datenbank schreiben kann.
256
257 \end{itemize}
258
259
260 \subsection{Konfiguration}
261 \label{Konfiguration}
262 Der Geodaten Importer kann über die Datei \textit{contrib/run\_geo.sh}
263 konfiguriert werden. Öffnen Sie die Datei mit einem Texteditor Ihrer Wahl.
264 In den Zeilen 4-9 werden Optionen definiert, die zwangsläufig angepasst
265 werden müssen:
266
267 \textbf{RIVER\_PATH}
268 \\Der Pfad zum Gewässer im Dateisystem.
269
270 \textbf{RIVER\_ID}
271 \\Die Datenbank ID des zu importierenden Gewässers.
272
273 \textbf{TARGET\_SRS}
274 \\Das EPSG Referenzsystem in das die Geodaten beim Import projeziert werden
275 sollen.
276
277 \textbf{HOST}
278 \\Der Host der Datenbank.
279
280 \textbf{USER}
281 \\Der Nutzer, der zum Verbinden zur Datenbank verwendet wird.
282
283 \textbf{PASS}
284 \\Das Passwort für USER zum Verbinden zur Datenbank.
285
286 In den Zeilen 12-23 werden weitere Optionen definiert, die bei Bedarf angepasst
287 werden können. Falls nicht anders angegeben, können die Optionen mit den Werten
288 `0` und `1` belegt werden.
289
290 \textbf{VERBOSE}
291 \\Dieser Wert gibt die Granularität der Log-Ausgaben während des
292 Imports an. Je höher der Wert, desto mehr Informationen werden
293 in das Logfile geschrieben. Aktuell sind die Werte `0`, `1` und
294 `2` definiert. Wird der Wert `0` gesetzt, werden nur Fehler und
295 Warnungen in das Logfile geschrieben. Bei `1` werden neben
296 Fehlern und Warnungen auch Infos in das Logfile geschrieben. Bei
297 `2` werden sämtliche Ausgaben des Programms geschrieben. Dieser
298 Modus ist hauptsächlich für die Entwicklung gedacht.
299
300 \textbf{SKIP\_AXIS}
301 \\Bei gesetztem Wert `1` werden keine Flussachsen importiert.
302
303 \textbf{SKIP\_KMS}
304 \\Bei gesetztem Wert `1` werden keine Kilometrierungen importiert.
305
306 \textbf{SKIP\_CROSSSECTIONS}
307 \\Bei gesetztem Wert `1` werden keine Querprofilespuren importiert.
308
309 \textbf{SKIP\_LINES}
310 \\Bei gesetztem Wert `1` werden keine Linien importiert.
311
312 \textbf{SKIP\_FIXPOINTS}
313 \\Bei gesetztem Wert `1` werden keine Festpunkte importiert.
314
315 \textbf{SKIP\_BUILDINGS}
316 \\Bei gesetztem Wert `1` werden keine Bauwerke importiert.
317
318 \textbf{SKIP\_FLOODPLAINS}
319 \\Bei gesetztem Wert `1` werden keine Talauen importiert.
320
321 \textbf{SKIP\_HYDR\_BOUNDARIES}
322 \\Bei gesetztem Wert `1` werden keine hydrologischen Grenzen importiert.
323
324 \textbf{SKIP\_HWS}
325 \\Bei gesetztem Wert `1` werden kein Hochwasserschutzanlagen importiert.
326
327 \textbf{SKIP\_GAUGE\_LOCATION}
328 \\Bei gesetztem Wert `1` werden keine Pegelorte importiert.
329
330 \textbf{SKIP\_CATCHMENTS}
331 \\Bei gesetztem Wert `1` werden keine Einzugsgebiete importiert.
332
333 \textbf{SKIP\_UESG}
334 \\Bei gesetztem Wert `1` werden keine Überschwemmungsflächen importiert.
335
336
337 \subsection{Starten des Geodaten Importers}
338 \label{Starten des Geodaten Importers}
339 Der Geodaten Importer wird mittels eines Shellskripts von einer Konsole
340 gestartet. Dazu führen Sie folgenden Befehl aus:\\
341
342 \begin{lstlisting}
343 sh contrib/run_geo.sh > geo-import.log
344 \end{lstlisting}
345
346 Der Importer wird nun gestartet. Sämtliche Log-Ausgaben werden in die Datei
347 $geo-import.log$ geschrieben.
348
349 \textbf{Hinweis}
350 \\Bitte beachten Sie, dass der Geodaten Importer aufgrund der eingesetzten
351 Technologien derzeit nicht in der Lage ist, lesend auf die Oracle Datenbank
352 zuzugreifen. Entsprechend kann beim Import nicht festgestellt werden, ob sich
353 Shapefiles bereits in der Datenbank befinden, oder nicht. Ein erneuter Import
354 Vorgang der Geodaten würde also dazu führen, dass Geometrien doppelt in der
355 Datenbank abgelegt werden.
356

http://dive4elements.wald.intevation.org