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

Revision 113, 5.7 KB checked in by frank.jaeger, 13 years ago (diff)

Erweiterung Script 'konv_batch.sh' fuer Aktualisierung mit delete-Tabelle und Datenbank-Function.

RevLine 
[105]1#!/bin/sh
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##  2010-11-10  Tabellen "Optimierte Nutzungsarten" Laden
9##  2010-11-25  Tabelle  "Optimierte Gemeinden"     Laden
10##
11##  2011-02-01  Umstellen auf die Verarbeitung gezippter NAS-Daten.
12##       Es wird dabei folgende Ordner-Struktur erwartet:
13##       /mandant/
14##               /0001/*.xml.zip
15##               /0002/*.xml.zip
16##             usw.
17##               /temp/
18##       Also auf der gleichen Ebene wie die Datenordner muss ein Ordner /temp/ existieren.
19##       Dort werden die NAS-Daten temporär ausgepackt.
20##       Relativ zum mitgegebenen Parameter ist das: ../temp/
21##
22##       Achtung: Parallel laufende Konvertierungen zum gleichen Mandanten
23##                würden hier durcheinander geraten. Vermeiden!
24##
25##       Alternative:
26##       Könnte ogr2ogr auch pipe mit stdin verarbeiten?
27##       $  unzip -p  aktuelle.xml.zip  | ogr2ogr ....
28##       Wahrscheinlich nicht, wie heisst dann die *.gfs?
29##
30##  ##  2011-07-25 PostNAS 06, Umbenennung
[113]31##  ##  2011-09-20 Verarbeiten der delete-Eintraege bei Aktualisierung.
32##                 Siehe http://trac.wheregroup.com/PostNAS/wiki/SchrittfuerSchritt
[105]33##
34## Konverter:   /opt/gdal-1.9/bin/ = GDAL 1.9 / PostNAS 0.6
35## Koordinaten: EPSG:25832  UTM, Zone 32
36##              -a_srs EPSG:25832   - bleibt im UTM-System (korrigierte Werte)
37##
38echo "**************************************************"
39echo "**   K o n v e r t i e r u n g     PostNAS 0.6  **"
40echo "**************************************************"
41## Auswerten der Parameter:
42ORDNER=$1
43DBNAME=$2
44DBUSER=$3
45DBPASS=$4
46UPD=$5
47##
48## Fehlerprotokoll
49errprot='/data/konvert/postnas_0.6/log/postnas_err.prot'
50## ! Bei parallelen Konvertierungen sollte die Ausgabe in getrennte Logfiles ausgegeben werden.
51## ! Ggf. die Start-Zeit in den Namen einbauen?
52##
53if [ $ORDNER = "" ]
54then
55        echo "Parameter 1 'Ordner' ist leer"
56        exit 1
57fi
58##
59if [ $DBNAME = "" ]
60then
61        echo "Parameter 2 'Datenbank' ist leer"
62        exit 2
63fi
64##
65if [ $DBUSER = "" ]
66then
67        echo "Parameter 3 'DB-User' ist leer"
68        exit 3
69fi
70##
71if [ $DBPASS = "" ]
72then
73        echo "Parameter 4 'DB-Passwort' ist leer"
74        #exit 4
75        echo "Datenbank-Passwort?  (wird nicht angezeigt)"
76        stty -echo
77        read DBPASS
78        stty echo
79fi
80##
81if [ $UPD = "a" ]
82then
83        verarb="NBA-Aktualisierung"
84        update=" -update "
85else
86        verarb="Erstladen"
87        update=""
88fi
89layer=""
90# leer = alle Layer
[113]91#
92# DB-Connection
93con="-p 5432 -d ${DBNAME} "
94#
[105]95  echo "Datenbank-Name . . = ${DBNAME}"
96  echo "Ordner NAS-Daten . = ${ORDNER}"
97  echo "Datenbank-User . . = ${DBUSER}"
98  echo "Verarbeitungs-Modus= ${verarb}"
99  echo " "
100  cd ${ORDNER}
101  rm ../temp/*.gfs
102  echo "Dateien in " ${ORDNER} " (ls) :"
103  ls
[113]104  # Alte delete-Eintraege (vorangegangener Abbruch?) loeschen, oder abarbeiten?
105  echo 'TRUNCATE table "delete";' | psql $con -U ${DBUSER}
106  #
[105]107# for zipfile in ${ORDNER}/*.xml.zip ; do
108  for zipfile in *.zip               ; do
109    echo " "
[113]110    echo "*********"
[105]111    echo "* Archiv: " $zipfile
112    rm ../temp/*.xml
113    unzip ${zipfile}  -d ../temp
[113]114 
115    # Es sollte eigentlich immer geneu ein XML-File in jedem ZIP-File stecken,
116    # aber es geht auch anders.
[105]117    for nasdatei in ../temp/*.xml ; do
118      echo "* Datei:  " $nasdatei
119      # Zwischenueberschrift im Fehlerprotokoll
120      echo "* Datei: " $nasdatei >> $errprot
121      # Groesse und Datum anzeigen
122      #ls -l ${nasdatei}
[113]123      if [ $UPD = "e" ]
124      then
125        # E R S T L A D E N
126        /opt/gdal-1.9/bin/ogr2ogr -f "PostgreSQL" -append  ${update}  -skipfailures \
127           PG:"dbname=${DBNAME} user=${DBUSER} password=${DBPASS} host=localhost port=5432" \
128           -a_srs EPSG:25832  ${nasdatei}  ${layer}  2>> $errprot
129        # Abbruch bei Fehler?
130        nasresult=$?
131        echo "* Resultat: " $nasresult " fuer " ${nasdatei}
132      else
133        # A K T U A L I S I E R U N G
134        echo "- 1. Nur delete-Layer auswerten"
135        /opt/gdal-1.9/bin/ogr2ogr -f "PostgreSQL" -append  ${update}  -skipfailures \
136           PG:"dbname=${DBNAME} user=${DBUSER} password=${DBPASS} host=localhost port=5432" \
137           -a_srs EPSG:25832  ${nasdatei}  delete  2>> $errprot
138        nasresult=$?
139        echo "* Resultat: " $nasresult " fuer delete aus " ${nasdatei}
140        #
141        # Durch die Funktion 'deleteFeature' in der Datenbank die delete-Objekte abarbeiten
142        echo "- 1a. delete-Layer abarbeiten:"
143        psql $con -U ${DBUSER}  < /data/konvert/postnas_0.6/delete.sql
144        #
145        echo "- 2. alle Layer auswerten"
146        /opt/gdal-1.9/bin/ogr2ogr -f "PostgreSQL" -append  ${update}  -skipfailures \
147          PG:"dbname=${DBNAME} user=${DBUSER} password=${DBPASS} host=localhost port=5432" \
148          -a_srs EPSG:25832  ${nasdatei}  ${layer}  2>> $errprot
149        nasresult=$?
150        echo "* Resultat: " $nasresult " fuer " ${nasdatei}
151        #
152        echo "- 2a. delete-Layer nochmals leoeschen:"
153        echo 'TRUNCATE table "delete";' | psql $con -U ${DBUSER}
154      fi
[105]155    done
[113]156    # Ende Zipfile
157    echo "*********"
[105]158  done
159  rm ../temp/*.xml
[113]160  echo " "
[105]161  echo "** Ende Konvertierung Ordner ${ORDNER}"
162  echo "Das Fehler-Protokoll wurde ausgegeben in die Datei " $errprot
163##
164  echo "** Optimierte Nutzungsarten neu Laden:"
165  psql -p 5432 -d ${DBNAME}  -U ${DBUSER}  < /data/konvert/postnas_0.6/nutzungsart_laden.sql
166##
167  echo "** Optimierte Gemeindetabelle neu Laden:"
168  psql -p 5432 -d ${DBNAME}  -U ${DBUSER}  < /data/konvert/postnas_0.6/gemeinden_laden.sql
169##
Note: See TracBrowser for help on using the repository browser.