Mercurial > dive4elements > river
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 |