Changeset 183 for trunk/data
- Timestamp:
- 10/31/12 16:46:53 (11 years ago)
- Location:
- trunk/data/konvert/postnas_0.7
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/data/konvert/postnas_0.7/alkis_PostNAS_0.7_schema.sql
r178 r183 38 38 -- Typ 'GEOMETRY' bei Tabellen: AX_WegPfadSteig, AX_UntergeordnetesGewaesser 39 39 40 -- 2012-10-31 FJ Trigger fuer NAS-Replace-Saetze repariert: 41 -- siehe: FUNCTION delete_feature_kill() 42 -- ax_historischesflurstueck.buchungsart ist Text nicht integer. 43 40 44 -- VERSIONS-NUMMER: 41 45 42 -- Dies Schema kann nichtmehr mit der installierbaren gdal-Version 1.9 verwendet werden.46 -- Dies Schema kann NICHT mehr mit der installierbaren gdal-Version 1.9 verwendet werden. 43 47 -- Derzeit muss ogr2ogr (gdal) aus den Quellen compiliert werden, die o.g. Patch enthalten. 44 48 -- WeiterfÃŒhrung dieses Zweiges als PostNAS 0.7 … … 267 271 END IF; 268 272 273 -- Das beginn-Datum des neuen Objektes ermitteln, der Satz ist kurz zuvor eingefuegt worden 274 275 -- Variante 1 funktioniert, wenn gml_id auch einen Timestamp enthaelt 269 276 sql := 'SELECT beginnt FROM ' || NEW.typename || ' WHERE identifier=''urn:adv:oid:' || NEW.replacedBy || ''''; 270 277 -- RAISE NOTICE 'SQL: %', sql; 271 272 -- FEHLER: identifier enthÀlt nur gml_id, aber nicht den Timestamp dahinter273 -- Daher wird das zu ersetzende Obejkt nicht gefunden274 275 278 EXECUTE sql INTO endete; 276 279 277 /*278 280 IF endete IS NULL AND length(NEW.replacedBy)>16 THEN 279 RAISE NOTICE '%: Nachfolger % nicht gefunden - versuche ''%''', NEW.featureid, substr(NEW.replacedBy, 1, 16);281 RAISE NOTICE '%: Nachfolger % nicht gefunden - versuche ''%''', NEW.featureid, NEW.replacedBy, substr(NEW.replacedBy, 1, 16); 280 282 sql := 'SELECT beginnt FROM ' || NEW.typename 281 283 || ' WHERE gml_id=''' || substr(NEW.replacedBy, 1, 16) || '''' … … 284 286 EXECUTE sql INTO endete; 285 287 END IF; 286 */287 288 288 289 IF endete IS NULL THEN … … 296 297 END IF; 297 298 298 --RAISE NOTICE '%: Nachfolgeobjekt beginnt um %.', NEW.featureid, endete;299 RAISE NOTICE '%: Nachfolgeobjekt beginnt um %.', NEW.featureid, endete; 299 300 ELSE 300 301 RAISE EXCEPTION '%: UngÃŒltiger Kontext % (''delete'' oder ''replace'' erwartet).', NEW.featureid, NEW.context; 301 302 END IF; 302 303 304 -- mit dem zuvor ermittelten Beginn-Datum des replace-Objektes das alte Objekt historisieren 303 305 sql := 'UPDATE ' || NEW.typename 304 306 || ' SET endet=''' || endete || '''' 305 307 || ' WHERE (identifier=''urn:adv:oid:' || NEW.featureid || ''' OR identifier=''urn:adv:oid:' || gml_id || ''')' 306 308 || ' AND endet IS NULL'; 307 --RAISE NOTICE 'SQL: %', sql;309 RAISE NOTICE 'SQL: %', sql; 308 310 EXECUTE sql; 309 311 GET DIAGNOSTICS n = ROW_COUNT; … … 328 330 -- historische Objekte werden sofort gelöscht. 329 331 -- Siehe Mail W. Jacobs vom 23.03.2012 in PostNAS-Mailingliste 332 -- geaendert krz FJ 2012-10-31 330 333 CREATE OR REPLACE FUNCTION delete_feature_kill() RETURNS TRIGGER AS $$ 331 334 DECLARE 332 335 query TEXT; 336 begsql TEXT; 337 aktbeg TEXT; 333 338 gml_id TEXT; 334 339 BEGIN … … 342 347 343 348 IF NEW.context='delete' THEN 344 query := 'DELETE FROM ' || NEW.typename || ' WHERE gml_id = ''' || gml_id || ''''; 349 -- ersatzloses Loeschen eines Objektes 350 351 -- Tabelle der Objekt-Art 352 query := 'DELETE FROM ' || NEW.typename 353 || ' WHERE gml_id = ''' || gml_id || ''''; 345 354 EXECUTE query; 346 355 347 query := 'DELETE FROM alkis_beziehungen WHERE beziehung_von = ''' || gml_id || ''' OR beziehung_zu = ''' || gml_id || ''''; 356 -- Tabelle alkis_beziehungen 357 query := 'DELETE FROM alkis_beziehungen WHERE beziehung_von = ''' || gml_id 358 || ''' OR beziehung_zu = ''' || gml_id || ''''; 348 359 EXECUTE query; 360 RAISE NOTICE 'Lösche gml_id % in % und Beziehungen', gml_id, NEW.typename; 361 349 362 ELSE 350 -- replace 351 query := 'DELETE FROM ' || NEW.typename || ' WHERE gml_id = ''' || gml_id || ''''; 363 -- Ersetzen eines Objektes 364 -- In der objekt-Tabelle sind bereits 2 Objekte vorhanden (alt und neu). 365 -- Die 2 DatensÀtze unterscheiden sich nur in ogc_fid und beginnt 366 367 -- beginnt-Wert des aktuellen Objektes ermitteln 368 -- RAISE NOTICE 'Suche beginnt von neuem gml_id % ', substr(NEW.replacedBy, 1, 16); 369 begsql := 'SELECT max(beginnt) FROM ' || NEW.typename || ' WHERE gml_id = ''' || substr(NEW.replacedBy, 1, 16) || ''' AND endet IS NULL'; 370 EXECUTE begsql INTO aktbeg; 371 372 -- Nur alte Objekte entfernen 373 query := 'DELETE FROM ' || NEW.typename 374 || ' WHERE gml_id = ''' || gml_id || ''' AND beginnt < ''' || aktbeg || ''''; 352 375 EXECUTE query; 353 -- alkis_beziehungen bleibt so 376 377 -- Tabelle alkis_beziehungen 378 IF gml_id = substr(NEW.replacedBy, 1, 16) THEN -- gml_id gleich 379 -- Beziehungen des Objektes wurden redundant noch einmal eingetragen 380 -- ToDo: HIER sofort die Redundanzen zum aktuellen Objekt beseitigen. 381 -- Work-Arround: Nach der Konvertierung werden im Post-Processing 382 -- ALLE Redundanzen mit einem SQL-Statemant beseitigt. 383 -- RAISE NOTICE 'Ersetze gleiche gml_id % in %', gml_id, NEW.typename; 384 385 -- ENTWURF ungetestet: 386 --query := 'DELETE FROM alkis_beziehungen AS bezalt 387 -- WHERE (bezalt.beziehung_von = ' || gml_id || ' OR bezalt.beziehung_zu = ' || gml_id ||') 388 -- AND EXISTS (SELECT ogc_fid FROM alkis_beziehungen AS bezneu 389 -- WHERE bezalt.beziehung_von = bezneu.beziehung_von 390 -- AND bezalt.beziehung_zu = bezneu.beziehung_zu 391 -- AND bezalt.beziehungsart = bezneu.beziehungsart 392 -- AND bezalt.ogc_fid < bezneu.ogc_fid);' 393 --EXECUTE query; 394 395 ELSE 396 -- replace mit ungleicher gml_id 397 -- Falls dies vorkommt, die Function erweitern 398 RAISE EXCEPTION '%: neue gml_id % bei Replace in %. alkis_beziehungen muss aktualisiert werden!', gml_id, NEW.replacedBy, NEW.typename; 399 END IF; 354 400 END IF; 355 401 … … 361 407 -- Im Trigger 'delete_feature_trigger' muss eine dieser beiden Functions (_hist oder _kill) verlinkt werden, 362 408 -- je nachdem ob nur aktuelle oder auch historische Objekte in der Datenbank gefÃŒhrt werden sollen. 363 364 409 365 410 -- Wenn die Datenbank MIT Historie angelegt wurde, aber eigentlich stört die nur. … … 377 422 LOOP 378 423 EXECUTE 'DELETE FROM ' || c.table_name || ' WHERE NOT endet IS NULL'; 379 RAISE NOTICE 'Lösche ended in: %', c.table_name;424 -- RAISE NOTICE 'Lösche ended in: %', c.table_name; 380 425 END LOOP; 381 426 END; … … 383 428 384 429 385 -- Alle Tabellen löschen 386 -- SELECT alkis_drop();430 -- Alle Tabellen löschen: 431 -- SELECT alkis_drop(); 387 432 388 433 … … 844 889 nachfolgerflurstueckskennzeichen varchar[], 845 890 blattart integer, 846 buchungsart integer, 891 --buchungsart integer, -- Aenderung krz FJ 2012-10-31: Meldung aus Konverter 892 buchungsart varchar, 847 893 buchungsblattkennzeichen double precision, 848 894 bezirk integer, … … 1283 1329 -- beziehtSichAufFlurstueck --> AX_Flurstueck 1284 1330 1331 1332 -- BEGIN - Nur fuer Test-Zwecke 1333 CREATE OR REPLACE FUNCTION info_flurstueck() RETURNS TRIGGER AS $$ 1334 BEGIN 1335 RAISE NOTICE 'Insert Flurstueck %', NEW.gml_id; 1336 RETURN NEW; 1337 END; 1338 $$ LANGUAGE plpgsql; 1339 1340 -- CREATE TRIGGER neues_fs_trigger 1341 -- BEFORE INSERT ON ax_flurstueck 1342 -- FOR EACH ROW 1343 -- EXECUTE PROCEDURE info_flurstueck(); 1344 1345 -- ENDE - Nur fuer Test-Zwecke 1285 1346 1286 1347 -
trunk/data/konvert/postnas_0.7/konv_batch.sh
r178 r183 1 #!/bin/bash1 #!/bin/bash 2 2 ## ------------------------------------------------- 3 3 ## Konvertierung von ALKIS NAS-Format nach PosGIS - … … 23 23 ## 2012-02-28 Neuer Parameter 4 um Post-Prozessing zu unterdrücken 24 24 ## 2012-04-25 Durch GDAL Patch #5444 werden die Löschungen als Trigger auf Tabelle 'delete' verarbeitet 25 ## 2012-05-18 Umzug neue GDI, GDAL-Trunk unter Pfad 26 ## 2012-10-30 Umgebungsvariable setzen, delete-Tabelle am Ende für Analyse gefüllt lassen. 27 ## Test als 0.7a mit gepatchter gdal-Version (noch 2.0dev) 25 28 ## 26 ## ToDo: Option "-skipfailures" nach Test entfernen ? 27 ## 28 ## Konverter: /opt/gdal-1.9.1/bin/ = GDAL 1.9-DEV / PostNAS 0.7 29 ## Konverter: /opt/gdal-2.0/bin/ = GDAL 2.0-DEV / PostNAS 0.7 29 30 ## Koordinaten: EPSG:25832 UTM, Zone 32 30 31 ## -a_srs EPSG:25832 - bleibt im UTM-System (korrigierte Werte) 31 32 ## 32 33 echo "**************************************************" 33 echo "** K o n v e r t i e r u n g PostNAS 0.7 34 echo "** K o n v e r t i e r u n g PostNAS 0.7a **" 34 35 echo "**************************************************" 35 36 ## Parameter: … … 75 76 fi 76 77 # Fehlerprotokoll: 77 errprot='/data/konvert/postnas_0.7 /log/postnas_err_'$DBNAME'.prot'78 errprot='/data/konvert/postnas_0.7a/log/postnas_err_'$DBNAME'.prot' 78 79 # 79 80 # DB-Connection … … 83 84 echo "Verarbeitungs-Modus= ${verarb}" 84 85 echo " " 85 # Alte delete-Eintraege in DB? 86 # noch alte delete-Eintraege in DB? 87 echo "Leeren der delete-Tabelle" 86 88 echo 'TRUNCATE table "delete";' | psql $con 87 89 # … … 104 106 echo "* Datei: " $nasdatei >> $errprot 105 107 # 108 # Umgebungsvariable setzen: 109 export GML_FIELDTYPES=ALWAYS_STRINGS # PostNAS behandelt Zahlen wie Strings, PostgreSQL-Treiber macht daraus Zahlen 110 export OGR_SETFIELD_NUMERIC_WARNING=YES # Meldung abgeschnittene Zahlen? 111 #export CPL_DEBUG=ON # Meldung, wenn Attribute überschrieben werden 112 # 106 113 # PostNAS Konverter-Aufruf 107 114 # 108 /opt/gdal-1.9.1/bin/ogr2ogr -f "PostgreSQL" -append ${update} -skipfailures \ 115 # -skipfailures # 116 # -overwrite # 117 /opt/gdal-2.0/bin/ogr2ogr -f "PostgreSQL" -append ${update} -skipfailures \ 109 118 PG:"dbname=${DBNAME} host=localhost port=5432" -a_srs EPSG:25832 ${nasdatei} 2>> $errprot 110 119 nasresult=$? 111 120 echo "* Resultat: " $nasresult " fuer " ${nasdatei} 121 echo "* Resultat: " $nasresult " fuer " ${nasdatei} >> $errprot 112 122 done # Ende Zipfile 113 123 done # Ende Ordner … … 126 136 echo "** Post-Processing (Nacharbeiten zur Konvertierung)" 127 137 echo "** - Optimierte Nutzungsarten neu Laden:" 128 psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.7 /nutzungsart_laden.sql138 psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.7a/nutzungsart_laden.sql 129 139 ## 130 140 echo "** - Fluren / Gemarkungen / Gemeinden neu Laden:" 131 psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.7 /pp_laden.sql141 psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.7a/pp_laden.sql 132 142 fi 133 143 # Durch Einfuegen in Tabelle 'delete' werden Loeschungen anderer Tabellen getriggert 134 144 echo "** delete-Tabelle enthält:" 135 145 echo 'SELECT COUNT(featureid) AS delete_zeilen FROM "delete";' | psql $con 136 echo " delete-Tabelle loeschen:" 137 echo 'TRUNCATE table "delete";' | psql $con 146 #echo " delete-Tabelle loeschen:" 147 #echo 'TRUNCATE table "delete";' | psql $con 148 # Fuer Analyse-Zwecke sollten die Delete-Eintraege erhalten bleiben bis zum naechsten Lauf. 149 # TRUNCATE erfolgt VOR der Konnvertierung. 138 150 # 139 151 # Wenn die Datenbank MIT Historie angelegt wurde, man diese aber gar nicht braucht, 140 152 # dann hinterher aufräumen der historischen Objekte 141 153 #echo "** geendete Objekte entfernen:" 142 154 # Function : 143 echo 'SELECT alkis_delete_all_endet();' | psql $con 155 #echo 'SELECT alkis_delete_all_endet();' | psql $con 156 #echo " ... geendete Objekte entfernen wurde fuer Test dektiviert." 157 #echo " Bitte manuell ausfuehren: SELECT alkis_delete_all_endet(); " 144 158 # 145 echo "Das Fehler-Protokoll wurde ausgegeben in die Datei\n$errprot" 159 echo "Das Fehler-Protokoll wurde ausgegeben in die Datei $errprot" 160 #echo "HINWEIS: -skipfailures fuer Produktion wieder einschalten." 146 161 # -
trunk/data/konvert/postnas_0.7/pp_laden.sql
r178 r183 10 10 -- 2012-04-17 Flurstuecksnummern auf Standardposition 11 11 -- 2012-04-24 Generell Filter 'endet IS NULL' um historische Objekte auszublenden 12 12 -- 2012-04-25 Abstürze und Fehler (durch kaputte Geometrie?) beim Zusammenfassen der Flächen 13 -- Mehr buffer, mehr simplify? 14 -- 2012-10-29 Redundanzen aus alkis_beziehungen beseitigen, die nach NAS replace auftreten 13 15 14 16 -- ============================ … … 20 22 -- Antwortzeiten in WMS, WFS, Buchauskunft oder Navigation (Suche) verursachen. 21 23 22 -- Im Rahmen eines "Post-Processing" werden diese Daten nach jeder Konvertierung (NBA-Akt ialisierung)24 -- Im Rahmen eines "Post-Processing" werden diese Daten nach jeder Konvertierung (NBA-Aktualisierung) 23 25 -- einmal komplett aufbereitet. Die benötigten Informationen stehen somit den Anwendungen mundgerecht zur Verfügung. 24 26 … … 27 29 -- Die Ausführung dieses Scriptes auf einer Datenbank für eine 80T-Einwohner-Stadt dauert ca.: 500 Sek. ! 28 30 29 30 31 -- =========================== 32 -- Flurstuecksnummern-Position 33 -- =========================== 31 SET client_encoding = 'UTF-8'; 32 33 34 -- ============================================================================ 35 -- Redundanzen aus alkis_beziehungen beseitigen, die nach NAS replace auftreten 36 -- ============================================================================ 37 -- Work arround: alle Redundazen nach einem Lauf entfernen. 38 -- Besser wäre: sofort im Trigger bei replace entfernen. 39 -- Siehe Schema in FUNCTION delete_feature_kill 40 41 DELETE 42 FROM alkis_beziehungen AS bezalt -- Beziehung Alt 43 WHERE EXISTS 44 (SELECT ogc_fid 45 FROM alkis_beziehungen AS bezneu -- Beziehung Neu 46 WHERE bezalt.beziehung_von = bezneu.beziehung_von 47 AND bezalt.beziehung_zu = bezneu.beziehung_zu 48 AND bezalt.beziehungsart = bezneu.beziehungsart 49 AND bezalt.ogc_fid < bezneu.ogc_fid 50 ); 51 -- Denkbar ist eine Variante für den Trigger, die zusätzlich 52 -- auf eine bestimmte gml_id filtert. 53 -- Damit wäre die DB schon während der Konvertierung konsistenter. 54 55 56 -- SELECT * 57 -- FROM alkis_beziehungen AS bezalt 58 -- WHERE EXISTS 59 -- (SELECT ogc_fid 60 -- FROM alkis_beziehungen AS bezneu 61 -- WHERE bezalt.beziehung_von = bezneu.beziehung_von 62 -- AND bezalt.beziehung_zu = bezneu.beziehung_zu 63 -- AND bezalt.beziehungsart = bezneu.beziehungsart 64 -- AND bezalt.ogc_fid < bezneu.ogc_fid 65 -- ); 66 67 -- SELECT * 68 -- FROM alkis_beziehungen AS bezalt 69 -- WHERE EXISTS 70 -- (SELECT ogc_fid 71 -- FROM alkis_beziehungen AS bezneu 72 -- WHERE bezalt.beziehung_von = bezneu.beziehung_von 73 -- AND bezalt.beziehung_zu = bezneu.beziehung_zu 74 -- AND bezalt.beziehungsart = bezneu.beziehungsart 75 -- AND bezalt.ogc_fid < bezneu.ogc_fid 76 -- ) 77 -- -- mit dem Zusatz nur die Faelle aus dem letzten Durchlauf, 78 -- -- die aktuell noch in der Delet-Tabelle stehen 79 -- AND EXISTS 80 -- (SELECT ogc_fid 81 -- FROM delete 82 -- WHERE bezalt.beziehung_von = substr(featureid, 1, 16) 83 -- OR bezalt.beziehung_zu = substr(featureid, 1, 16) 84 -- ); 85 86 87 -- ================================= 88 -- Flurstuecksnummern-Label-Position 89 -- ================================= 34 90 35 91 -- ersetzt den View "s_flurstueck_nr" für WMS-Layer "ag_t_flurstueck" … … 73 129 74 130 75 SET client_encoding = 'UTF-8'; 76 77 78 -- Alles auf Anfang! 79 DELETE FROM pp_gemeinde; 80 DELETE FROM pp_gemarkung; 81 DELETE FROM pp_flur; 82 131 -- G E M A R K U N G 132 133 DELETE FROM pp_gemarkung; 83 134 84 135 -- Vorkommende Paarungen Gemarkung <-> Gemeinde in ax_Flurstueck … … 91 142 ; 92 143 93 -- daraus: Vorkommende Gemeinden 144 -- Namen der Gemarkung dazu als Optimierung bei der Auskunft 145 UPDATE pp_gemarkung a 146 SET gemarkungsname = 147 ( SELECT b.bezeichnung 148 FROM ax_gemarkung b 149 WHERE a.land=b.land 150 AND a.gemarkung=b.gemarkungsnummer 151 AND b.endet IS NULL 152 ); 153 154 155 -- G E M E I N D E 156 157 DELETE FROM pp_gemeinde; 158 159 -- Vorkommende Gemeinden aus den gemarkungen 94 160 INSERT INTO pp_gemeinde 95 161 ( land, regierungsbezirk, kreis, gemeinde) … … 98 164 ORDER BY land, regierungsbezirk, kreis, gemeinde 99 165 ; 166 100 167 101 168 -- Namen der Gemeinde dazu als Optimierung bei der Auskunft … … 111 178 ); 112 179 113 -- Namen der Gemarkung dazu als Optimierung bei der Auskunft114 UPDATE pp_gemarkung a115 SET gemarkungsname =116 ( SELECT b.bezeichnung117 FROM ax_gemarkung b118 WHERE a.land=b.land119 AND a.gemarkung=b.gemarkungsnummer120 AND b.endet IS NULL121 );122 123 180 124 181 -- ============================================================================== … … 126 183 -- ============================================================================== 127 184 128 -- Dies macht nur Sinn, wenn der Inhalt der Datenb enk einen ganzen Katasterbezirk enthält.185 -- Dies macht nur Sinn, wenn der Inhalt der Datenbank einen ganzen Katasterbezirk enthält. 129 186 -- Wenn ein Gebiet durch geometrische Filter im NBA ausgegeben wurde, dann gibt es Randstreifen, 130 187 -- die zu Pseudo-Fluren zusammen gefasst werden. Fachlich falsch! 131 188 189 -- Ausführungszeit: 1 mittlere Stadt mit ca. 14.000 Flurstücken > 100 Sek 190 132 191 -- ToDo: 133 -- TopologyException: found non-noded intersection between ...134 192 -- Nur "geprüfte Flurstücke" verwenden? Filter? 193 194 -- 070: TopologyException: found non-noded intersection between ... 195 196 197 DELETE FROM pp_flur; 135 198 136 199 INSERT INTO pp_flur (land, regierungsbezirk, kreis, gemarkung, flurnummer, anz_fs, the_geom ) 137 200 SELECT f.land, f.regierungsbezirk, f.kreis, f.gemarkungsnummer as gemarkung, f.flurnummer, 138 201 count(gml_id) as anz_fs, 139 multi(st_union(st_buffer(f.wkb_geometry,0 ))) AS the_geom202 multi(st_union(st_buffer(f.wkb_geometry,0.05))) AS the_geom -- 5 cm Zugabe um Zwischenräume zu vermeiden 140 203 FROM ax_flurstueck f 141 204 WHERE f.endet IS NULL 142 205 GROUP BY f.land, f.regierungsbezirk, f.kreis, f.gemarkungsnummer, f.flurnummer; 143 206 207 -- Geometrie vereinfachen, auf 1 Meter glätten 208 UPDATE pp_flur SET simple_geom = simplify(the_geom, 1.0); 209 144 210 145 211 -- Fluren zu Gemarkungen zusammen fassen 146 212 -- ------------------------------------- 147 213 148 -- Flächen vereinigen 214 -- FEHLER: 290 Absturz PG! Bei Verwendung der ungebufferten präzisen Geometrie. 215 -- bufferOriginalPrecision failed (TopologyException: unable to assign hole to a shell), trying with reduced precision 216 -- UPDATE: ../../source/headers/geos/noding/SegmentString.h:175: void geos::noding::SegmentString::testInvariant() const: Zusicherung »pts->size() > 1« nicht erfüllt. 217 218 219 -- Flächen vereinigen (aus der bereits vereinfachten Geometrie) 149 220 UPDATE pp_gemarkung a 150 221 SET the_geom = 151 ( SELECT multi(st_union(st_buffer(b. the_geom,0))) AS the_geom222 ( SELECT multi(st_union(st_buffer(b.simple_geom,0.1))) AS the_geom -- noch mal 10 cm Zugabe 152 223 FROM pp_flur b 153 WHERE a.land=b.land AND a.gemarkung=b.gemarkung 224 WHERE a.land = b.land 225 AND a.gemarkung = b.gemarkung 154 226 ); 155 227 … … 159 231 ( SELECT count(flurnummer) AS anz_flur 160 232 FROM pp_flur b 161 WHERE a.land=b.land AND a.gemarkung=b.gemarkung 233 WHERE a.land = b.land 234 AND a.gemarkung = b.gemarkung 162 235 ); -- Gemarkungsnummer ist je BundesLand eindeutig 163 236 … … 169 242 -- ---------------------------------------- 170 243 171 -- Flächen vereinigen 244 -- Flächen vereinigen (aus der bereits vereinfachten Geometrie) 172 245 UPDATE pp_gemeinde a 173 246 SET the_geom = 174 ( SELECT multi(st_union(st_buffer(b. the_geom,0))) AS the_geom247 ( SELECT multi(st_union(st_buffer(b.simple_geom,0.1))) AS the_geom -- noch mal Zugabe 10 cm 175 248 FROM pp_gemarkung b 176 WHERE a.land=b.land AND a.gemeinde=b.gemeinde 249 WHERE a.land = b.land 250 AND a.gemeinde = b.gemeinde 177 251 ); 178 252 … … 182 256 ( SELECT count(gemarkung) AS anz_gemarkg 183 257 FROM pp_gemarkung b 184 WHERE a.land=b.land AND a.gemeinde=b.gemeinde 258 WHERE a.land = b.land 259 AND a.gemeinde = b.gemeinde 185 260 ); 186 261 -
trunk/data/konvert/postnas_0.7/sichten.sql
r178 r183 8 8 -- 2012-04-17 flstnr_ohne_position 9 9 -- 2012-04-24 pauschal Filter 'endet IS NULL' um historische Objekte auszublenden 10 10 -- 2012-10-29 Redundanzen in Beziehungen suchen (entstehen durch replace) 11 11 12 12 -- ----------------------------------------- … … 740 740 ; 741 741 742 CREATE OR REPLACE VIEW beziehungen_redundant 743 AS 744 SELECT * 745 FROM alkis_beziehungen AS bezalt 746 WHERE EXISTS 747 (SELECT ogc_fid 748 FROM alkis_beziehungen AS bezneu 749 WHERE bezalt.beziehung_von = bezneu.beziehung_von 750 AND bezalt.beziehung_zu = bezneu.beziehung_zu 751 AND bezalt.beziehungsart = bezneu.beziehungsart 752 AND bezalt.ogc_fid < bezneu.ogc_fid 753 ); 754 755 COMMENT ON VIEW beziehungen_redundant IS 'alkis_beziehungen zu denen es eine identische neue Version gibt.'; 756 757 758 CREATE OR REPLACE VIEW beziehungen_redundant_in_delete 759 AS 760 SELECT * 761 FROM alkis_beziehungen AS bezalt 762 WHERE EXISTS 763 (SELECT ogc_fid 764 FROM alkis_beziehungen AS bezneu 765 WHERE bezalt.beziehung_von = bezneu.beziehung_von 766 AND bezalt.beziehung_zu = bezneu.beziehung_zu 767 AND bezalt.beziehungsart = bezneu.beziehungsart 768 AND bezalt.ogc_fid < bezneu.ogc_fid 769 ) 770 -- mit dem Zusatz nur die Faelle aus dem letzten Durchlauf, 771 -- die aktuell noch in der Delet-Tabelle stehen 772 AND EXISTS 773 (SELECT ogc_fid 774 FROM delete 775 WHERE bezalt.beziehung_von = substr(featureid, 1, 16) 776 OR bezalt.beziehung_zu = substr(featureid, 1, 16) 777 ); 778 779 COMMENT ON VIEW beziehungen_redundant_in_delete IS 'alkis_beziehungen zu denen es eine identische neue Version gibt und wo das Objekt noch in der delete-Tabelle vorkommt.'; 780 742 781 -- END -- 743
Note: See TracChangeset
for help on using the changeset viewer.