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

Revision 178, 4.7 KB checked in by frank.jaeger, 12 years ago (diff)

delete/replace aus GDAL Patch #5444

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##
8## Ordner-Struktur:
9##   /mandant/
10##           /0001/*.xml.zip
11##           /0002/*.xml.zip
12##          usw.
13##           /temp/
14##   Auf der gleichen Ebene wie die Datenordner muss ein Ordner /temp/ existieren.
15##   Dort werden die NAS-Daten temporär ausgepackt.
16##   Relativ zum mitgegebenen Parameter ist das: '../temp/'
17##   Parallel laufende Konvertierungen zum gleichen Mandanten
18##   würden hier durcheinander geraten. Vermeiden!
19##
20## Stand:
21##   2012-02-10 Umbennung nach 0.7
22##   2012-02-17 Optimierung
23##   2012-02-28 Neuer Parameter 4 um Post-Prozessing zu unterdrücken
24##   2012-04-25 Durch GDAL Patch #5444 werden die Löschungen als Trigger auf Tabelle 'delete' verarbeitet
25##
26## ToDo: Option "-skipfailures" nach Test entfernen ?
27##
28## Konverter:   /opt/gdal-1.9.1/bin/ = GDAL 1.9-DEV / PostNAS 0.7
29## Koordinaten: EPSG:25832  UTM, Zone 32
30##              -a_srs EPSG:25832   - bleibt im UTM-System (korrigierte Werte)
31##
32echo "**************************************************"
33echo "**   K o n v e r t i e r u n g     PostNAS 0.7  **"
34echo "**************************************************"
35## Parameter:
36ORDNER=$1
37DBNAME=$2
38UPD=$3
39PP=$4
40if [ $ORDNER == "" ]
41then
42        echo "Parameter 1 'Ordner' ist leer"
43        exit 1
44fi
45if [ $DBNAME == "" ]
46then
47        echo "Parameter 2 'Datenbank' ist leer"
48        exit 2
49fi
50if [ $UPD == "a" ]
51then
52        verarb="NBA-Aktualisierung"
53        update=" -update "
54else
55        if [ $UPD == "e" ]
56        then
57                verarb="Erstladen"
58                update=""
59        else
60                echo "Parameter 3 'Aktualisierung' ist weder e noch a"
61                exit 3
62        fi
63fi
64if [ $PP == "nopp" ]
65then
66        echo "KEIN Post-Processing nach dieser Konvertierung."
67else
68        if [ $PP == "pp" ]
69        then
70                echo "normales Post-Processing."
71        else
72                echo "FEHLER: Parameter 4 'Post-Proscessing' ist weder 'nopp' noch 'pp'"
73                exit 4
74        fi
75fi
76# Fehlerprotokoll:
77  errprot='/data/konvert/postnas_0.7/log/postnas_err_'$DBNAME'.prot'
78#
79# DB-Connection
80  con="-p 5432 -d ${DBNAME} "
81  echo "Datenbank-Name . . = ${DBNAME}"
82  echo "Ordner NAS-Daten . = ${ORDNER}"
83  echo "Verarbeitungs-Modus= ${verarb}"
84  echo " "
85# Alte delete-Eintraege in DB?
86  echo 'TRUNCATE table "delete";' | psql $con
87#
88# Ordner abarbeiten
89#
90  cd ${ORDNER}
91  rm ../temp/*.gfs
92  echo "Dateien in " ${ORDNER} " (ls) :"
93  ls
94  for zipfile in *.zip ; do
95    echo " "
96    rm ../temp/*.xml
97    echo "*********"
98   #echo "* Archiv: " $zipfile
99    unzip ${zipfile}  -d ../temp
100    # Es sollte nur ein XML-File in jedem ZIP-File stecken, aber es geht auch anders.
101    for nasdatei in ../temp/*.xml ; do
102      # echo "* Datei:  " $nasdatei
103      # Zwischenueberschrift im Fehlerprotokoll
104      echo "* Datei: " $nasdatei >> $errprot
105      #
106      # PostNAS Konverter-Aufruf
107      #
108      /opt/gdal-1.9.1/bin/ogr2ogr -f "PostgreSQL" -append  ${update} -skipfailures \
109         PG:"dbname=${DBNAME} host=localhost port=5432" -a_srs EPSG:25832 ${nasdatei} 2>> $errprot
110      nasresult=$?
111      echo "* Resultat: " $nasresult " fuer " ${nasdatei}
112    done # Ende Zipfile
113  done # Ende Ordner
114  rm ../temp/*.xml
115  echo " "
116  echo "** Ende Konvertierung Ordner ${ORDNER}"
117#
118# Post-Processing / Nacharbeiten
119#
120  if [ $PP == "nopp" ]
121  then
122    echo "** KEIN Post-Processing - Dies Spaeter nachholen."
123    # Dies kann sinnvoll sein, wenn mehrere kleine Aktualisierungen hintereinander auf einem großen Bestand laufen
124    # Der Aufwand für das Post-Processing ist dann nur bei der LETZTEN Aktualisierung notwendig.
125  else
126    echo "** Post-Processing (Nacharbeiten zur Konvertierung)"
127    echo "** - Optimierte Nutzungsarten neu Laden:"
128    psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.7/nutzungsart_laden.sql
129    ##
130    echo "** - Fluren / Gemarkungen / Gemeinden neu Laden:"
131    psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.7/pp_laden.sql
132  fi
133# Durch Einfuegen in Tabelle 'delete' werden Loeschungen anderer Tabellen getriggert
134  echo "** delete-Tabelle enthält:"
135  echo 'SELECT COUNT(featureid) AS delete_zeilen FROM "delete";' | psql $con
136  echo "   delete-Tabelle loeschen:"
137  echo 'TRUNCATE table "delete";' | psql $con
138#
139# Wenn die Datenbank MIT Historie angelegt wurde, man diese aber gar nicht braucht,
140# dann hinterher aufräumen der historischen Objekte
141  echo "** geendete Objekte entfernen:"
142# Function :
143  echo 'SELECT alkis_delete_all_endet();' | psql $con
144#
145  echo "Das Fehler-Protokoll wurde ausgegeben in die Datei\n$errprot"
146#
Note: See TracBrowser for help on using the repository browser.