source: trunk/data/konvert/postnas_0.7/konv_batch.sh @ 165

Revision 165, 5.0 KB checked in by frank.jaeger, 8 years ago (diff)

Shellscripte: Post-Processing per Parameter unterdrücken

Line 
1#!/bin/bash
2## -------------------------------------------------
3## Konvertierung von ALKIS NAS-Format nach PosGIS  -
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 temporär ausgepackt.
16##   Relativ zum mitgegebenen Parameter ist das: '../temp/'
17##   Parallel laufende Konvertierungen zum gleichen Mandanten
18##   würden 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 unterdrücken
24##
25## Konverter:   /opt/gdal-1.9.1/bin/ = GDAL 1.9-DEV / PostNAS 0.7
26## Koordinaten: EPSG:25832  UTM, Zone 32
27##              -a_srs EPSG:25832   - bleibt im UTM-System (korrigierte Werte)
28##
29echo "**************************************************"
30echo "**   K o n v e r t i e r u n g     PostNAS 0.7  **"
31echo "**************************************************"
32## Parameter:
33ORDNER=$1
34DBNAME=$2
35UPD=$3
36PP=$4
37if [ $ORDNER == "" ]
38then
39        echo "Parameter 1 'Ordner' ist leer"
40        exit 1
41fi
42if [ $DBNAME == "" ]
43then
44        echo "Parameter 2 'Datenbank' ist leer"
45        exit 2
46fi
47if [ $UPD == "a" ]
48then
49        verarb="NBA-Aktualisierung"
50        update=" -update "
51else
52        if [ $UPD == "e" ]
53        then
54                verarb="Erstladen"
55                update=""
56        else
57                echo "Parameter 3 'Aktualisierung' ist weder e noch a"
58                exit 3
59        fi
60fi
61if [ $PP == "nopp" ]
62then
63        echo "KEIN Post-Processing nach dieser Konvertierung."
64else
65        if [ $PP == "pp" ]
66        then
67                echo "normales Post-Processing."
68        else
69                echo "FEHLER: Parameter 4 'Post-Proscessing' ist weder 'nopp' noch 'pp'"
70                exit 4
71        fi
72fi
73layer=""
74# leer = alle Layer
75## Fehlerprotokoll:
76errprot='/data/konvert/postnas_0.7/log/postnas_err_'$DBNAME'.prot'
77#
78# DB-Connection
79con="-p 5432 -d ${DBNAME} "
80echo "Datenbank-Name . . = ${DBNAME}"
81echo "Ordner NAS-Daten . = ${ORDNER}"
82echo "Verarbeitungs-Modus= ${verarb}"
83echo " "
84cd ${ORDNER}
85rm ../temp/*.gfs
86echo "Dateien in " ${ORDNER} " (ls) :"
87ls
88# Alte delete-Eintraege (vorangegangener Abbruch?) loeschen, oder abarbeiten?
89echo 'TRUNCATE table "delete";' | psql $con
90for zipfile in *.zip ; do
91  echo " "
92  echo "*********"
93  echo "* Archiv: " $zipfile
94  rm ../temp/*.xml
95  unzip ${zipfile}  -d ../temp
96  # Es sollte eigentlich immer geneu ein XML-File in jedem ZIP-File stecken,
97  # aber es geht auch anders.
98  for nasdatei in ../temp/*.xml ; do
99    echo "* Datei:  " $nasdatei
100    # Zwischenueberschrift im Fehlerprotokoll
101    echo "* Datei: " $nasdatei >> $errprot
102    if [ $UPD == "e" ]
103    then
104      # E R S T L A D E N
105      /opt/gdal-1.9.1/bin/ogr2ogr -f "PostgreSQL" -append  ${update}  -skipfailures \
106         PG:"dbname=${DBNAME} host=localhost port=5432" \
107         -a_srs EPSG:25832  ${nasdatei}  ${layer}  2>> $errprot
108      # Abbruch bei Fehler?
109      nasresult=$?
110      echo "* Resultat: " $nasresult " fuer " ${nasdatei}
111    else
112      # A K T U A L I S I E R U N G
113      echo "- 1. Nur delete-Layer auswerten"
114      /opt/gdal-1.9.1/bin/ogr2ogr -f "PostgreSQL" -append  ${update}  -skipfailures \
115         PG:"dbname=${DBNAME} host=localhost port=5432" \
116         -a_srs EPSG:25832  ${nasdatei}  delete  2>> $errprot
117      nasresult=$?
118      echo "* Resultat: " $nasresult " fuer delete aus " ${nasdatei}
119      #
120      # Durch die Funktion 'deleteFeature' in der Datenbank die delete-Objekte abarbeiten
121      echo "- 1a. delete-Layer abarbeiten:"
122      psql $con  < /data/konvert/postnas_0.7/delete.sql
123      #
124      echo "- 2. alle Layer auswerten"
125      /opt/gdal-1.9.1/bin/ogr2ogr -f "PostgreSQL" -append  ${update}  -skipfailures \
126        PG:"dbname=${DBNAME} host=localhost port=5432" \
127        -a_srs EPSG:25832  ${nasdatei}  ${layer}  2>> $errprot
128      nasresult=$?
129      echo "* Resultat: " $nasresult " fuer " ${nasdatei}
130      #
131      echo "- 2a. delete-Layer nochmals leoeschen:"
132      echo 'TRUNCATE table "delete";' | psql $con
133    fi
134  done
135  # Ende Zipfile
136  echo "*********"
137done
138rm ../temp/*.xml
139echo " "
140echo "** Ende Konvertierung Ordner ${ORDNER}"
141##
142if [ $PP == "nopp" ]
143then
144  echo "** KEIN Post-Processing - Dies Spaeter nachholen."
145  # Dies kann sinnvoll sein, wenn mehrere kleine Aktualisierungen hintereinander auf einem großen Bestand laufen
146  # Der Aufwand für das Post-Processing ist dann nur bei der LETZTEN Aktualisierung notwendig.
147else
148  echo "** Post-Processing (Nacharbeiten zur Konvertierung)"
149  echo "** - Optimierte Nutzungsarten neu Laden:"
150  psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.7/nutzungsart_laden.sql
151  ##
152  echo "** - Fluren / Gemarkungen / Gemeinden neu Laden:"
153  psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.7/pp_laden.sql
154fi
155#
156echo "Das Fehler-Protokoll wurde ausgegeben in die Datei '$errprot' "
157##
Note: See TracBrowser for help on using the repository browser.