source: trunk/data/konvert/postnas_0.6/konv_batch.sh @ 178

Revision 165, 5.7 KB checked in by frank.jaeger, 12 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## Stand:
8##  2011-02-01  Umstellen auf die Verarbeitung gezippter NAS-Daten.
9##       Es wird dabei folgende Ordner-Struktur erwartet:
10##       /mandant/
11##               /0001/*.xml.zip
12##               /0002/*.xml.zip
13##               usw.
14##               /temp/
15##       Also auf der gleichen Ebene wie die Datenordner muss ein Ordner /temp/ existieren.
16##       Dort werden die NAS-Daten temporär ausgepackt.
17##       Relativ zum mitgegebenen Parameter ist das: '../temp/'
18##
19##       Achtung: Parallel laufende Konvertierungen zum gleichen Mandanten
20##                würden hier durcheinander geraten. Vermeiden!
21##
22##  ##  2011-07-25 PostNAS 06, Umbenennung
23##  ##  2011-09-20 Verarbeiten der delete-Eintraege bei Aktualisierung.
24##                 Siehe http://trac.wheregroup.com/PostNAS/wiki/SchrittfuerSchritt
25##  ##  2011-11-04 Verarbeitung OHNE Parameter 3 Datenbank-User und  4 DB-Passwort.
26##                 Berechtigung regeln über "/etc/postgresql/[version]/main/pg_hba.conf"
27##                 Dort Zeile: "local  [db]  [user]  ident sameuser"
28##       Alt:    # PG:"dbname=${DBNAME} user=${DBUSER} password=${DBPASS} host=localhost port=5432"
29##      2011-11-22 Korrektur: UPD=$3 nicht $4
30##                 Protokollierung nach Datenbanken getrennt
31##      2012-02-28 Neuer Parameter um Post-Prozessing zu unterdrücken
32##
33## Konverter:   /opt/gdal-1.9/bin/ = GDAL 1.9 / PostNAS 0.6
34## Koordinaten: EPSG:25832  UTM, Zone 32
35##              -a_srs EPSG:25832   - bleibt im UTM-System (korrigierte Werte)
36##
37echo "**************************************************"
38echo "**   K o n v e r t i e r u n g     PostNAS 0.6  **"
39echo "**************************************************"
40## Parameter:
41ORDNER=$1
42DBNAME=$2
43UPD=$3
44PP=$4
45if [ $ORDNER == "" ]
46then
47        echo "FEHLER: Parameter 1 'Ordner' ist leer"
48        exit 1
49fi
50if [ $DBNAME == "" ]
51then
52        echo "FEHLER: Parameter 2 'Datenbank' ist leer"
53        exit 2
54fi
55if [ $UPD == "a" ]
56then
57        verarb="NBA-Aktualisierung"
58        update=" -update "
59else
60        if [ $UPD == "e" ]
61        then
62                verarb="Erstladen"
63                update=""
64        else
65                echo "FEHLER: Parameter 3 'Aktualisierung' ist weder e noch a"
66                exit 3
67        fi
68fi
69if [ $PP == "nopp" ]
70then
71        echo "KEIN Post-Processing nach dieser Konvertierung."
72else
73        if [ $PP == "pp" ]
74        then
75                echo "normales Post-Processing."
76        else
77                echo "FEHLER: Parameter 4 'Post-Proscessing' ist weder 'nopp' noch 'pp'"
78                exit 4
79        fi
80fi
81layer=""
82# leer = alle Layer
83## Fehlerprotokoll:
84errprot='/data/konvert/postnas_0.6/log/postnas_err_'$DBNAME'.prot'
85#
86# DB-Connection
87con="-p 5432 -d ${DBNAME} "
88#
89echo "Datenbank-Name . . = ${DBNAME}"
90echo "Ordner NAS-Daten . = ${ORDNER}"
91echo "Verarbeitungs-Modus= ${verarb}"
92echo " "
93cd ${ORDNER}
94rm ../temp/*.gfs
95echo "Dateien in " ${ORDNER} " (ls) :"
96ls
97# Alte delete-Eintraege (vorangegangener Abbruch?) loeschen, oder abarbeiten?
98echo 'TRUNCATE table "delete";' | psql $con
99for zipfile in *.zip ; do
100  echo " "
101  echo "*********"
102  echo "* Archiv: " $zipfile
103  rm ../temp/*.xml
104  unzip ${zipfile}  -d ../temp
105  # Es sollte eigentlich immer geneu ein XML-File in jedem ZIP-File stecken,
106  # aber es geht auch anders.
107  for nasdatei in ../temp/*.xml ; do
108    echo "* Datei:  " $nasdatei
109    # Zwischenueberschrift im Fehlerprotokoll
110    echo "* Datei: " $nasdatei >> $errprot
111    if [ $UPD == "e" ]
112    then
113      # E R S T L A D E N
114      /opt/gdal-1.9/bin/ogr2ogr -f "PostgreSQL" -append  ${update}  -skipfailures \
115         PG:"dbname=${DBNAME} host=localhost port=5432" \
116         -a_srs EPSG:25832  ${nasdatei}  ${layer}  2>> $errprot
117      # Abbruch bei Fehler?
118      nasresult=$?
119      echo "* Resultat: " $nasresult " fuer " ${nasdatei}
120    else
121      # A K T U A L I S I E R U N G
122      echo "- 1. Nur delete-Layer auswerten"
123      /opt/gdal-1.9/bin/ogr2ogr -f "PostgreSQL" -append  ${update}  -skipfailures \
124         PG:"dbname=${DBNAME} host=localhost port=5432" \
125         -a_srs EPSG:25832  ${nasdatei}  delete  2>> $errprot
126      nasresult=$?
127      echo "* Resultat: " $nasresult " fuer delete aus " ${nasdatei}
128      #
129      # Durch die Funktion 'deleteFeature' in der Datenbank die delete-Objekte abarbeiten
130      echo "- 1a. delete-Layer abarbeiten:"
131      psql $con  < /data/konvert/postnas_0.6/delete.sql
132      #
133      echo "- 2. alle Layer auswerten"
134      /opt/gdal-1.9/bin/ogr2ogr -f "PostgreSQL" -append  ${update}  -skipfailures \
135        PG:"dbname=${DBNAME} host=localhost port=5432" \
136        -a_srs EPSG:25832  ${nasdatei}  ${layer}  2>> $errprot
137      nasresult=$?
138      echo "* Resultat: " $nasresult " fuer " ${nasdatei}
139      #
140      echo "- 2a. delete-Layer nochmals leoeschen:"
141      echo 'TRUNCATE table "delete";' | psql $con
142    fi
143  done
144  # Ende Zipfile
145  echo "*********"
146done
147rm ../temp/*.xml
148echo " "
149echo "** Ende Konvertierung Ordner ${ORDNER}"
150##
151if [ $PP == "nopp" ]
152then
153  echo "** KEIN Post-Processing - Dies Spaeter nachholen."
154  # Dies kann sinnvoll sein, wenn mehrere kleine Aktualisierungen hintereinander auf einem großen Bestand laufen
155  # Der Aufwand für das Post-Processing ist dann nur bei der LETZTEN Aktualisierung notwendig.
156else
157  echo "** Optimierte Nutzungsarten neu Laden:"
158  psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.6/nutzungsart_laden.sql
159  ##
160  echo "** Optimierte Gemeindetabelle neu Laden:"
161  psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.6/gemeinden_laden.sql
162fi
163#
164echo "Das Fehler-Protokoll wurde ausgegeben in die Datei '$errprot' "
165##
Note: See TracBrowser for help on using the repository browser.