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

Revision 190, 5.7 KB checked in by j.e.fischer, 11 years ago (diff)

Allgemeinde Änderungen (Schemaänderungen gesondert im Anschluß):

2012-06-24

Festen Pfad zu PostNAS entfernt: ordner_konvertieren.sh,
datenbank_anlegen.sh, konv_batch.sh, konvertierung_kommandos_beispiele.txt

alkis-trigger-hist.sql und alkis-trigger-kill.sql:

ergänzt (setzt den jeweiligen delete-Trigger)

alkis-trigger.sql in svn:ignore aufgenommen


datenbank_anlegen.sh:

Ggf. Symlink alkis-trigger.sql auf alkis-trigger-kill.sql anlegen

konv_batch.sh:

  • GDAL in PATH aufgenommen und ogr2ogr in ohne Pfad aufgerufen
  • Löschen der historischen Daten wird ausgeführt, wenn Symlink auf alkis-trigger-kill.sql zeigt.

alkis-functions.sql:

Stored Procedures aus alkis_PostNAS_0.7_schema.sql ausgelagert

CRLF => LF:

pp_laden.sql, ordner_konvertieren.sh, datenbank_anlegen.sh, konv_batch.sh

Schemaanpassungen:

2012-12-03

ap_darstellung.advstandardmodell: varchar => varchar[]

2012-11-21

ax_besonderegebaeudelinie kann LINESTRING oder MULTILINESTRING sein (=>GEOMETRY)

2012-11-20

Koordinatensystem konfigurierbar anlegen (Variable :alkis_epsg)

2012-11-20

  • Ausführende Stellen ergänzt
    • Felder zu ax_historischesflurstueckalb ergänzt:
    • buchungsblattnummermitbuchstabenerweiterung/laufendenummerderbuchungsstelle zu Array
    • laufendenummerderfortfuehrung/fortfuehrungsart ergänzt
    • Indizes gesetzt
  • Felder zu ax_historischesflurstueck ergänzt:
    • buchungsblattnummermitbuchstabenerweiterung/buchungsblattkennzeichen zu Array
  • Feld relativehoehe zu ax_grenzpunkt / ax_aufnahmepunkt / ax_sicherungspunkt /
  • Tabelle ax_sonstigervermessungspunkt ergänzt
  • Koordinatenstatus zu ax_punktortag / ax_punktortau / ax_punktortta ergänzt
  • Felder zu ax_anschrift ergänzt: postleitzahlpostfach / postfach / ortsteil / weitereAdressen
  • Feld objekthoehe zu ax_bauwerkoderanlagefuerindustrieundgewerbe ergänzt
  • Feld sonstigeeigenschaft (Array) zu ax_besondererbauwerkspunkt ergänzt
  • Feld gemeindeflaeche zu ax_kommunalesgebiet hinzugefügt
  • Triggerausgabe korrigiert


2012-10-17

identifier bei ax_boeschungkliff und ax_boeschungsflaeche ergänzt

2012-09-09

  • ax_flurstueck/ax_historischesflurstueckalb/ax_historischesflurstueck
    • rechtsbehelfsverfahren / zweifelhafterFlurstuecksnachweis: integer => varchar default 'false'
  • ax_punktortag/ax_punktortau/ax_punktortta.kartendarstellung: integer => varchar
  • Neue Indizes:
    • auf endet in ap_ppo, ap_lpo, ap_darstellung, ap_pto, ax_punktortta,
    • ax_flurstueck auf:
      • land,gemarkungsnummer,flurnummer,zaehler,nenner
      • abweichenderrechtszustand
    • ax_buchungsblatt(land,bezirk,buchungsblattnummermitbuchstabenerweiterung)
    • ax_grenzpunkt(abmarkung_marke)
    • ap_pto(sn)
  • Indizes auf alkis_beziehungen / ax_historischesflurstueckalb / ax_grenzpunkt_abmm auf USING btree geändert
  • ap_lpo / ax_gebaeudeausgestaltung kann LINESTRING und MULTILINESTRING enthalten (=>GEOMETRY)

