Ignore:
Timestamp:
11/21/11 16:47:51 (12 years ago)
Author:
frank.jaeger
Message:

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/data/konvert/postnas_0.6/konv_batch.sh

    r123 r130  
    1 #!/bin/sh 
     1#!/bin/bash 
    22## ------------------------------------------------- 
    33## Konvertierung von ALKIS NAS-Format nach PosGIS  - 
     
    66## ------------------------------------------------- 
    77## Stand:  
    8 ##  2010-11-10  Tabellen "Optimierte Nutzungsarten" Laden 
    9 ##  2010-11-25  Tabelle  "Optimierte Gemeinden"     Laden 
    10 ## 
    118##  2011-02-01  Umstellen auf die Verarbeitung gezippter NAS-Daten. 
    129##       Es wird dabei folgende Ordner-Struktur erwartet: 
     
    1411##               /0001/*.xml.zip 
    1512##               /0002/*.xml.zip 
    16 ##             usw. 
     13##               usw. 
    1714##               /temp/ 
    1815##       Also auf der gleichen Ebene wie die Datenordner muss ein Ordner /temp/ existieren. 
    1916##       Dort werden die NAS-Daten temporär ausgepackt. 
    20 ##       Relativ zum mitgegebenen Parameter ist das: ../temp/ 
     17##       Relativ zum mitgegebenen Parameter ist das: '../temp/' 
    2118## 
    2219##       Achtung: Parallel laufende Konvertierungen zum gleichen Mandanten  
    2320##                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? 
    2921## 
    3022##  ##  2011-07-25 PostNAS 06, Umbenennung 
     
    3527##                 Dort Zeile: "local  [db]  [user]  ident sameuser" 
    3628##       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 
    3731## 
    3832## Konverter:   /opt/gdal-1.9/bin/ = GDAL 1.9 / PostNAS 0.6 
     
    4337echo "**   K o n v e r t i e r u n g     PostNAS 0.6  **" 
    4438echo "**************************************************" 
    45 ## Auswerten der Parameter: 
     39## Parameter: 
    4640ORDNER=$1 
    4741DBNAME=$2 
    48 DBUSER=$3 
    49 #DBPASS=$4 
    50 #UPD=$5 
    51 UPD=$4 
    52 ## 
     42UPD=$3 
    5343## Fehlerprotokoll 
    54 errprot='/data/konvert/postnas_0.6/log/postnas_err.prot' 
     44errprot='/data/konvert/postnas_0.6/log/postnas_err_${DBNAME}.prot' 
    5545## ! Bei parallelen Konvertierungen sollte die Ausgabe in getrennte Logfiles ausgegeben werden. 
    56 ## ! Ggf. die Start-Zeit in den Namen einbauen? 
    57 ## 
    58 if [ $ORDNER = "" ] 
     46if [ $ORDNER == "" ] 
    5947then 
    6048        echo "Parameter 1 'Ordner' ist leer" 
    6149        exit 1 
    6250fi 
    63 ## 
    64 if [ $DBNAME = "" ] 
     51if [ $DBNAME == "" ] 
    6552then 
    6653        echo "Parameter 2 'Datenbank' ist leer" 
    6754        exit 2 
    6855fi 
    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 ## 
    86 if [ $UPD = "a" ] 
     56if [ $UPD == "a" ] 
    8757then 
    8858        verarb="NBA-Aktualisierung" 
    8959        update=" -update " 
    9060else 
    91         verarb="Erstladen" 
    92         update="" 
     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 
    9369fi 
    9470layer="" 
     
    9874con="-p 5432 -d ${DBNAME} " 
    9975# 
    100   echo "Datenbank-Name . . = ${DBNAME}" 
    101   echo "Ordner NAS-Daten . = ${ORDNER}" 
    102 # echo "Datenbank-User . . = ${DBUSER}" 
    103   echo "Verarbeitungs-Modus= ${verarb}" 
     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  
    10487  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 "*********" 
     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 
    164130  done 
    165   rm ../temp/*.xml 
    166   echo " " 
    167   echo "** Ende Konvertierung Ordner ${ORDNER}" 
    168   echo "Das Fehler-Protokoll wurde ausgegeben in die Datei " $errprot 
     131  # Ende Zipfile 
     132  echo "*********" 
     133done 
     134rm ../temp/*.xml 
     135echo " " 
     136echo "** Ende Konvertierung Ordner ${ORDNER}" 
    169137## 
    170   echo "** Optimierte Nutzungsarten neu Laden:" 
    171   psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.6/nutzungsart_laden.sql 
     138echo "** Optimierte Nutzungsarten neu Laden:" 
     139psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.6/nutzungsart_laden.sql 
    172140## 
    173   echo "** Optimierte Gemeindetabelle neu Laden:" 
    174   psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.6/gemeinden_laden.sql 
     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' " 
    175145## 
Note: See TracChangeset for help on using the changeset viewer.