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

Revision 123, 6.0 KB checked in by frank.jaeger, 12 years ago (diff)

Neue Flurstücks-Historie zur Buchauskunft, DB-Schema mit neuem Index, Konvertierungs-Scripte ohne User und Passwort

Line 
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
31##  ##  2011-09-20 Verarbeiten der delete-Eintraege bei Aktualisierung.
32##                 Siehe http://trac.wheregroup.com/PostNAS/wiki/SchrittfuerSchritt
33##  ##  2011-11-04 Verarbeitung OHNE Parameter 3 Datenbank-User und  4 DB-Passwort.
34##                 Berechtigung regeln über "/etc/postgresql/[version]/main/pg_hba.conf"
35##                 Dort Zeile: "local  [db]  [user]  ident sameuser"
36##       Alt:    # PG:"dbname=${DBNAME} user=${DBUSER} password=${DBPASS} host=localhost port=5432"
37##
38## Konverter:   /opt/gdal-1.9/bin/ = GDAL 1.9 / PostNAS 0.6
39## Koordinaten: EPSG:25832  UTM, Zone 32
40##              -a_srs EPSG:25832   - bleibt im UTM-System (korrigierte Werte)
41##
42echo "**************************************************"
43echo "**   K o n v e r t i e r u n g     PostNAS 0.6  **"
44echo "**************************************************"
45## Auswerten der Parameter:
46ORDNER=$1
47DBNAME=$2
48DBUSER=$3
49#DBPASS=$4
50#UPD=$5
51UPD=$4
52##
53## Fehlerprotokoll
54errprot='/data/konvert/postnas_0.6/log/postnas_err.prot'
55## ! Bei parallelen Konvertierungen sollte die Ausgabe in getrennte Logfiles ausgegeben werden.
56## ! Ggf. die Start-Zeit in den Namen einbauen?
57##
58if [ $ORDNER = "" ]
59then
60        echo "Parameter 1 'Ordner' ist leer"
61        exit 1
62fi
63##
64if [ $DBNAME = "" ]
65then
66        echo "Parameter 2 'Datenbank' ist leer"
67        exit 2
68fi
69##
70# if [ $DBUSER = "" ]
71# then
72#       echo "Parameter 3 'DB-User' ist leer"
73#       exit 3
74# fi
75##
76# if [ $DBPASS = "" ]
77# then
78#       echo "Parameter 4 'DB-Passwort' ist leer"
79#       #exit 4
80#       echo "Datenbank-Passwort?  (wird nicht angezeigt)"
81#       stty -echo
82#       read DBPASS
83#       stty echo
84#fi
85##
86if [ $UPD = "a" ]
87then
88        verarb="NBA-Aktualisierung"
89        update=" -update "
90else
91        verarb="Erstladen"
92        update=""
93fi
94layer=""
95# leer = alle Layer
96#
97# DB-Connection
98con="-p 5432 -d ${DBNAME} "
99#
100  echo "Datenbank-Name . . = ${DBNAME}"
101  echo "Ordner NAS-Daten . = ${ORDNER}"
102# echo "Datenbank-User . . = ${DBUSER}"
103  echo "Verarbeitungs-Modus= ${verarb}"
104  echo " "
105  cd ${ORDNER}
106  rm ../temp/*.gfs
107  echo "Dateien in " ${ORDNER} " (ls) :"
108  ls
109  # Alte delete-Eintraege (vorangegangener Abbruch?) loeschen, oder abarbeiten?
110# echo 'TRUNCATE table "delete";' | psql $con  -U ${DBUSER}
111  echo 'TRUNCATE table "delete";' | psql $con
112  #
113# for zipfile in ${ORDNER}/*.xml.zip ; do
114  for zipfile in *.zip               ; do
115    echo " "
116    echo "*********"
117    echo "* Archiv: " $zipfile
118    rm ../temp/*.xml
119    unzip ${zipfile}  -d ../temp
120 
121    # Es sollte eigentlich immer geneu ein XML-File in jedem ZIP-File stecken,
122    # aber es geht auch anders.
123    for nasdatei in ../temp/*.xml ; do
124      echo "* Datei:  " $nasdatei
125      # Zwischenueberschrift im Fehlerprotokoll
126      echo "* Datei: " $nasdatei >> $errprot
127      # Groesse und Datum anzeigen
128      #ls -l ${nasdatei}
129      if [ $UPD = "e" ]
130      then
131        # E R S T L A D E N
132        /opt/gdal-1.9/bin/ogr2ogr -f "PostgreSQL" -append  ${update}  -skipfailures \
133           PG:"dbname=${DBNAME} host=localhost port=5432" \
134           -a_srs EPSG:25832  ${nasdatei}  ${layer}  2>> $errprot
135        # Abbruch bei Fehler?
136        nasresult=$?
137        echo "* Resultat: " $nasresult " fuer " ${nasdatei}
138      else
139        # A K T U A L I S I E R U N G
140        echo "- 1. Nur delete-Layer auswerten"
141        /opt/gdal-1.9/bin/ogr2ogr -f "PostgreSQL" -append  ${update}  -skipfailures \
142           PG:"dbname=${DBNAME} host=localhost port=5432" \
143           -a_srs EPSG:25832  ${nasdatei}  delete  2>> $errprot
144        nasresult=$?
145        echo "* Resultat: " $nasresult " fuer delete aus " ${nasdatei}
146        #
147        # Durch die Funktion 'deleteFeature' in der Datenbank die delete-Objekte abarbeiten
148        echo "- 1a. delete-Layer abarbeiten:"
149        psql $con  < /data/konvert/postnas_0.6/delete.sql
150        #
151        echo "- 2. alle Layer auswerten"
152        /opt/gdal-1.9/bin/ogr2ogr -f "PostgreSQL" -append  ${update}  -skipfailures \
153          PG:"dbname=${DBNAME} host=localhost port=5432" \
154          -a_srs EPSG:25832  ${nasdatei}  ${layer}  2>> $errprot
155        nasresult=$?
156        echo "* Resultat: " $nasresult " fuer " ${nasdatei}
157        #
158        echo "- 2a. delete-Layer nochmals leoeschen:"
159        echo 'TRUNCATE table "delete";' | psql $con
160      fi
161    done
162    # Ende Zipfile
163    echo "*********"
164  done
165  rm ../temp/*.xml
166  echo " "
167  echo "** Ende Konvertierung Ordner ${ORDNER}"
168  echo "Das Fehler-Protokoll wurde ausgegeben in die Datei " $errprot
169##
170  echo "** Optimierte Nutzungsarten neu Laden:"
171  psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.6/nutzungsart_laden.sql
172##
173  echo "** Optimierte Gemeindetabelle neu Laden:"
174  psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.6/gemeinden_laden.sql
175##
Note: See TracBrowser for help on using the repository browser.