2012-06-24

  • Stored Procedures in alkis-funktions.sql ausgelagert
  • alkis_drop() aus Schema wird aufgerufen
  • Löschtrigger wird durch \i alkis-trigger.sql gesetzt (Symlink auf alkis-trigger-kill.sql oder alkis-trigger-hist.sql konfiguriert die Fortführungsoption)
  • Angleichung von ax_sicherungspunkt.beginnt, .identifier und .endet
  • Angleichung von ax_punktkennunguntergegangen.beginnt, .identifier und .endet
  • ax_vertretung und ax_verwaltungsgemeinschaft ergänzt
  • ax_besonderertopographischerpunkt.sonstigeeigenschaft varchar[] ergänzt
  • ax_grenzpunkt.besonderepunktnummer ergänzt
  • ax_gebaeude.weiteregebaeudefunktion => integer[]
  • ax_bauteil.dachform & anzahlderoberirdischengeschosse ergänzt
  • ax_besonderegebaeudelinie.beschaffenheit => integer[]
  • ap_lto.signaturnummer ergänzt
  • ax_gebaeude.name => name[]
  • ax_turm.zustand und name ergänzt
  • ax_bauwerkoderanlagefuerindustrieundgewerbe.name und zustand ergänzt
  • ax_vorratsbehaelterspeicherbauwerk.lagezurerdoberflaeche und name ergänzt
  • ax_transportanlage.produkt ergänzt
  • ax_bauwerkoderanlagefuersportfreizeitunderholung.name und sportart ergänzt
  • ax_historischesbauwerkoderhistorischeeinrichtung.name ergänzt
  • ax_einrichtunginoeffentlichenbereichen.kilometerangaben ergänzt
  • ax_bauwerkimverkehrsbereich.name und zustand ergänzt
  • ax_strassenverkehrsanlage.bezeichnung und name ergänzt
  • ax_wegpfadsteig.name ergänzt
  • ax_bahnverkehrsanlage.name ergänzt
  • ax_gleis.art, lagezuroberflaeche und name ergänzt
  • ax_bauwerkimgewaesserbereich.name und zustand ergänzt
  • ax_vegetationsmerkmal.zustand und name ergänzt
  • ax_gewaessermerkmal.name ergänzt
  • ax_untergeordnetesgewaesser.lagezurerdoberflaeche, name und hydrologischesmerkmal ergänzt
  • ap_darstellung.positionierungsregel ergänzt
  • ax_bodenschaetzung.sonstigeAngaben integer => integer[]
  • ax_grablochderbodenschaetzung.bedeutung integer => integer[]
  • ax_dammwalldeich.name ergänzt
  • ax_naturumweltoderbodenschutzrecht.name ergänzt
  • ax_gelaendekante.art ergänzt
  • ax_bauteil.advstandardmodel varchar => varchar[]
  • ax_gemarkung.advstandardmodel varchar => varchar[]
  • ax_buchungsstelle.advstandardmodel.zaehler/nenner => double precision
  • signaturnummer: integer => varchar
  • anlass: integer => varchar
  • ax_historischesflurstueckalb.buchungsblattkennzeichen: double precision => varchar
  • ax_verwaltung ergänzt
  • ax_kommunalesgebiet.schluesselgesamt: integer => varchar
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##
30## ToDo: Option "-skipfailures" nach Test entfernen ?
31##
32## Koordinaten: EPSG:25832  UTM, Zone 32
33##              -a_srs EPSG:25832   - bleibt im UTM-System (korrigierte Werte)
34##
35
36POSTNAS_HOME=$(dirname $0)
37
38# Konverterpfad
39PATH=/opt/gdal-2.0/bin:$PATH
40EPSG=25832
41
42
43echo "**************************************************"
44echo "**   K o n v e r t i e r u n g     PostNAS 0.7a **"
45echo "**************************************************"
46## Parameter:
47ORDNER=$1
48DBNAME=$2
49UPD=$3
50PP=$4
51if [ $ORDNER == "" ]
52then
53        echo "Parameter 1 'Ordner' ist leer"
54        exit 1
55fi
56if [ $DBNAME == "" ]
57then
58        echo "Parameter 2 'Datenbank' ist leer"
59        exit 2
60fi
61if [ $UPD == "a" ]
62then
63        verarb="NBA-Aktualisierung"
64        update=" -update "
65else
66        if [ $UPD == "e" ]
67        then
68                verarb="Erstladen"
69                update=""
70        else
71                echo "Parameter 3 'Aktualisierung' ist weder e noch a"
72                exit 3
73        fi
74fi
75if [ $PP == "nopp" ]
76then
77        echo "KEIN Post-Processing nach dieser Konvertierung."
78else
79        if [ $PP == "pp" ]
80        then
81                echo "normales Post-Processing."
82        else
83                echo "FEHLER: Parameter 4 'Post-Proscessing' ist weder 'nopp' noch 'pp'"
84                exit 4
85        fi
86fi
87# Fehlerprotokoll:
88  errprot='$POSTNAS_HOME/log/postnas_err_'$DBNAME'.prot'
89#
90# DB-Connection
91  con="-p 5432 -d ${DBNAME} "
92  echo "Datenbank-Name . . = ${DBNAME}"
93  echo "Ordner NAS-Daten . = ${ORDNER}"
94  echo "Verarbeitungs-Modus= ${verarb}"
95  echo " "
96# noch alte delete-Eintraege in DB?
97  echo "Leeren der delete-Tabelle"
98  echo 'TRUNCATE table "delete";' | psql $con
99#
100# Ordner abarbeiten
101#
102  cd ${ORDNER}
103  rm ../temp/*.gfs
104  echo "Dateien in " ${ORDNER} " (ls) :"
105  ls
106  for zipfile in *.zip ; do
107    echo " "
108    rm ../temp/*.xml
109    echo "*********"
110   #echo "* Archiv: " $zipfile
111    unzip ${zipfile}  -d ../temp
112    # Es sollte nur ein XML-File in jedem ZIP-File stecken, aber es geht auch anders.
113    for nasdatei in ../temp/*.xml ; do
114      # echo "* Datei:  " $nasdatei
115      # Zwischenueberschrift im Fehlerprotokoll
116      echo "* Datei: " $nasdatei >> $errprot
117      #
118      # Umgebungsvariable setzen:
119        export GML_FIELDTYPES=ALWAYS_STRINGS    # PostNAS behandelt Zahlen wie Strings, PostgreSQL-Treiber macht daraus Zahlen
120        export OGR_SETFIELD_NUMERIC_WARNING=YES # Meldung abgeschnittene Zahlen?
121       #export CPL_DEBUG=ON                     # Meldung, wenn Attribute ueberschrieben werden
122      #
123      # PostNAS Konverter-Aufruf
124      #
125      # -skipfailures    #
126      # -overwrite       #
127      ogr2ogr -f "PostgreSQL" -append  ${update} -skipfailures \
128         PG:"dbname=${DBNAME} host=localhost port=5432" -a_srs EPSG:$EPSG ${nasdatei} 2>> $errprot
129      nasresult=$?
130      echo "* Resultat: " $nasresult " fuer " ${nasdatei} | tee -a $errprot
131    done # Ende Zipfile
132  done # Ende Ordner
133  rm ../temp/*.xml
134  echo " "
135  echo "** Ende Konvertierung Ordner ${ORDNER}"
136#
137# Post-Processing / Nacharbeiten
138#
139  if [ $PP == "nopp" ]
140  then
141    echo "** KEIN Post-Processing - Dies spaeter nachholen."
142    # Dies kann sinnvoll sein, wenn mehrere kleine Aktualisierungen hintereinander auf einem grossen Bestand laufen
143    # Der Aufwand fuer das Post-Processing ist dann nur bei der LETZTEN Aktualisierung notwendig.
144  else
145    echo "** Post-Processing (Nacharbeiten zur Konvertierung)"
146    echo "** - Optimierte Nutzungsarten neu Laden:"
147    (cd $POSTNAS_HOME; psql -p 5432 -d ${DBNAME} -f nutzungsart_laden.sql)
148    ##
149    echo "** - Fluren / Gemarkungen / Gemeinden neu Laden:"
150    (cd $POSTNAS_HOME; psql -p 5432 -d ${DBNAME} -f pp_laden.sql)
151  fi
152
153  if [ "$(readlink $POSTNAS_HOME/alkis-trigger.sql)" = "alkis-trigger-kill.sql" ]; then
154# Durch Einfuegen in Tabelle 'delete' werden Loeschungen anderer Tabellen getriggert
155    echo "** delete-Tabelle enthaelt:"
156    echo 'SELECT COUNT(featureid) AS delete_zeilen FROM "delete";' | psql $con
157    #echo "   delete-Tabelle loeschen:"
158    #echo 'TRUNCATE table "delete";' | psql $con
159 # Fuer Analyse-Zwecke sollten die Delete-Eintraege erhalten bleiben bis zum naechsten Lauf.
160 # TRUNCATE erfolgt VOR der Konnvertierung.
161#
162# Wenn die Datenbank MIT Historie angelegt wurde, man diese aber gar nicht braucht,
163# dann hinterher aufraeumen der historischen Objekte
164    #echo "** geendete Objekte entfernen:"
165# Function:
166    #echo 'SELECT alkis_delete_all_endet();' | psql $con
167    #echo "  ... geendete Objekte entfernen wurde fuer Test dektiviert."
168    #echo "  Bitte manuell ausfuehren:  SELECT alkis_delete_all_endet(); "
169#
170    echo "Das Fehler-Protokoll wurde ausgegeben in die Datei $errprot"
171    #echo "HINWEIS: -skipfailures  fuer Produktion wieder einschalten."
172  fi
Note: See TracBrowser for help on using the repository browser.