Changeset 354 for trunk/import/konv_batch.sh
- Timestamp:
- 10/27/15 13:04:07 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/import/konv_batch.sh
r353 r354 1 1 #!/bin/bash 2 2 ## ------------------------------------------------- 3 ## DB-Server - Produktion - 3 4 ## Konvertierung von ALKIS NAS-Format nach PostGIS - 4 5 ## NAS-Daten in einem Ordner konvertieren - … … 8 9 ## Ordner-Struktur: 9 10 ## /mandant/ 10 ## /0 001/*.xml.zip11 ## /0 002/*.xml.zip11 ## /01/*.xml.zip 12 ## /02/*.xml.zip 12 13 ## usw. 13 14 ## /temp/ … … 19 20 ## 20 21 ## Stand: 21 ## 2012-02-10 Umbennung nach 0.722 ## 2012-02-17 Optimierung23 ## 2012-02-28 Neuer Parameter 4 um Post-Prozessing zu unterdruecken24 ## 2012-04-25 Durch GDAL Patch #5444 werden die Loeschungen als Trigger auf Tabelle 'delete' verarbeitet25 ## 2012-05-18 Umzug neue GDI, GDAL-Trunk unter Pfad26 22 ## 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 der30 ## PrÀsentationsobjekte StraÃenname im Post-Processing31 ## 2013-10-24 F.J. krz: Zwischenlösung "praesentation_action.sql" wieder deaktiviert.32 23 ## 2014-01-31 F.J. krz: Import Eintrag erzeugen (nach Vorschlag Marvin Brandt, Unna) 33 24 ## 2014-02-13 A.Emde WhereGroup: EinfÃŒhrung DBUSER, damit im Skript der Datenbankbenutzer angegeben werden kann 34 ## 2014-05-12 F.J. krz: Unterschiedliche Pfade in Test (TRUNK) und Produktion (Rel. 1.11.0)35 25 ## 2014-06-18 F.J. DB-User nicht "postgres" (in $con). 36 26 ## Konverter ind Nacharbeiten sonst mit unterschiedlichem User. 37 ## Abgleich Test/Prod-Version.38 27 ## Entfernen der historischen Objekte nach Konvertierung. 39 ## 2014-09-09 F.J. krz: Parameter "--config PG_USE_COPY YES" zur Beschleunigung. Ausgabe import-Tabelle.40 ## 2014-09-11 F.J. krz: Eintrag in import-Tabelle repariert.41 ## Keine Abfrage des Symlinks auf kill/hist. Enstscheidend ist die aktuelle DB, nicht der Symlink42 28 ## 2014-09-23 F.J. krz: ZÀhlung der Funktionen in delete, dies in import-Tabelle eintragen (Metadaten) 43 ## 2015-02-17 F.J. krz: OGR_SKIP=GML ?44 29 ## 2015-03-16 F.J. krz: "-nlt CONVERT_TO_LINEAR" ersetzt "ST_CurvePolygon" nÀherungsweise durch "ST_Polygon" 45 30 ## 2015-03-24 F.J. krz: export NAS_INDICATOR 31 ## 2015-05-26 F.J. krz: Pfad auf Version 1.11 geÀndert (Parameter -append wird bei TRUNK 2.0 ignoriert) 32 ## Dazu "-nlt CONVERT_TO_LINEAR" vorÃŒbergehend deaktiviert (erst ab 2.0 notwendig) 33 ## gdal-Version in Import-Tabelle schreiben. Zwischenfrage vor Konvertierung. 34 ## DB-Dump vor Aktualisierungslauf, auf Nachfrage. 35 ## 2015-10-27 F.J. krz: Teile von "pp_laden.sql" ausgelegert nach "pp_gebiete.sql". 36 ## Dies wird bei Parameter "pp" (mit Post-Processing) nur beim Erstladen mit ausgefÃŒhrt. 37 ## Bei Aktualisierungen mÃŒssen die Gebiete (Ãbersichten) nicht jedes Mal neu generiert werden. 46 38 47 39 ## ToDo: 48 ## - Vor der Konvertierung: Sicherung der DB als SQL-Dump49 40 ## - Unterscheidung e/a noch sinnvoll? Immer "a" = Aktualisierung = -update ? 50 41 ## - PostProcessing: Aufruf Script, sonst redundant zu pflegen 51 42 52 POSTNAS_HOME=$(dirname $0) 53 54 # Konverterpfad. TRUNK-Version (immer letzter Stand der Entwicklung) 55 PATH=/opt/gdal-2.0/bin:$PATH 56 EPSG=25832 57 DBUSER=b600352 58 59 if [ $DBUSER == "" ] 60 then 61 echo "kein DBUSER gesetzt" 62 else 63 PGUSER=" -U ${DBUSER} " 64 fi 65 66 if [ $DBUSER == "" ] 67 then 68 echo "kein DBUSER gesetzt" 69 else 70 OGRPGUSER=" user=${DBUSER}" 71 fi 43 # Speicher-Ort dieses Scriptes legt den Pfad fuer Logging fest 44 POSTNAS_HOME=$(dirname $0) 45 46 # Konverterpfad. 47 # TRUNK-Version 2.0.0Beta1 (selbst gebaut) 48 # Dabei: "-nlt CONVERT_TO_LINEAR" verwenden 49 # PATH=/opt/gdal-2.0/bin:$PATH 50 51 # Stabile-Version 1.11.2 (selbst gebaut) 52 # Dabei: "-nlt CONVERT_TO_LINEAR" NICHT verwenden 53 PATH=/opt/gdal-1.11/bin:$PATH 54 55 # Konfiguration: 56 EPSG=25832 57 DBUSER=b600352 58 59 if [ $DBUSER == "" ] 60 then 61 echo "kein DBUSER gesetzt" 62 else 63 PGUSER=" -U ${DBUSER} " 64 OGRPGUSER=" user=${DBUSER}" 65 fi 72 66 73 echo " 67 echo " 68 74 69 ********************************************** 75 70 ** K o n v e r t i e r u n g PostNAS ** 76 **********************************************" 77 ## Parameter: 78 ORDNER=$1 79 DBNAME=$2 80 UPD=$3 81 PP=$4 82 71 ********************************************** 72 " 73 74 # Aufruf-Parameter: 75 ORDNER=$1 76 DBNAME=$2 77 UPD=$3 78 PP=$4 79 80 # Parameter plausibilisieren 83 81 if [ $ORDNER == "" ] 84 82 then … … 109 107 if [ $PP == "nopp" ] 110 108 then 111 echo "KEIN Post-Processing nach dieser Konvertierung ."109 echo "KEIN Post-Processing nach dieser Konvertierung" 112 110 else 113 111 if [ $PP == "pp" ] 114 112 then 115 echo " normales Post-Processing."113 echo "mit Post-Processing" 116 114 else 117 115 echo "FEHLER: Parameter 4 'Post-Proscessing' ist weder 'nopp' noch 'pp'" … … 120 118 fi 121 119 120 # DB-Connection (User, Port, Datenbank-Name) 121 con="${PGUSER} -p 5432 -d ${DBNAME} " 122 123 # Anzeige Historie 124 echo "vorangegangene Konvertierung:" 125 psql $con -c "SELECT id, datum, verzeichnis, importart FROM import ORDER BY id DESC LIMIT 1;" 126 127 # Anzeige Parameter 128 echo "Datenbank: ${DBNAME}" 129 echo "DBUSER: ${DBUSER}" 130 #echo "PGUSER: ${PGUSER}" 131 #echo "OGRPGUSER: ${OGRPGUSER}" 132 echo "Ordner NAS-Daten: ${ORDNER}" 133 echo "Verarbeitungs-Modus: ${verarb}" 134 echo "POSTNAS_HOME: ${POSTNAS_HOME}" 135 echo "Programm-Version: `ogr2ogr --version` " 136 137 # Kontrolle der Parameter 138 echo " 139 AbschlieÃende Bestaetigung:" 140 until [ "$JEIN" = "j" -o "$JEIN" = "n" ] 141 do 142 echo "Mit diesen Parametern konvertieren? - j oder n" 143 read JEIN 144 done 145 if test $JEIN != "j" 146 then 147 echo " #### Abbruch" 148 exit 1 149 fi 150 122 151 # Fehlerprotokoll: 123 152 errprot=${POSTNAS_HOME}'/log/postnas_err_'$DBNAME'.prot' 124 125 153 echo "GDAL/PostNAS Konverter-Version:" >> $errprot 126 154 ogr2ogr --version >> $errprot 127 155 128 # DB-Connection 129 con="${PGUSER} -p 5432 -d ${DBNAME} " 130 echo "Datenbank-Name . . = ${DBNAME}" 131 echo "DBUSER ${DBUSER}" 132 echo "PGUSER ${PGUSER}" 133 echo "OGRPGUSER ${OGRPGUSER}" 134 echo "Ordner NAS-Daten . = ${ORDNER}" 135 echo "Verarbeitungs-Modus= ${verarb}" 136 echo "POSTNAS_HOME ${POSTNAS_HOME}" 137 138 # noch alte delete-Eintraege? 139 echo "Leeren der delete-Tabelle" 156 # Sicherung der Datenbank VOR der Aktualisierung 157 if [ $UPD == "a" ] 158 then 159 160 until [ "$DUMP" = "j" -o "$DUMP" = "n" ] 161 do 162 echo "Datenbank-Sicherung? - j oder n" 163 read DUMP 164 done 165 166 if test $DUMP = "j" 167 then 168 echo "DB Dump wird ausgefuehrt" 169 echo "Datenbank-Dump in /data/bkup/${DBNAME}_vor_update.sql.gz" >> $errprot 170 pg_dump -U ${DBUSER} -o -C ${DBNAME} | gzip > /data/bkup/${DBNAME}_vor_update.sql.gz 171 echo "DB Dump wurde ausgefuehrt" 172 sleep 1 173 fi 174 fi 175 176 # Import Eintrag schreiben 177 # Urspruenglich wurde die Tabelle "import" fuer die Trigger-Steuerung benoetigt. 178 # Nun als Metadaten zur Datenbank-Historie nuetzlich. 179 echo "INSERT INTO import (datum, verzeichnis, importart, gdalvers) 180 VALUES ('"$(date '+%Y-%m-%d %H:%M:%S')"','"${ORDNER}"','"${verarb}"', '`ogr2ogr --version`');" | psql $con 181 182 # Alte delete-Eintraege loeschen 183 # Beim Eintrag in die delete-Tabelle wird ein Trigger ausgeloest. 184 # Danach werden die Eintraege nicht mehr benoetigt. 185 echo " 186 Leeren der delete-Tabelle" 140 187 psql $con -c 'TRUNCATE table "delete";' 141 188 142 #echo "Bisherige Konvertierungen (Import-Tabelle):"143 #psql $con -c "SELECT * FROM import ORDER by id;"144 145 # Import Eintrag erzeugen146 # UrsprÃŒnglich fÃŒr Trigger-Steuerung benötigt. Nun als Metadaten nÃŒtzlich.147 echo "INSERT INTO import (datum,verzeichnis,importart) VALUES ('"$(date '+%Y-%m-%d %H:%M:%S')"','"${ORDNER}"','"${verarb}"');" | psql $con148 149 189 # Ordner abarbeiten 150 151 190 cd ${ORDNER} 152 191 rm ../temp/*.gfs … … 172 211 # export OGR_SKIP=GML # NAS-Daten auch mit "falschen Header" nicht wie GML konvertieren - NEIN! 173 212 # http://lists.osgeo.org/pipermail/nas/2014-December/000740.html 174 #export CPL_DEBUG=ON 213 #export CPL_DEBUG=ON # Meldung, wenn Attribute ueberschrieben werden 175 214 176 215 # Headerkennungen die NAS-Daten identifizieren … … 179 218 # PostNAS Konverter-Aufruf 180 219 # --config PG_USE_COPY YES 181 # -nlt CONVERT_TO_LINEAR # 2015-03-16 ersetzt "ST_CurvePolygon" nÀherungsweise durch "ST_Polygon" 182 ogr2ogr -f "PostgreSQL" -append ${update} -skipfailures -nlt CONVERT_TO_LINEAR \ 220 # -nlt CONVERT_TO_LINEAR # ersetzt "ST_CurvePolygon" nÀherungsweise durch "ST_Polygon", ab Vers. 2.0 221 # ogr2ogr -f "PostgreSQL" -append ${update} -skipfailures -nlt CONVERT_TO_LINEAR 222 ogr2ogr -f "PostgreSQL" -append ${update} -skipfailures \ 183 223 PG:"dbname=${DBNAME} host=localhost port=5432 ${OGRPGUSER}" -a_srs EPSG:$EPSG ${nasdatei} 2>> $errprot 184 224 nasresult=$? … … 192 232 echo -e "\e[32m${nasdatei} verarbeitet\e[0m" # grÃŒn 193 233 else 194 echo -e "\e[31m${nasdatei} fehlerhaft\e[0m" # rot234 echo -e "\e[31m${nasdatei} fehlerhaft\e[0m" # rot 195 235 fi 196 236 … … 199 239 done # Ende Ordner 200 240 rm ../temp/*.xml 201 echo " "202 echo "** Ende Konvertierung Ordner ${ORDNER}"241 echo " 242 ** Ende Konvertierung Ordner ${ORDNER}" 203 243 204 244 # Durch EinfÃŒgen in Tabelle 'delete' werden Löschungen und Aktualisierungen anderer Tabellen getriggert … … 209 249 psql $con -c 'SELECT context, COUNT(featureid) AS anzahl FROM "delete" GROUP BY context ORDER BY context;' 210 250 211 # Kontext-Funktionen zÀhlen und d eiAnzahl als Metadaten zum aktuellen Konvertierungslauf speichern251 # Kontext-Funktionen zÀhlen und die Anzahl als Metadaten zum aktuellen Konvertierungslauf speichern 212 252 psql $con -c " 213 253 UPDATE import SET anz_delete=(SELECT count(*) FROM \"delete\" WHERE context='delete') … … 222 262 then 223 263 echo "** KEIN Post-Processing - Dies spaeter nachholen." 224 # Dies kann sinnvoll sein, wenn mehrere kleine Aktualisierungen hintereinander auf einem grossen Bestand laufen 264 # Dies kann sinnvoll sein, wenn mehrere kleine Aktualisierungen hintereinander auf einem grossen Bestand laufen. 225 265 # Der Aufwand fÃŒr das Post-Processing ist dann nur bei der LETZTEN Aktualisierung notwendig. 226 266 else … … 230 270 (cd $POSTNAS_HOME; psql $con -f nutzungsart_laden.sql) 231 271 232 echo "** - Fluren, Gemarkungen, Gemeinden und StraÃen-Namen neu Laden (Script pp_laden.sql):" 233 (cd $POSTNAS_HOME; psql $con -f pp_laden.sql) 272 echo "** - StraÃen-Namen neu Laden (Script pp_laden.sql):" 273 (cd $POSTNAS_HOME; psql $con -f pp_laden.sql) 274 275 if [ $UPD == "e" ] 276 then 277 # Erstladen: Gebiete erstmalig befuellen. 278 echo "** - Fluren, Gemarkungen, Gemeinden neu Laden (Script pp_gebiete.sql):" 279 (cd $POSTNAS_HOME; psql $con -f pp_gebiete.sql) 280 else 281 # Aktualisierung: Gebiete brauchen nicht bei jeder Aktualisierung neu generiert werden. Die aendern sich kaum. 282 echo "Die Uebersichten fÃŒr Flur, Gemarkung und Gemeinde werden nicht neu generiert. Bei Bedarf das SQL-Script pp_gebiete.sql ausfuehren." 283 fi 234 284 fi 235 285 236 286 echo "Das Fehler-Protokoll wurde ausgegeben in die Datei $errprot" 237 echo "** ENDE PostNAS 0.8-Konvertierung DB='$DBNAME' Ordner='$ORDNER' " 287 echo " 288 ** ENDE PostNAS 0.8-Konvertierung DB='$DBNAME' Ordner='$ORDNER' 289 "
Note: See TracChangeset
for help on using the changeset viewer.