source: Version-0.8/import/konv_batch.sh @ 326

Revision 326, 7.4 KB checked in by frank.jaeger, 10 years ago (diff)

laufende Arbeiten um Tabelle "alkis_beziehungen" aus den Views zu entfernen

Line 
1#!/bin/bash
2## -------------------------------------------------
3## Konvertierung von ALKIS NAS-Format nach PostGIS -
4## NAS-Daten in einem Ordner konvertieren          -
5## Batch-Teil, Aufruf mit geprueften Parametern    -
6## -------------------------------------------------
7##
8## Ordner-Struktur:
9##   /mandant/
10##           /0001/*.xml.zip
11##           /0002/*.xml.zip
12##          usw.
13##           /temp/
14##   Auf der gleichen Ebene wie die Datenordner muss ein Ordner /temp/ existieren.
15##   Dort werden die NAS-Daten temporaer ausgepackt.
16##   Relativ zum mitgegebenen Parameter ist das: '../temp/'
17##   Parallel laufende Konvertierungen zum gleichen Mandanten
18##   wuerden hier durcheinander geraten. Vermeiden!
19##
20## Stand:
21##   2012-02-10 Umbennung nach 0.7
22##   2012-02-17 Optimierung
23##   2012-02-28 Neuer Parameter 4 um Post-Prozessing zu unterdruecken
24##   2012-04-25 Durch GDAL Patch #5444 werden die Loeschungen als Trigger auf Tabelle 'delete' verarbeitet
25##   2012-05-18 Umzug neue GDI, GDAL-Trunk unter Pfad
26##   2012-06-04 SQL-Skripte in deren Verzeichnis ausfuehren (Voraussetzung fuer \i Includes)
27##   2012-10-30 Umgebungsvariable setzen, delete-Tabelle am Ende fuer Analyse gefuellt lassen.
28##              Test als 0.7a mit gepatchter gdal-Version (noch 2.0dev)
29##   2013-10-16 F.J. krz: Neues Script "pp_praesentation_action.sql" fÃŒr Reparatur der
30##              PrÀsentationsobjekte Straßenname im Post-Processing
31##   2013-10-24 F.J. krz: Zwischenlösung "praesentation_action.sql" wieder deaktiviert.
32##   2014-01-31 F.J. krz: Import Eintrag erzeugen (nach Vorschlag Marvin Brandt, Unna)
33##   2014-02-13 A.Emde WhereGroup: EinfÃŒhrung DBUSER, damit im Skript der Datenbankbenutzer angegeben werden kann
34##   2014-05-12 F.J. krz: Unterschiedliche Pfade in Test (TRUNK) und Produktion (Rel. 1.11.0)
35##   2014-06-18 F.J. DB-User nicht "postgres" (in $con).
36##                   Konverter ind Nacharbeiten sonst mit unterschiedlichem User.
37##                   Abgleich Test/Prod-Version.
38##                   Entfernen der historischen Objekte nach Konvertierung.
39##   2014-08-28 F.J. krz: Parameter "--config PG_USE_COPY YES" zur Beschleunigung
40
41## ToDo: Option "-skipfailures" nach Test entfernen ?
42
43## Koordinaten: EPSG:25832  UTM, Zone 32
44##              -a_srs EPSG:25832   - bleibt im UTM-System (korrigierte Werte)
45##
46
47POSTNAS_HOME=$(dirname $0)
48
49# Konverterpfad
50
51# TRUNK-Version (immer letzter Stand der Entwicklung)
52  PATH=/opt/gdal-2.0/bin:$PATH
53
54# Release GDAL 1.11.0 vom April 2014
55# PATH=/opt/gdal-1.11/bin:$PATH
56
57EPSG=25832
58 
59#DBUSER=postgres
60DBUSER=b600352
61
62if [ $DBUSER == "" ]
63then
64  echo "kein DBUSER gesetzt"
65else
66  PGUSER=" -U ${DBUSER} "
67fi
68
69if [ $DBUSER == "" ]
70then
71  echo "kein DBUSER gesetzt"
72else
73  OGRPGUSER=" user=${DBUSER}"
74fi
75 
76echo "**********************************************"
77echo "**   K o n v e r t i e r u n g     PostNAS  **"
78echo "**********************************************"
79## Parameter:
80ORDNER=$1
81DBNAME=$2
82UPD=$3
83PP=$4
84if [ $ORDNER == "" ]
85then
86        echo "Parameter 1 'Ordner' ist leer"
87        exit 1
88fi
89if [ $DBNAME == "" ]
90then
91        echo "Parameter 2 'Datenbank' ist leer"
92        exit 2
93fi
94if [ $UPD == "a" ]
95then
96        verarb="NBA-Aktualisierung"
97        update=" -update "
98else
99        if [ $UPD == "e" ]
100        then
101                verarb="Erstladen"
102                update=""
103        else
104                echo "Parameter 3 'Aktualisierung' ist weder e noch a"
105                exit 3
106        fi
107fi
108if [ $PP == "nopp" ]
109then
110        echo "KEIN Post-Processing nach dieser Konvertierung."
111else
112        if [ $PP == "pp" ]
113        then
114                echo "normales Post-Processing."
115        else
116                echo "FEHLER: Parameter 4 'Post-Proscessing' ist weder 'nopp' noch 'pp'"
117                exit 4
118        fi
119fi
120
121#
122# Fehlerprotokoll:
123#
124  errprot=${POSTNAS_HOME}'/log/postnas_err_'$DBNAME'.prot'
125
126  echo "GDAL/PostNAS Konverter-Version:" >> $errprot
127  ogr2ogr --version >> $errprot
128
129# DB-Connection
130  con="${PGUSER} -p 5432 -d ${DBNAME} "
131  echo "Datenbank-Name . . = ${DBNAME}"
132  echo "DBUSER ${DBUSER}"
133  echo "PGUSER ${PGUSER}"
134  echo "OGRPGUSER ${OGRPGUSER}"
135  echo "Ordner NAS-Daten . = ${ORDNER}"
136  echo "Verarbeitungs-Modus= ${verarb}"
137  echo " "
138  echo "POSTNAS_HOME ${POSTNAS_HOME}"
139  echo " "
140
141  # noch alte delete-Eintraege in DB?
142  echo "Leeren der delete-Tabelle"
143  echo 'TRUNCATE table "delete";' | psql $con
144
145#
146# Import Eintrag erzeugen
147#
148# Die dadurch erzeugte Import-ID dient zur Steuerung des Löschens alter Relationen im Trigger.
149# Wird die Datenbank MIT Historie geladen, muss die folgende Zeile auskommentiert werden.
150echo "INSERT INTO import (datum,verzeichnis,importart) VALUES ('"$(date '+%Y-%m-%d %H:%M:%S')"','"${ORDNER}"','"${verarb}"');" | psql $con
151
152#
153# Ordner abarbeiten
154#
155  cd ${ORDNER}
156  rm ../temp/*.gfs
157  echo "Dateien in " ${ORDNER} " (ls) :"
158  ls
159  for zipfile in *.zip ; do
160    echo " "
161    rm ../temp/*.xml
162    echo "*********"
163   #echo "* Archiv: " $zipfile
164    unzip ${zipfile}  -d ../temp
165    # Es sollte nur ein XML-File in jedem ZIP-File stecken, aber es geht auch anders.
166    for nasdatei in ../temp/*.xml ; do
167      # echo "* Datei:  " $nasdatei
168      # Zwischenueberschrift im Fehlerprotokoll
169      echo "* Datei: " $nasdatei >> $errprot
170      #
171      # Umgebungsvariable setzen:
172        export GML_FIELDTYPES=ALWAYS_STRINGS    # PostNAS behandelt Zahlen wie Strings, PostgreSQL-Treiber macht daraus Zahlen
173        export OGR_SETFIELD_NUMERIC_WARNING=YES # Meldung abgeschnittene Zahlen?
174       #export CPL_DEBUG=ON                     # Meldung, wenn Attribute ueberschrieben werden
175      #
176      # PostNAS Konverter-Aufruf
177      #
178      # -skipfailures    #
179      # -overwrite       #
180      ogr2ogr -f "PostgreSQL" -append  ${update} -skipfailures \
181         PG:"dbname=${DBNAME} host=localhost port=5432 ${OGRPGUSER}" -a_srs EPSG:$EPSG ${nasdatei} 2>> $errprot
182      nasresult=$?
183      echo "* Resultat: " $nasresult " fuer " ${nasdatei} | tee -a $errprot
184    done # Ende Zipfile
185  done # Ende Ordner
186  rm ../temp/*.xml
187  echo " "
188  echo "** Ende Konvertierung Ordner ${ORDNER}"
189
190#
191# Post-Processing / Nacharbeiten
192#
193  if [ $PP == "nopp" ]
194  then
195    echo "** KEIN Post-Processing - Dies spaeter nachholen."
196    # Dies kann sinnvoll sein, wenn mehrere kleine Aktualisierungen hintereinander auf einem grossen Bestand laufen
197    # Der Aufwand fuer das Post-Processing ist dann nur bei der LETZTEN Aktualisierung notwendig.
198
199  else
200
201    echo "** Post-Processing (Nacharbeiten zur Konvertierung)"
202
203    echo "** - Optimierte Nutzungsarten neu Laden:"
204    (cd $POSTNAS_HOME; psql $con -f nutzungsart_laden.sql)
205 
206    echo "-----------"
207 
208    echo "** - Fluren, Gemarkungen, Gemeinden und Straßen-Namen neu Laden:"
209    (cd $POSTNAS_HOME; psql $con -f pp_laden.sql)
210
211    # echo "** - PrÀsentationsobjekte generieren:"
212    # (cd $POSTNAS_HOME; psql $con -f pp_praesentation_action.sql)
213
214  fi
215
216  if [ "$(readlink $POSTNAS_HOME/alkis-trigger.sql)" = "alkis-trigger-kill.sql" ]; then
217
218     # Durch Einfuegen in Tabelle 'delete' werden Loeschungen anderer Tabellen getriggert
219     echo "** delete-Tabelle enthaelt:"
220     psql $con -c 'SELECT COUNT(featureid) AS delete_zeilen FROM "delete";'
221
222     echo "   delete-Tabelle loeschen:"
223     psql $con -c 'TRUNCATE table "delete";'
224
225    # Wenn die Datenbank MIT Historie geladen wurde, man diese aber gar nicht braucht,
226    # dann hinterher aufraeumen der historischen Objekte
227    echo "** geendete Objekte entfernen:"
228
229    # Function:
230    psql $con -c "SELECT alkis_delete_all_endet();"
231
232  fi
233
234  echo "Das Fehler-Protokoll wurde ausgegeben in die Datei $errprot"
235  #echo "HINWEIS: -skipfailures  fuer Produktion wieder einschalten."
236 
Note: See TracBrowser for help on using the repository browser.