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

Revision 165, 5.7 KB checked in by frank.jaeger, 12 years ago (diff)

Shellscripte: Post-Processing per Parameter unterdrücken

RevLine 
[130]1#!/bin/bash
[105]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
[130]13##               usw.
[105]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.
[130]17##       Relativ zum mitgegebenen Parameter ist das: '../temp/'
[105]18##
19##       Achtung: Parallel laufende Konvertierungen zum gleichen Mandanten
20##                würden hier durcheinander geraten. Vermeiden!
21##
22##  ##  2011-07-25 PostNAS 06, Umbenennung
[113]23##  ##  2011-09-20 Verarbeiten der delete-Eintraege bei Aktualisierung.
24##                 Siehe http://trac.wheregroup.com/PostNAS/wiki/SchrittfuerSchritt
[123]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"
[165]29##      2011-11-22 Korrektur: UPD=$3 nicht $4
[130]30##                 Protokollierung nach Datenbanken getrennt
[165]31##      2012-02-28 Neuer Parameter um Post-Prozessing zu unterdrücken
[105]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 "**************************************************"
[130]40## Parameter:
[105]41ORDNER=$1
42DBNAME=$2
[130]43UPD=$3
[165]44PP=$4
[130]45if [ $ORDNER == "" ]
[105]46then
[165]47        echo "FEHLER: Parameter 1 'Ordner' ist leer"
[105]48        exit 1
49fi
[130]50if [ $DBNAME == "" ]
[105]51then
[165]52        echo "FEHLER: Parameter 2 'Datenbank' ist leer"
[105]53        exit 2
54fi
[130]55if [ $UPD == "a" ]
[105]56then
57        verarb="NBA-Aktualisierung"
58        update=" -update "
59else
[130]60        if [ $UPD == "e" ]
61        then
62                verarb="Erstladen"
63                update=""
64        else
[165]65                echo "FEHLER: Parameter 3 'Aktualisierung' ist weder e noch a"
[130]66                exit 3
67        fi
[105]68fi
[165]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
[105]81layer=""
82# leer = alle Layer
[165]83## Fehlerprotokoll:
84errprot='/data/konvert/postnas_0.6/log/postnas_err_'$DBNAME'.prot'
[113]85#
86# DB-Connection
87con="-p 5432 -d ${DBNAME} "
88#
[130]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
[105]100  echo " "
[130]101  echo "*********"
102  echo "* Archiv: " $zipfile
[105]103  rm ../temp/*.xml
[130]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
[165]111    if [ $UPD == "e" ]
[130]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}"
[105]150##
[165]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
[130]163#
164echo "Das Fehler-Protokoll wurde ausgegeben in die Datei '$errprot' "
[105]165##
Note: See TracBrowser for help on using the repository browser.