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

Revision 130, 5.2 KB checked in by frank.jaeger, 12 years ago (diff)

Schlüsseltabellen für die Spalten von ax_gebäude erfasst.
Datenbank-Schema wurde überarbeitet.

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-21 Korrektur: UPD=$3 nicht $4
30##                 Protokollierung nach Datenbanken getrennt
31##
32## Konverter:   /opt/gdal-1.9/bin/ = GDAL 1.9 / PostNAS 0.6
33## Koordinaten: EPSG:25832  UTM, Zone 32
34##              -a_srs EPSG:25832   - bleibt im UTM-System (korrigierte Werte)
35##
36echo "**************************************************"
37echo "**   K o n v e r t i e r u n g     PostNAS 0.6  **"
38echo "**************************************************"
39## Parameter:
40ORDNER=$1
41DBNAME=$2
42UPD=$3
43## Fehlerprotokoll
44errprot='/data/konvert/postnas_0.6/log/postnas_err_${DBNAME}.prot'
45## ! Bei parallelen Konvertierungen sollte die Ausgabe in getrennte Logfiles ausgegeben werden.
46if [ $ORDNER == "" ]
47then
48        echo "Parameter 1 'Ordner' ist leer"
49        exit 1
50fi
51if [ $DBNAME == "" ]
52then
53        echo "Parameter 2 'Datenbank' ist leer"
54        exit 2
55fi
56if [ $UPD == "a" ]
57then
58        verarb="NBA-Aktualisierung"
59        update=" -update "
60else
61        if [ $UPD == "e" ]
62        then
63                verarb="Erstladen"
64                update=""
65        else
66                echo "Parameter 3 'Aktualisierung' ist weder e noch a"
67                exit 3
68        fi
69fi
70layer=""
71# leer = alle Layer
72#
73# DB-Connection
74con="-p 5432 -d ${DBNAME} "
75#
76echo "Datenbank-Name . . = ${DBNAME}"
77echo "Ordner NAS-Daten . = ${ORDNER}"
78echo "Verarbeitungs-Modus= ${verarb}"
79echo " "
80cd ${ORDNER}
81rm ../temp/*.gfs
82echo "Dateien in " ${ORDNER} " (ls) :"
83ls
84# Alte delete-Eintraege (vorangegangener Abbruch?) loeschen, oder abarbeiten?
85echo 'TRUNCATE table "delete";' | psql $con
86for zipfile in *.zip ; do
87  echo " "
88  echo "*********"
89  echo "* Archiv: " $zipfile
90  rm ../temp/*.xml
91  unzip ${zipfile}  -d ../temp
92  # Es sollte eigentlich immer geneu ein XML-File in jedem ZIP-File stecken,
93  # aber es geht auch anders.
94  for nasdatei in ../temp/*.xml ; do
95    echo "* Datei:  " $nasdatei
96    # Zwischenueberschrift im Fehlerprotokoll
97    echo "* Datei: " $nasdatei >> $errprot
98    if [ $UPD -eq "e" ]
99    then
100      # E R S T L A D E N
101      /opt/gdal-1.9/bin/ogr2ogr -f "PostgreSQL" -append  ${update}  -skipfailures \
102         PG:"dbname=${DBNAME} host=localhost port=5432" \
103         -a_srs EPSG:25832  ${nasdatei}  ${layer}  2>> $errprot
104      # Abbruch bei Fehler?
105      nasresult=$?
106      echo "* Resultat: " $nasresult " fuer " ${nasdatei}
107    else
108      # A K T U A L I S I E R U N G
109      echo "- 1. Nur delete-Layer auswerten"
110      /opt/gdal-1.9/bin/ogr2ogr -f "PostgreSQL" -append  ${update}  -skipfailures \
111         PG:"dbname=${DBNAME} host=localhost port=5432" \
112         -a_srs EPSG:25832  ${nasdatei}  delete  2>> $errprot
113      nasresult=$?
114      echo "* Resultat: " $nasresult " fuer delete aus " ${nasdatei}
115      #
116      # Durch die Funktion 'deleteFeature' in der Datenbank die delete-Objekte abarbeiten
117      echo "- 1a. delete-Layer abarbeiten:"
118      psql $con  < /data/konvert/postnas_0.6/delete.sql
119      #
120      echo "- 2. alle Layer auswerten"
121      /opt/gdal-1.9/bin/ogr2ogr -f "PostgreSQL" -append  ${update}  -skipfailures \
122        PG:"dbname=${DBNAME} host=localhost port=5432" \
123        -a_srs EPSG:25832  ${nasdatei}  ${layer}  2>> $errprot
124      nasresult=$?
125      echo "* Resultat: " $nasresult " fuer " ${nasdatei}
126      #
127      echo "- 2a. delete-Layer nochmals leoeschen:"
128      echo 'TRUNCATE table "delete";' | psql $con
129    fi
130  done
131  # Ende Zipfile
132  echo "*********"
133done
134rm ../temp/*.xml
135echo " "
136echo "** Ende Konvertierung Ordner ${ORDNER}"
137##
138echo "** Optimierte Nutzungsarten neu Laden:"
139psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.6/nutzungsart_laden.sql
140##
141echo "** Optimierte Gemeindetabelle neu Laden:"
142psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.6/gemeinden_laden.sql
143#
144echo "Das Fehler-Protokoll wurde ausgegeben in die Datei '$errprot' "
145##
Note: See TracBrowser for help on using the repository browser.