- Timestamp:
- 10/27/15 13:04:07 (8 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/import/alkis_PostNAS_schema.sql
r353 r354 62 62 -- 2014-10-14 FJ "ax_wirtschaftlicheeinheit.anlass" von integer zu character. Sonst Trigger-Fehler bei "delete". 63 63 64 -- 2015-02-18 FJ "ax_gelaendekante.wkb_geometry" von 'LINESTRING' nach 'GEOMETRY' 64 -- 2015-02-18 FJ "ax_gelaendekante.wkb_geometry" von 'LINESTRING' nach 'GEOMETRY' 65 66 -- 2015-05-26 FJ Spalte "gdalvers" in Tabelle "import" 65 67 66 68 -- Dies Schema kann NICHT mehr mit der gdal-Version 1.9 verwendet werden. … … 109 111 verzeichnis text, 110 112 importart text, 113 gdalvers text, 111 114 anz_delete integer, 112 115 anz_update integer, … … 114 117 CONSTRAINT import_pk PRIMARY KEY (id) 115 118 ); 119 120 -- Spalte nachtragen: 121 -- ALTER TABLE import ADD COLUMN gdalvers text; 116 122 117 123 CREATE UNIQUE INDEX import_id ON import USING btree (id); … … 122 128 COMMENT ON COLUMN import.verzeichnis IS 'Ort von dem die NAS-Dateien verarbeitet wurden.'; 123 129 COMMENT ON COLUMN import.importart IS 'Modus des Konverter-Laufes: e="Erstladen" oder a="NBA-Aktualisierung"'; 130 COMMENT ON COLUMN import.gdalvers IS 'GDAL-Programmversion mit der der Import erfolgte.'; 124 131 125 132 COMMENT ON COLUMN import.anz_delete IS 'Anzahl von delete-Funktionen in der delete-Tabelle nach Ende eines Konvertierungs-Laufes'; -
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 " -
trunk/import/pp_laden.sql
r351 r354 2 2 -- ALKIS PostNAS 0.8 3 3 4 -- Post Processing (pp_) Teil 2 : Laden der Tabellen4 -- Post Processing (pp_) Teil 2 A: Laden der Tabellen 5 5 6 6 -- Stand … … 25 25 -- 2014-12-17 Neue Spalte "gemeinde" in Tabelle "pp_flur", dient der Filterung im WMS-Layer "Gebiete" 26 26 -- 2015-01-08 Mehrfach-Versuche der Geometrie-Zusammenfassung mit wachsender PuffergröÃe. 27 -- 2015-10-27 Die Erzeugung der vereinfachten Geometrie von Gemeinde, Gemarkung und Flur 28 -- wird ausgegliedert in das Script "pp_gebiete.sql". 29 -- Dies Script sollte nach jeder Aktualisierung der Datebnek laufen. 30 -- Die Erzeugung neuer Ãbersichten der Gebiete ist nur gelegendlich notwendig. 27 31 28 32 … … 53 57 54 58 TRUNCATE pp_flurstueck_nr; -- effektiver als DELETE 55 56 /*57 -- Alte Version ÃŒber "alkis_beziehungen"58 -- AusfÃŒhrung: mittlere Stadt: ca. 4 - 18 Sec.59 60 -- 1:1 umgestellt (UNION) unter Verwendeung der neuen Relationenspalten61 62 INSERT INTO pp_flurstueck_nr63 ( fsgml, fsnum, the_geom )64 SELECT f.gml_id,65 f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS fsnum,66 p.wkb_geometry -- manuelle Position des Textes67 FROM ax_flurstueck f68 JOIN ap_pto p69 ON f.gml_id = ANY(p.dientzurdarstellungvon)70 WHERE f.endet IS NULL AND p.endet IS NULL -- AND p."art" = 'ZAE_NEN'71 UNION72 SELECT f.gml_id,73 f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS fsnum,74 ST_PointOnSurface(f.wkb_geometry) AS wkb_geometry -- Flaechenmitte als Position des Textes75 FROM ax_flurstueck f76 LEFT JOIN ap_pto p77 ON f.gml_id = ANY(p.dientzurdarstellungvon) -- kein PrÀsentationsobjekt vorhanden78 WHERE p.gml_id is NULL AND f.endet IS NULL ;79 */80 59 81 60 -- Ersatz: FÃŒllen in 3 Schritten … … 179 158 DELETE FROM pp_strassenname_l WHERE schriftinhalt IS NULL; 180 159 181 182 -- Tabellen fuer die Zuordnung vom Gemarkungen zu Gemeinden183 -- ========================================================184 185 -- FÃŒr die Regelung der Zugriffsberechtigung einer Gemeindeverwaltung auf die186 -- FlurstÃŒcke in ihrem Gebiet braucht man die Information, in welcher Gemeinde eine Gemarkung liegt.187 -- 'ax_gemeinde' und 'ax_gemarkung' haben aber im ALKIS keinerlei Beziehung zueinander - kaum zu glauben!188 -- Nur ÃŒber die Auswertung der FlurstÃŒcke kann man die Zuordnung ermitteln.189 -- Da nicht stÀndig mit 'SELECT DISTINCT' sÀmtliche FlurstÃŒcke durchsucht werden können,190 -- muss diese Information als (redundante) Tabelle nach dem Laden zwischengespeichert werden.191 192 193 -- G E M A R K U N G194 195 TRUNCATE pp_gemarkung;196 -- Vorkommende Paarungen Gemarkung <-> Gemeinde in ax_Flurstueck197 INSERT INTO pp_gemarkung198 ( land, regierungsbezirk, kreis, gemeinde, gemarkung )199 SELECT DISTINCT land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer200 FROM ax_flurstueck201 WHERE endet IS NULL202 ORDER BY land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer ;203 204 -- Namen der Gemarkung dazu als Optimierung bei der Auskunft205 UPDATE pp_gemarkung a206 SET gemarkungsname =207 ( SELECT b.bezeichnung208 FROM ax_gemarkung b209 WHERE a.land=b.land210 AND a.gemarkung=b.gemarkungsnummer211 AND b.endet IS NULL212 );213 214 215 -- G E M E I N D E216 217 TRUNCATE pp_gemeinde;218 -- Vorkommende Gemeinden aus den Gemarkungen219 INSERT INTO pp_gemeinde220 ( land, regierungsbezirk, kreis, gemeinde)221 SELECT DISTINCT land, regierungsbezirk, kreis, gemeinde222 FROM pp_gemarkung223 ORDER BY land, regierungsbezirk, kreis, gemeinde;224 225 -- Namen der Gemeinde dazu als Optimierung bei der Auskunft226 UPDATE pp_gemeinde a227 SET gemeindename =228 ( SELECT b.bezeichnung229 FROM ax_gemeinde b230 WHERE a.land=b.land231 AND a.regierungsbezirk=b.regierungsbezirk232 AND a.kreis=b.kreis233 AND a.gemeinde=b.gemeinde234 AND b.endet IS NULL235 );236 237 238 -- Geometrien der FlurstÃŒcke schrittweise zu groesseren Einheiten zusammen fassen239 -- ==============================================================================240 -- http://postgis.net/docs/manual-1.5/ST_Union.html (Aggregate version)241 -- http://postgis.net/docs/manual-1.5/ST_Collect.html242 243 -- Wenn ein Gebiet durch geometrische Filter im NBA-Verfahren ausgegeben wurde, dann gibt es244 -- Randstreifen, die zu Pseudo-Fluren zusammen gefasst werden.245 -- Diese werden fÃŒr den WMS durch einen View ausgefiltert, der nur eine Gemeinde darstellt.246 247 -- AusfÃŒhrungszeit: 1 mittlere Stadt mit ca. 14.000 FlurstÃŒcken > 100 Sek248 249 TRUNCATE pp_flur;250 251 INSERT INTO pp_flur (land, regierungsbezirk, kreis, gemeinde, gemarkung, flurnummer, anz_fs, the_geom )252 SELECT f.land, f.regierungsbezirk, f.kreis, f.gemeinde, f.gemarkungsnummer as gemarkung, f.flurnummer,253 count(gml_id) as anz_fs,254 ST_Multi(st_union(st_buffer(f.wkb_geometry,0.06))) AS the_geom -- Zugabe um ZwischenrÀume zu vermeiden255 FROM ax_flurstueck f256 WHERE f.endet IS NULL AND NOT f.wkb_geometry IS NULL257 GROUP BY f.land, f.regierungsbezirk, f.kreis, f.gemeinde, f.gemarkungsnummer, f.flurnummer;258 259 -- Vereinfachte Geometrie der Flur fÃŒr die Darstelung im WMS in einem kleinen MaÃstab260 UPDATE pp_flur SET simple_geom = st_simplify(the_geom, 0.5);261 262 263 -- Fluren zu Gemarkungen zusammen fassen264 -- -------------------------------------265 266 -- FlÀchen vereinigen267 UPDATE pp_gemarkung a268 SET the_geom =269 ( SELECT ST_Multi(ST_Union(ST_Buffer(b.the_geom,0.15))) AS the_geom -- Puffer/Zugabe um Löcher zu vermeiden270 FROM pp_flur b271 WHERE a.land = b.land272 AND a.gemarkung = b.gemarkung273 );274 -- Hierbei können Exceptions auftreten wobei das Geometriefeld einzelner Gemarkungen leer bleibt.275 -- Die Ursache ist unklar.276 -- TopologyException: found non-noded intersection between LINESTRING277 278 -- Praktische Lösung:279 -- Bei den Gemarkungen, die nichts abbekommen haben, mit schrittweise groesserem Buffer noch mal versuchen.280 UPDATE pp_gemarkung a281 SET the_geom =282 ( SELECT ST_Multi(ST_Union(ST_Buffer(b.the_geom,0.20))) AS the_geom -- Puffer vergroessert283 FROM pp_flur b284 WHERE a.land = b.land285 AND a.gemarkung = b.gemarkung286 ) WHERE the_geom IS NULL;287 288 UPDATE pp_gemarkung a289 SET the_geom =290 ( SELECT ST_Multi(ST_Union(ST_Buffer(b.the_geom,0.30))) AS the_geom -- Puffer vergroessert291 FROM pp_flur b292 WHERE a.land = b.land293 AND a.gemarkung = b.gemarkung294 ) WHERE the_geom IS NULL;295 296 /* Guggst du (auf leeren Geometry-Typ achten:297 298 SELECT gemarkungsname, geometrytype(the_geom) AS typ,299 st_isvalid(the_geom) AS vali, st_asewkt(the_geom) AS ewkt300 FROM pp_gemarkung;301 302 */303 304 -- Die Fluren in der Gemarkung zaehlen305 UPDATE pp_gemarkung a306 SET anz_flur =307 ( SELECT count(flurnummer) AS anz_flur308 FROM pp_flur b309 WHERE a.land = b.land310 AND a.gemarkung = b.gemarkung311 ); -- Gemarkungsnummer ist je BundesLand eindeutig312 313 314 -- Vereinfachte Geometrie der Gemarkung fÃŒr die Darstellung im WMS in einem kleinen MaÃstab315 -- Gemarkung (Wirkung siehe pp_gemarkung_analyse)316 UPDATE pp_gemarkung SET simple_geom = st_simplify(the_geom, 2.2);317 318 319 -- Gemarkungen zu Gemeinden zusammen fassen320 -- ----------------------------------------321 322 -- FlÀchen vereinigen323 UPDATE pp_gemeinde a324 SET the_geom =325 ( SELECT st_multi(st_union(st_buffer(b.the_geom,0.2))) AS the_geom -- noch mal Zugabe326 FROM pp_gemarkung b327 WHERE a.land = b.land328 AND a.gemeinde = b.gemeinde329 );330 -- Hierbei können Exceptions auftreten wobei das Geometriefeld einzelner Gemarkungen leer bleibt.331 -- Die Ursache ist unklar.332 333 -- Praktische Lösung:334 -- weitere Versuche mit mehr Puffer, wenn Exception auftrat335 UPDATE pp_gemeinde a336 SET the_geom =337 ( SELECT st_multi(st_union(st_buffer(b.the_geom,0.3))) AS the_geom -- MEHR Zugabe338 FROM pp_gemarkung b339 WHERE a.land = b.land340 AND a.gemeinde = b.gemeinde341 ) WHERE the_geom IS NULL;342 343 UPDATE pp_gemeinde a344 SET the_geom =345 ( SELECT st_multi(st_union(st_buffer(b.the_geom,0.4))) AS the_geom -- noch MEHR Zugabe346 FROM pp_gemarkung b347 WHERE a.land = b.land348 AND a.gemeinde = b.gemeinde349 ) WHERE the_geom IS NULL;350 351 352 -- Vereinfachte Geometrie der Gemeinde fÃŒr die Darstellung im WMS in einem kleinen MaÃstab353 -- Gemeinde (Wirkung siehe pp_gemeinde_analyse)354 UPDATE pp_gemeinde SET simple_geom = st_simplify(the_geom, 5.0);355 356 -- Gemarkungen in der Gemeinde zÀhlen357 UPDATE pp_gemeinde a358 SET anz_gemarkg =359 ( SELECT count(gemarkung) AS anz_gemarkg360 FROM pp_gemarkung b361 WHERE a.land = b.land362 AND a.gemeinde = b.gemeinde363 );364 365 366 160 -- Tabelle fuer die Zuordnung vom EigentÃŒmern zu Gemeinden 367 161 -- ======================================================= -
trunk/mapproxy/projects/alkisrlp.yaml
r266 r354 1 1 base: ../base.yaml 2 2 3 # 2012-08-28 neue GDI: MapProxy 1.4 4 # 2013-01-24 neue ALKIS-grids in base.yaml, Verschiebung level +1 5 # 2013-03-05 neues Mapfile "_a.map", Layernamen anpassen, Mapserver 6.2 3 # 2012-05-31 neue GDI: MapProxy 1.4 4 # 2012-10-24 ALKIS-Version 07 5 # 2012-11-14 WMS von neuer GDI 6 # 2012-11-15 map statt xml-Wrapper 7 # 2013-01-23 neue ALKIS-grids in base.yaml, Verschiebung level +1 8 # 2013-03-08 neues Mapfile, Layernamen anpassen, Mapserver 6.2 9 # 2013-09-30 Neues Grid-Level 125 in base, hier Minscale von 100 auf 50 (fuer _4-Druck) 10 # 2014-01-06 URL umst. von mapserv62 auf mapserv6, dies dann auf 6.4.1 linken 11 # 2014-01-09 2 neue Layer: "sonstiges bauwerk oder sonstigeeinrichtung (_l)" 12 # 2014-09-09 PostNAS-Vers 08 6 13 7 # http://map .krz.de/mapproxy/alkisrlp/service?REQUEST=GetCapabilities&SERVICE=WMS&VERSION=1.1.114 # http://mapserver.krz.de/mapproxy/alkisrlp/service?REQUEST=GetCapabilities&SERVICE=WMS&VERSION=1.1.1 8 15 services: 9 16 demo: … … 16 23 md: 17 24 title: "c: ALKIS" 18 abstract: Liegenschaftskataster ALKIS Demokarte RLP Mustermonzel. Konverter PostNAS 0. 7, Ãber MapProxy 1.4Cache25 abstract: Liegenschaftskataster ALKIS Demokarte RLP Mustermonzel. Konverter PostNAS 0.8, Ãber MapProxy Cache 19 26 online_resource: http://mapproxy.org/ 20 27 contact: … … 36 43 title: Nutzungsarten 37 44 sources: [alkisrlp_nua_c] 38 min_scale: 10045 min_scale: 50 39 46 max_scale: 35000 40 47 - name: alkis_lieka 41 48 title: ALKIS 42 49 sources: [alkisrlp_lie_c] 43 min_scale: 10050 min_scale: 50 44 51 max_scale: 35000 45 52 - name: alkis_bezirke … … 53 60 alkisrlp_lie_c: 54 61 grids: [alkis_rlp_lie_grid] 55 sources: ["alkis:ax_gebaeude_umr,ax_bauteil,ax_besonderegebaeudelinie,ag_t_gebaeude,ag_l_gebaeude,ax_flurstueck,ax_besondereflurstuecksgrenze,ag_l_flurstueck,sk2004_zuordnungspfeil_spitze,ag_t_flurstueck,ag_p_flurstueck,ax_punktortta,ap_pto_stra,ap_pto","alkis_fi:ax_flurstueck"] 62 sources: ["alkis:ax_gebaeude_umr,ax_bauteil,ax_besonderegebaeudelinie,ag_t_gebaeude,ax_sonstigesbauwerkodersonstigeeinrichtung,ax_sonstigesbauwerkodersonstigeeinrichtung_l,ax_flurstueck,ax_besondereflurstuecksgrenze,ag_l_flurstueck,sk2004_zuordnungspfeil_spitze,ag_t_flurstueck,ag_p_flurstueck,ax_punktortta,ap_pto_stra,ap_pto","alkis_fi:ax_flurstueck"] 63 link_single_color_images: true 56 64 alkisrlp_nua_c: 57 65 grids: [alkis_rlp_nua_grid] … … 67 75 wms_opts: 68 76 legendgraphic: true 69 # rlp , eng um das Testgebiet:77 # rlp 70 78 coverage: 79 # eng um das Testgebiet: 71 80 bbox: "349550,5529460,355140,5532210" 72 81 bbox_srs: "EPSG:25832" 73 82 req: 74 url: http:// 10.0.100.72/cgi-bin/mapserv62?75 map: /opt/gdi/alkis0 7/alkis07rlpa.map83 url: http://ows.krz.de/cgi-bin/mapserv6? 84 map: /opt/gdi/alkis08/alkis08rlp.map 76 85 transparent: true 77 86 format: image/png … … 83 92 map: false 84 93 req: 85 url: http:// 10.0.100.72/cgi-bin/mapserv62?86 map: /opt/gdi/alkis0 7/alkis07rlpa.map94 url: http://ows.krz.de/cgi-bin/mapserv6? 95 map: /opt/gdi/alkis08/alkis08rlp.map 87 96 debug: 88 97 type: debug -
trunk/mapproxy/script/seed_alkisrlp.sh
r111 r354 1 1 #!/bin/bash 2 2 # MapProxy-Kacheln auf Vorrat generieren 3 # 2011-09-06 3 # 2013-01-24 4 4 5 # Doku: http://mapproxy.org/docs/1.1.1/seed.html 5 6 # Ausfuehren mit "sudo su www-data" 7 6 8 echo "MapProxy seeding ALKIS DEMO Mustermonzel" 7 9 echo "** Bitte ausfuehren als User www-data" 10 11 # Script im gleichen Ordner wie dieses 12 ./cleanup_alkisrlp.sh 13 14 # Dann mittleren MaÃstabsbereich fuellen 15 mapproxy-seed --proxy-conf=/opt/gdi/mpx/projects/alkisrlp.yaml \ 16 --seed-conf=/opt/gdi/mpx/seed/alkisrlp.yaml \ 17 --concurrency 1 \ 18 --seed alkisrlp_lie 8 19 # 9 mapproxy-seed --proxy-conf=/data/mapproxy/projects/alkisrlp.yaml \ 10 --seed-conf=/data/mapproxy/seed/alkisrlp.yaml \ 11 --concurrency 1 \ 12 --seed alkisrlp 13 # 14 mapproxy-seed --proxy-conf=/data/mapproxy/projects/alkisrlp.yaml \ 15 --seed-conf=/data/mapproxy/seed/alkisrlp.yaml \ 16 --concurrency 1 \ 17 --seed alkisrlp_nutzg 18 # 20 mapproxy-seed --proxy-conf=/opt/gdi/mpx/projects/alkisrlp.yaml \ 21 --seed-conf=/opt/gdi/mpx/seed/alkisrlp.yaml \ 22 --concurrency 1 \ 23 --seed alkisrlp_nua -
trunk/mapproxy/seed/alkisrlp.yaml
r111 r354 1 # MapProxy-Seeds und -Cleanups fuer ALKIS Mustermonzel 2 # TESTBESTAND 3 1 # MapProxy-Seeds und -Cleanups fuer TESTBESTAND ALKIS Mustermonzel - krz-Netz 2 # Siehe identische Version fuer Internet auf Server skrzmapweb02 4 3 # Stand 5 # 2011-09-19 6 7 # alkis_grid: 8 # 0=10.000 1=5.000 2=2.500 3=1.750 4=1.000 5=750 6=500 7=250 9 10 # alkis_nua_grid: 11 # 0=10.000 1=5.000 2=2.500 3=1.000 4=500 5=250 4 # 2011-09-06 seed.yaml aufgeteilt 5 # 2013-01-23 grid in base.yaml geaendert, level verschiebt sich um 1 6 # 2013-09-30 neuer Level 7 in NUA clean 7 # 2015-09-28 Korrektur: "grids: [alkis_rlp_lie_grid]" statt "grids: [alkis_rlp_grid]" 12 8 13 9 seeds: 14 15 # RLP Demo Mustermonzel 16 alkisrlp: 17 caches: [alkisrlp_c] 18 grids: [alkis_rlp_grid] 10 # Lieka 5000-1000 generieren 11 alkisrlp_lie: 12 caches: [alkisrlp_lie_c] 13 grids: [alkis_rlp_lie_grid] 19 14 coverages: [alkis_rlp_demo] 20 15 levels: 21 16 from: 0 22 to: 617 to: 7 23 18 refresh_before: 24 19 days: 2 25 26 alkisrlp_nu tzg:27 caches: [alkisrlp_nu tzg_c]20 # Nutzung generieren 21 alkisrlp_nua: 22 caches: [alkisrlp_nua_c] 28 23 grids: [alkis_rlp_nua_grid] 29 24 coverages: [alkis_rlp_demo] 30 25 levels: 31 26 from: 0 32 to: 427 to: 5 33 28 refresh_before: 34 29 days: 2 35 30 36 31 cleanups: 37 38 32 # grosse Masstaebe 1:1.750-1:250 aufraeumen 39 33 alkisrlp_g: 40 caches: [alkisrlp_ c]41 grids: [alkis_rlp_ grid]42 #coverages: [alkis_rlp_demo]34 caches: [alkisrlp_lie_c] 35 grids: [alkis_rlp_lie_grid] 36 coverages: [alkis_rlp_demo] 43 37 remove_before: 44 38 days: 2 45 39 levels: 46 from: 3 47 to: 7 48 49 # kleine Masstaebe 1:10.000-2.500 aufraeumen 40 from: 4 41 to: 8 42 # kleine Masstaebe 1:25.000-2.500 aufraeumen 50 43 alkisrlp_k: 51 caches: [alkisrlp_ c]52 grids: [alkis_rlp_ grid]53 #coverages: [alkis_rlp_demo]44 caches: [alkisrlp_lie_c] 45 grids: [alkis_rlp_lie_grid] 46 coverages: [alkis_rlp_demo] 54 47 remove_before: 55 48 days: 2 56 49 levels: 57 50 from: 0 58 to: 2 59 51 to: 3 60 52 # Nutzung aufraeumen 61 53 alkisrlp_n: 62 caches: [alkisrlp_nu tzg_c]54 caches: [alkisrlp_nua_c] 63 55 grids: [alkis_rlp_nua_grid] 64 #coverages: [alkis_rlp_demo]56 coverages: [alkis_rlp_demo] 65 57 remove_before: 66 58 days: 2 67 59 levels: 68 60 from: 0 61 to: 7 62 # Bezirke aufraeumen 63 alkisrlp_b: 64 caches: [alkisrlp_bez_c] 65 grids: [alkis_rlp_bez_grid] 66 coverages: [alkis_rlp_demo] 67 remove_before: 68 days: 20 69 levels: 70 from: 0 69 71 to: 5 70 72 71 72 73 coverages: 73 74 74 alkis_rlp_demo: 75 #box: "349000,5527000,356000,5536000" # = grid76 75 # Ausschnitt eng um das Testgebiet: 77 76 bbox: "349550,5529460,355140,5532210"
Note: See TracChangeset
for help on using the changeset viewer.