source: trunk/import/konv_batch.sh @ 296

Revision 296, 6.1 KB checked in by frank.jaeger, 11 years ago (diff)

PostProcesssing? Straßen-Namen, Tab pp_strassenname ersetzt ap_pto_stra

Line 
1#!/bin/bash
2## -------------------------------------------------
3## Konvertierung von ALKIS NAS-Format nach PostGIS -
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 temporaer ausgepackt.
16##   Relativ zum mitgegebenen Parameter ist das: '../temp/'
17##   Parallel laufende Konvertierungen zum gleichen Mandanten
18##   wuerden 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 unterdruecken
24##   2012-04-25 Durch GDAL Patch #5444 werden die Loeschungen als Trigger auf Tabelle 'delete' verarbeitet
25##   2012-05-18 Umzug neue GDI, GDAL-Trunk unter Pfad
26##   2012-06-04 SQL-Skripte in deren Verzeichnis ausfuehren (Voraussetzung fuer \i Includes)
27##   2012-10-30 Umgebungsvariable setzen, delete-Tabelle am Ende fuer Analyse gefuellt lassen.
28##              Test als 0.7a mit gepatchter gdal-Version (noch 2.0dev)
29##   2013-10-16 F.J. krz: Neues Script "pp_praesentation_action.sql" für Reparatur der
30##              Präsentationsobjekte Straßenname im Post-Processing
31##   2013-10-24 F.J. krz: Zwischenlösung "praesentation_action.sql" wieder deaktiviert.
32##
33## ToDo: Option "-skipfailures" nach Test entfernen ?
34##
35## Koordinaten: EPSG:25832  UTM, Zone 32
36##              -a_srs EPSG:25832   - bleibt im UTM-System (korrigierte Werte)
37##
38
39POSTNAS_HOME=$(dirname $0)
40
41# Konverterpfad
42PATH=/opt/gdal-2.0/bin:$PATH
43EPSG=25832
44
45
46echo "**************************************************"
47echo "**   K o n v e r t i e r u n g     PostNAS 0.7a **"
48echo "**************************************************"
49## Parameter:
50ORDNER=$1
51DBNAME=$2
52UPD=$3
53PP=$4
54if [ $ORDNER == "" ]
55then
56        echo "Parameter 1 'Ordner' ist leer"
57        exit 1
58fi
59if [ $DBNAME == "" ]
60then
61        echo "Parameter 2 'Datenbank' ist leer"
62        exit 2
63fi
64if [ $UPD == "a" ]
65then
66        verarb="NBA-Aktualisierung"
67        update=" -update "
68else
69        if [ $UPD == "e" ]
70        then
71                verarb="Erstladen"
72                update=""
73        else
74                echo "Parameter 3 'Aktualisierung' ist weder e noch a"
75                exit 3
76        fi
77fi
78if [ $PP == "nopp" ]
79then
80        echo "KEIN Post-Processing nach dieser Konvertierung."
81else
82        if [ $PP == "pp" ]
83        then
84                echo "normales Post-Processing."
85        else
86                echo "FEHLER: Parameter 4 'Post-Proscessing' ist weder 'nopp' noch 'pp'"
87                exit 4
88        fi
89fi
90# Fehlerprotokoll:
91  errprot=${POSTNAS_HOME}'/log/postnas_err_'$DBNAME'.prot'
92#
93# DB-Connection
94  con="-p 5432 -d ${DBNAME} "
95  echo "Datenbank-Name . . = ${DBNAME}"
96  echo "Ordner NAS-Daten . = ${ORDNER}"
97  echo "Verarbeitungs-Modus= ${verarb}"
98  echo " "
99# noch alte delete-Eintraege in DB?
100  echo "Leeren der delete-Tabelle"
101  echo 'TRUNCATE table "delete";' | psql $con
102#
103# Ordner abarbeiten
104#
105  cd ${ORDNER}
106  rm ../temp/*.gfs
107  echo "Dateien in " ${ORDNER} " (ls) :"
108  ls
109  for zipfile in *.zip ; do
110    echo " "
111    rm ../temp/*.xml
112    echo "*********"
113   #echo "* Archiv: " $zipfile
114    unzip ${zipfile}  -d ../temp
115    # Es sollte nur ein XML-File in jedem ZIP-File stecken, aber es geht auch anders.
116    for nasdatei in ../temp/*.xml ; do
117      # echo "* Datei:  " $nasdatei
118      # Zwischenueberschrift im Fehlerprotokoll
119      echo "* Datei: " $nasdatei >> $errprot
120      #
121      # Umgebungsvariable setzen:
122        export GML_FIELDTYPES=ALWAYS_STRINGS    # PostNAS behandelt Zahlen wie Strings, PostgreSQL-Treiber macht daraus Zahlen
123        export OGR_SETFIELD_NUMERIC_WARNING=YES # Meldung abgeschnittene Zahlen?
124       #export CPL_DEBUG=ON                     # Meldung, wenn Attribute ueberschrieben werden
125      #
126      # PostNAS Konverter-Aufruf
127      #
128      # -skipfailures    #
129      # -overwrite       #
130      ogr2ogr -f "PostgreSQL" -append  ${update} -skipfailures \
131         PG:"dbname=${DBNAME} host=localhost port=5432" -a_srs EPSG:$EPSG ${nasdatei} 2>> $errprot
132      nasresult=$?
133      echo "* Resultat: " $nasresult " fuer " ${nasdatei} | tee -a $errprot
134    done # Ende Zipfile
135  done # Ende Ordner
136  rm ../temp/*.xml
137  echo " "
138  echo "** Ende Konvertierung Ordner ${ORDNER}"
139#
140# Post-Processing / Nacharbeiten
141#
142  if [ $PP == "nopp" ]
143  then
144    echo "** KEIN Post-Processing - Dies spaeter nachholen."
145    # Dies kann sinnvoll sein, wenn mehrere kleine Aktualisierungen hintereinander auf einem grossen Bestand laufen
146    # Der Aufwand fuer das Post-Processing ist dann nur bei der LETZTEN Aktualisierung notwendig.
147  else
148    echo "** Post-Processing (Nacharbeiten zur Konvertierung)"
149
150    echo "** - Optimierte Nutzungsarten neu Laden:"
151    (cd $POSTNAS_HOME; psql -p 5432 -d ${DBNAME} -f nutzungsart_laden.sql)
152
153
154    echo "** - Fluren / Gemarkungen / Gemeinden neu Laden:"
155    (cd $POSTNAS_HOME; psql -p 5432 -d ${DBNAME} -f pp_laden.sql)
156
157
158    # echo "** - Präsentationsobjekte generieren:"
159    # (cd $POSTNAS_HOME; psql -p 5432 -d ${DBNAME} -f pp_praesentation_action.sql)
160
161  fi
162#
163  if [ "$(readlink $POSTNAS_HOME/alkis-trigger.sql)" = "alkis-trigger-kill.sql" ]; then
164# Durch Einfuegen in Tabelle 'delete' werden Loeschungen anderer Tabellen getriggert
165    echo "** delete-Tabelle enthaelt:"
166    echo 'SELECT COUNT(featureid) AS delete_zeilen FROM "delete";' | psql $con
167    #echo "   delete-Tabelle loeschen:"
168    #echo 'TRUNCATE table "delete";' | psql $con
169 # Fuer Analyse-Zwecke sollten die Delete-Eintraege erhalten bleiben bis zum naechsten Lauf.
170 # TRUNCATE erfolgt VOR der Konnvertierung.
171#
172# Wenn die Datenbank MIT Historie angelegt wurde, man diese aber gar nicht braucht,
173# dann hinterher aufraeumen der historischen Objekte
174    #echo "** geendete Objekte entfernen:"
175# Function:
176    #echo 'SELECT alkis_delete_all_endet();' | psql $con
177    #echo "  ... geendete Objekte entfernen wurde fuer Test dektiviert."
178    #echo "  Bitte manuell ausfuehren:  SELECT alkis_delete_all_endet(); "
179  fi
180  echo "Das Fehler-Protokoll wurde ausgegeben in die Datei $errprot"
181  #echo "HINWEIS: -skipfailures  fuer Produktion wieder einschalten."
Note: See TracBrowser for help on using the repository browser.