- Timestamp:
- 02/03/14 18:41:17 (10 years ago)
- Location:
- trunk/import
- Files:
-
- 1 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/import/alkis-functions.sql
r299 r314 5 5 6 6 -- 2013-12-10: In der Function "update_fields_beziehungen" den Fall behandeln, dass ein Objekt einer 7 -- neuen Beziehung in keiner Tabelle gefunden wird. 8 -- Wenn ein einzelnes Objekt fehlt, soll dies keine Auswirkungen auf andere Objekte haben. 9 -- FÃŒllen von "zu_typename" auskommentiert. 7 -- neuen Beziehung in keiner Tabelle gefunden wird. 8 -- Wenn ein einzelnes Objekt fehlt, soll dies keine Auswirkungen auf andere Objekte haben. 9 -- FÃŒllen von "zu_typename" auskommentiert. 10 11 -- 2014-01-31: Deaktivieren von "update_fields_beziehungen", 12 -- statt dessen verwenden der "import_id" um alte Relationen zu identifizieren und zu löschen. 13 10 14 11 15 -- Table/View/Sequence löschen, wenn vorhanden … … 373 377 374 378 375 -- Löschsatz verarbeiten (OHNE Historie) 376 -- historische Objekte werden sofort gelöscht. 377 -- Siehe Mail W. Jacobs vom 23.03.2012 in PostNAS-Mailingliste 378 -- geaendert krz FJ 2012-10-31 379 -- geÀndertt krz FJ 2013-07-10 auf Vorschlag MB Krs. Unna 379 -- "delete" und "replace" verarbeiten (OHNE Historie). Historische Objekte werden sofort gelöscht. 380 -- Geaendert 2014-02-03 auf Vorschlag M.B. Krs. Unna 380 381 CREATE OR REPLACE FUNCTION delete_feature_kill() RETURNS TRIGGER AS $$ 381 382 DECLARE … … 384 385 aktbeg TEXT; 385 386 gml_id TEXT; 386 query_bez TEXT; -- 2013-07-10 Erweiterung387 query_bez TEXT; 387 388 BEGIN 388 389 NEW.typename := lower(NEW.typename); … … 394 395 END IF; 395 396 396 IF NEW.context='delete' THEN 397 -- ersatzloses Loeschen eines Objektes 398 399 query := 'DELETE FROM ' || NEW.typename 400 || ' WHERE gml_id = ''' || gml_id || ''''; 401 EXECUTE query; 402 403 query := 'DELETE FROM alkis_beziehungen WHERE beziehung_von = ''' || gml_id 404 || ''' OR beziehung_zu = ''' || gml_id || ''''; 405 EXECUTE query; 406 RAISE NOTICE 'Lösche gml_id % in % und Beziehungen', gml_id, NEW.typename; 407 408 ELSE 409 -- Ersetzen eines Objektes (Replace) 410 -- In der objekt-Tabelle sind bereits 2 Objekte vorhanden (alt und neu). 411 -- Die 2 DatensÀtze unterscheiden sich nur in ogc_fid und beginnt 412 397 IF NEW.context='delete' THEN -- Ersatzloses Loeschen des Objektes 398 -- In der Objekt-Tabelle 399 EXECUTE 'DELETE FROM ' || NEW.typename || ' WHERE gml_id = ''' || gml_id || ''''; 400 -- Beziehungen von und zu dem Objekt sind hinfaellig 401 EXECUTE 'DELETE FROM alkis_beziehungen WHERE beziehung_von = ''' || gml_id || ''' OR beziehung_zu = ''' || gml_id || ''''; 402 --RAISE NOTICE 'Lösche gml_id % in % und Beziehungen', gml_id, NEW.typename; 403 404 ELSE -- Ersetzen eines Objektes (Replace). In der Objekt-Tabelle sind jetzt bereits 2 Objekte vorhanden (alt und neu). 413 405 -- beginnt-Wert des aktuellen Objektes ermitteln 414 -- RAISE NOTICE 'Suche beginnt von neuem gml_id % ', substr(NEW.replacedBy, 1, 16);415 406 begsql := 'SELECT max(beginnt) FROM ' || NEW.typename || ' WHERE gml_id = ''' || substr(NEW.replacedBy, 1, 16) || ''' AND endet IS NULL'; 416 407 EXECUTE begsql INTO aktbeg; 417 418 -- Nur alte Objekte entfernen 419 query := 'DELETE FROM ' || NEW.typename 420 || ' WHERE gml_id = ''' || gml_id || ''' AND beginnt < ''' || aktbeg || ''''; 421 EXECUTE query; 422 423 -- Tabelle "alkis_beziehungen" 424 -- Löschen der Beziehungen des in einer anderen Tabelle ersetzten Objektes. 425 IF gml_id = substr(NEW.replacedBy, 1, 16) THEN -- gml_id gleich 426 -- Beziehungen des Objektes wurden redundant noch einmal eingetragen 427 -- ToDo: HIER sofort die Redundanzen zum aktuellen Objekt beseitigen. 428 -- Workaround: Nach der Konvertierung werden im Post-Processing 429 -- ALLE Redundanzen mit einem SQL-Statement beseitigt. 430 -- RAISE NOTICE 'Ersetze gleiche gml_id % in %', gml_id, NEW.typename; 431 432 -- ENTWURF FJ, noch ungetestet: 433 -- Bei Replace wird zur aktuellen gml_id nach redundanten SÀtzen in alkis_beziehungen gesucht. 434 -- Die Version mit dem kleineren serial-Feld wird gelöscht. 435 --query := 'DELETE FROM alkis_beziehungen AS bezalt 436 -- WHERE (bezalt.beziehung_von = ' || gml_id || ' OR bezalt.beziehung_zu = ' || gml_id ||') 437 -- AND EXISTS (SELECT ogc_fid FROM alkis_beziehungen AS bezneu 438 -- WHERE bezalt.beziehung_von = bezneu.beziehung_von 439 -- AND bezalt.beziehung_zu = bezneu.beziehung_zu 440 -- AND bezalt.beziehungsart = bezneu.beziehungsart 441 -- AND bezalt.ogc_fid < bezneu.ogc_fid);' 442 --EXECUTE query; 443 444 -- Funktioniert wahrscheinlich nicht wegen: 445 -- Der zu löschende Satz in "alkis_beziehungen" muss nicht komplett redandant sein (von+zu+art). 446 -- Es ist entweder ein Replace des von-objektes passiert oder ein Replace des zu-Objektes. 447 -- In beiden FÀllen kann auf der entgegen gesetzten Seite der Beziehung auch ein anderes Objekt sein. 448 -- Dummerweise sind die neuen Beziehungen mit der gleichen gml_id schon eingetragen worden. 449 450 -- 2013-07-10 Alternative Version von Marvon Brandt (Krs. Unna) 451 -- Diese Version setzt voraus, dass das Feld 'beginnt' beim EinfÃŒgen der Beziehung aus 452 -- dem Satz des von-Objektes kopiert wurde. 453 -- Dies geschieht in "update_fields_beziehungen" als Trigger beim EinfÃŒgen der alkis_beziehung. 454 -- alte Beziehungen löschen 455 query_bez := 'DELETE FROM alkis_beziehungen WHERE beziehung_von = ''' || gml_id 456 || ''' AND beginnt < ''' || aktbeg || ''''; 457 RAISE NOTICE 'Lösche in beziehungen alte gml_id % vor %', gml_id, aktbeg; 458 EXECUTE query_bez; 459 460 -- Was ist, wenn das in der delete-Tabelle ersetzte Objekt nur/auch auf der zu-Seite der Beziehung auftaucht. 461 -- Hier wird es nur auf der von-Seite gesucht. 462 463 -- 2013-07-10 Erweiterung Ende 464 465 ELSE 466 -- replace mit ungleicher gml_id 467 -- Falls dies vorkommt, die Function erweitern 468 RAISE EXCEPTION '%: neue gml_id % bei Replace in %. alkis_beziehungen muss aktualisiert werden!', gml_id, NEW.replacedBy, NEW.typename; 469 END IF; 408 -- Alte Objekte entfernen 409 EXECUTE 'DELETE FROM ' || NEW.typename || ' WHERE gml_id = ''' || gml_id || ''' AND beginnt < ''' || aktbeg || ''''; 410 -- Beziehungen vom alten Objekt entfernen, die aus frueheren Importen stammen 411 EXECUTE 'DELETE FROM alkis_beziehungen WHERE beziehung_von = ''' || gml_id || ''' AND import_id < (SELECT max(id) FROM import)'; 470 412 END IF; 471 413 … … 475 417 $$ LANGUAGE plpgsql; 476 418 419 477 420 -- BeziehungssÀtze aufrÀumen 478 421 CREATE OR REPLACE FUNCTION alkis_beziehung_inserted() RETURNS TRIGGER AS $$ … … 482 425 END; 483 426 $$ LANGUAGE plpgsql; 427 484 428 485 429 -- Wenn die Datenbank MIT Historie angelegt wurde, kann nach dem Laden hiermit aufgerÀumt werden. … … 502 446 503 447 504 -- 2013-07-10: Erweiterung zur Verarbeitung der Replace-SÀtze in ALKIS-Beziehungen 505 506 -- ZusÀtzliche Felder fÃŒr alkis_beziehungen auswerten. 507 -- In die Tabelle alkis_beziehungen wird zusÀtzlich zu den gml_ids der Objekte auf von- und zu-Seite 508 -- auch noch eingetragen, aus welcher Tabelle die gml_id stammt. Dies sollte langfristig direkt 509 -- vom PostNAS (ogr2ogr) gemacht werden so dass dieser Trigger als Provisorium anzusehen ist. 510 511 -- Eventuell kann auch die Sammlung der bekannten Tabellen-Namen als Kette von UNION-Zeilen ersetzt werden 512 -- durch eine smarte Function, die eine gefilterte Liste der vorhandenen Tabellen (-namen) durchsucht. 513 -- Somit wÃŒrden auch solche Tabellen einbezogen, die von PostNAS nachtrÀglich angelegt wurden. 514 515 -- Das Beginnt-Datum des Datensatzes auf der Seite "beziehung_von" wird zu der Beziehung kopiert (redundant). 516 CREATE OR REPLACE FUNCTION update_fields_beziehungen() RETURNS TRIGGER AS $$ 517 DECLARE 518 sql_vonTypename TEXT; 519 sql_zuTypename TEXT; 520 sql_beginnt TEXT; 521 BEGIN 522 -- Die folgende Liste von Tabellen-Namen kann reduziert werden, auf solche Tabellen, die auf 523 -- von-Seite von Beziehungen auftauchen können. 524 sql_vonTypename := 525 'SELECT ''ap_darstellung'' FROM ap_darstellung WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 526 SELECT ''ap_lpo'' FROM ap_lpo WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 527 SELECT ''ap_lto'' FROM ap_lto WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 528 SELECT ''ap_ppo'' FROM ap_ppo WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 529 SELECT ''ap_pto'' FROM ap_pto WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 530 SELECT ''ax_anderefestlegungnachwasserrecht'' FROM ax_anderefestlegungnachwasserrecht WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 531 SELECT ''ax_anschrift'' FROM ax_anschrift WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 532 SELECT ''ax_aufnahmepunkt'' FROM ax_aufnahmepunkt WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 533 SELECT ''ax_bahnverkehr'' FROM ax_bahnverkehr WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 534 SELECT ''ax_bahnverkehrsanlage'' FROM ax_bahnverkehrsanlage WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 535 SELECT ''ax_baublock'' FROM ax_baublock WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 536 SELECT ''ax_bauraumoderbodenordnungsrecht'' FROM ax_bauraumoderbodenordnungsrecht WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 537 SELECT ''ax_bauteil'' FROM ax_bauteil WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 538 SELECT ''ax_bauwerkimgewaesserbereich'' FROM ax_bauwerkimgewaesserbereich WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 539 SELECT ''ax_bauwerkimverkehrsbereich'' FROM ax_bauwerkimverkehrsbereich WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 540 SELECT ''ax_bauwerkoderanlagefuerindustrieundgewerbe'' FROM ax_bauwerkoderanlagefuerindustrieundgewerbe WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 541 SELECT ''ax_bauwerkoderanlagefuersportfreizeitunderholung'' FROM ax_bauwerkoderanlagefuersportfreizeitunderholung WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 542 SELECT ''ax_bergbaubetrieb'' FROM ax_bergbaubetrieb WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 543 SELECT ''ax_besondereflurstuecksgrenze'' FROM ax_besondereflurstuecksgrenze WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 544 SELECT ''ax_besonderegebaeudelinie'' FROM ax_besonderegebaeudelinie WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 545 SELECT ''ax_besondererbauwerkspunkt'' FROM ax_besondererbauwerkspunkt WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 546 SELECT ''ax_besonderergebaeudepunkt'' FROM ax_besonderergebaeudepunkt WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 547 SELECT ''ax_besondererhoehenpunkt'' FROM ax_besondererhoehenpunkt WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 548 SELECT ''ax_besonderertopographischerpunkt'' FROM ax_besonderertopographischerpunkt WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 549 SELECT ''ax_bewertung'' FROM ax_bewertung WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 550 SELECT ''ax_bodenschaetzung'' FROM ax_bodenschaetzung WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 551 SELECT ''ax_boeschungkliff'' FROM ax_boeschungkliff WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 552 SELECT ''ax_boeschungsflaeche'' FROM ax_boeschungsflaeche WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 553 SELECT ''ax_buchungsblatt'' FROM ax_buchungsblatt WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 554 SELECT ''ax_buchungsblattbezirk'' FROM ax_buchungsblattbezirk WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 555 SELECT ''ax_buchungsstelle'' FROM ax_buchungsstelle WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 556 SELECT ''ax_bundesland'' FROM ax_bundesland WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 557 SELECT ''ax_dammwalldeich'' FROM ax_dammwalldeich WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 558 SELECT ''ax_denkmalschutzrecht'' FROM ax_denkmalschutzrecht WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 559 SELECT ''ax_dienststelle'' FROM ax_dienststelle WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 560 SELECT ''ax_duene'' FROM ax_duene WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 561 SELECT ''ax_einrichtungenfuerdenschiffsverkehr'' FROM ax_einrichtungenfuerdenschiffsverkehr WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 562 SELECT ''ax_einrichtunginoeffentlichenbereichen'' FROM ax_einrichtunginoeffentlichenbereichen WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 563 SELECT ''ax_felsenfelsblockfelsnadel'' FROM ax_felsenfelsblockfelsnadel WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 564 SELECT ''ax_firstlinie'' FROM ax_firstlinie WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 565 SELECT ''ax_flaechebesondererfunktionalerpraegung'' FROM ax_flaechebesondererfunktionalerpraegung WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 566 SELECT ''ax_flaechegemischternutzung'' FROM ax_flaechegemischternutzung WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 567 SELECT ''ax_fliessgewaesser'' FROM ax_fliessgewaesser WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 568 SELECT ''ax_flugverkehr'' FROM ax_flugverkehr WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 569 SELECT ''ax_flugverkehrsanlage'' FROM ax_flugverkehrsanlage WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 570 SELECT ''ax_flurstueck'' FROM ax_flurstueck WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 571 SELECT ''ax_forstrecht'' FROM ax_forstrecht WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 572 SELECT ''ax_fortfuehrungsfall'' FROM ax_fortfuehrungsfall WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 573 SELECT ''ax_fortfuehrungsnachweisdeckblatt'' FROM ax_fortfuehrungsnachweisdeckblatt WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 574 SELECT ''ax_friedhof'' FROM ax_friedhof WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 575 SELECT ''ax_gebaeude'' FROM ax_gebaeude WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 576 SELECT ''ax_gebaeudeausgestaltung'' FROM ax_gebaeudeausgestaltung WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 577 SELECT ''ax_gehoelz'' FROM ax_gehoelz WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 578 SELECT ''ax_gelaendekante'' FROM ax_gelaendekante WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 579 SELECT ''ax_gemarkung'' FROM ax_gemarkung WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 580 SELECT ''ax_gemarkungsteilflur'' FROM ax_gemarkungsteilflur WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 581 SELECT ''ax_gemeinde'' FROM ax_gemeinde WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 582 SELECT ''ax_gemeindeteil'' FROM ax_gemeindeteil WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 583 SELECT ''ax_georeferenziertegebaeudeadresse'' FROM ax_georeferenziertegebaeudeadresse WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 584 SELECT ''ax_gewaessermerkmal'' FROM ax_gewaessermerkmal WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 585 SELECT ''ax_gleis'' FROM ax_gleis WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 586 SELECT ''ax_grablochderbodenschaetzung'' FROM ax_grablochderbodenschaetzung WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 587 SELECT ''ax_grenzpunkt'' FROM ax_grenzpunkt WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 588 SELECT ''ax_hafenbecken'' FROM ax_hafenbecken WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 589 SELECT ''ax_halde'' FROM ax_halde WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 590 SELECT ''ax_heide'' FROM ax_heide WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 591 SELECT ''ax_heilquellegasquelle'' FROM ax_heilquellegasquelle WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 592 SELECT ''ax_historischesbauwerkoderhistorischeeinrichtung'' FROM ax_historischesbauwerkoderhistorischeeinrichtung WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 593 SELECT ''ax_historischesflurstueck'' FROM ax_historischesflurstueck WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 594 SELECT ''ax_historischesflurstueckalb'' FROM ax_historischesflurstueckalb WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 595 SELECT ''ax_historischesflurstueckohneraumbezug'' FROM ax_historischesflurstueckohneraumbezug WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 596 SELECT ''ax_hoehenlinie'' FROM ax_hoehenlinie WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 597 SELECT ''ax_hoehleneingang'' FROM ax_hoehleneingang WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 598 SELECT ''ax_industrieundgewerbeflaeche'' FROM ax_industrieundgewerbeflaeche WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 599 SELECT ''ax_klassifizierungnachstrassenrecht'' FROM ax_klassifizierungnachstrassenrecht WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 600 SELECT ''ax_klassifizierungnachwasserrecht'' FROM ax_klassifizierungnachwasserrecht WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 601 SELECT ''ax_kleinraeumigerlandschaftsteil'' FROM ax_kleinraeumigerlandschaftsteil WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 602 SELECT ''ax_kommunalesgebiet'' FROM ax_kommunalesgebiet WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 603 SELECT ''ax_kreisregion'' FROM ax_kreisregion WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 604 SELECT ''ax_lagebezeichnungkatalogeintrag'' FROM ax_lagebezeichnungkatalogeintrag WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 605 SELECT ''ax_lagebezeichnungmithausnummer'' FROM ax_lagebezeichnungmithausnummer WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 606 SELECT ''ax_lagebezeichnungmitpseudonummer'' FROM ax_lagebezeichnungmitpseudonummer WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 607 SELECT ''ax_lagebezeichnungohnehausnummer'' FROM ax_lagebezeichnungohnehausnummer WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 608 SELECT ''ax_landwirtschaft'' FROM ax_landwirtschaft WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 609 SELECT ''ax_leitung'' FROM ax_leitung WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 610 SELECT ''ax_meer'' FROM ax_meer WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 611 SELECT ''ax_moor'' FROM ax_moor WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 612 SELECT ''ax_musterlandesmusterundvergleichsstueck'' FROM ax_musterlandesmusterundvergleichsstueck WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 613 SELECT ''ax_namensnummer'' FROM ax_namensnummer WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 614 SELECT ''ax_naturumweltoderbodenschutzrecht'' FROM ax_naturumweltoderbodenschutzrecht WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 615 SELECT ''ax_person'' FROM ax_person WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 616 SELECT ''ax_platz'' FROM ax_platz WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 617 SELECT ''ax_punktkennunguntergegangen'' FROM ax_punktkennunguntergegangen WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 618 SELECT ''ax_punktortag'' FROM ax_punktortag WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 619 SELECT ''ax_punktortau'' FROM ax_punktortau WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 620 SELECT ''ax_punktortta'' FROM ax_punktortta WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 621 SELECT ''ax_regierungsbezirk'' FROM ax_regierungsbezirk WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 622 SELECT ''ax_reservierung'' FROM ax_reservierung WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 623 SELECT ''ax_schifffahrtsliniefaehrverkehr'' FROM ax_schifffahrtsliniefaehrverkehr WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 624 SELECT ''ax_schiffsverkehr'' FROM ax_schiffsverkehr WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 625 SELECT ''ax_schutzgebietnachnaturumweltoderbodenschutzrecht'' FROM ax_schutzgebietnachnaturumweltoderbodenschutzrecht WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 626 SELECT ''ax_schutzgebietnachwasserrecht'' FROM ax_schutzgebietnachwasserrecht WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 627 SELECT ''ax_schutzzone'' FROM ax_schutzzone WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 628 SELECT ''ax_seilbahnschwebebahn'' FROM ax_seilbahnschwebebahn WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 629 SELECT ''ax_sicherungspunkt'' FROM ax_sicherungspunkt WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 630 SELECT ''ax_soll'' FROM ax_soll WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 631 SELECT ''ax_sonstigervermessungspunkt'' FROM ax_sonstigervermessungspunkt WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 632 SELECT ''ax_sonstigesbauwerkodersonstigeeinrichtung'' FROM ax_sonstigesbauwerkodersonstigeeinrichtung WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 633 SELECT ''ax_sonstigesrecht'' FROM ax_sonstigesrecht WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 634 SELECT ''ax_sportfreizeitunderholungsflaeche'' FROM ax_sportfreizeitunderholungsflaeche WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 635 SELECT ''ax_stehendesgewaesser'' FROM ax_stehendesgewaesser WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 636 SELECT ''ax_strassenverkehr'' FROM ax_strassenverkehr WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 637 SELECT ''ax_strassenverkehrsanlage'' FROM ax_strassenverkehrsanlage WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 638 SELECT ''ax_sumpf'' FROM ax_sumpf WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 639 SELECT ''ax_tagebaugrubesteinbruch'' FROM ax_tagebaugrubesteinbruch WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 640 SELECT ''ax_tagesabschnitt'' FROM ax_tagesabschnitt WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 641 SELECT ''ax_topographischelinie'' FROM ax_topographischelinie WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 642 SELECT ''ax_transportanlage'' FROM ax_transportanlage WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 643 SELECT ''ax_turm'' FROM ax_turm WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 644 SELECT ''ax_unlandvegetationsloseflaeche'' FROM ax_unlandvegetationsloseflaeche WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 645 SELECT ''ax_untergeordnetesgewaesser'' FROM ax_untergeordnetesgewaesser WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 646 SELECT ''ax_vegetationsmerkmal'' FROM ax_vegetationsmerkmal WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 647 SELECT ''ax_vertretung'' FROM ax_vertretung WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 648 SELECT ''ax_verwaltung'' FROM ax_verwaltung WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 649 SELECT ''ax_verwaltungsgemeinschaft'' FROM ax_verwaltungsgemeinschaft WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 650 SELECT ''ax_vorratsbehaelterspeicherbauwerk'' FROM ax_vorratsbehaelterspeicherbauwerk WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 651 SELECT ''ax_wald'' FROM ax_wald WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 652 SELECT ''ax_wasserspiegelhoehe'' FROM ax_wasserspiegelhoehe WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 653 SELECT ''ax_weg'' FROM ax_weg WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 654 SELECT ''ax_wegpfadsteig'' FROM ax_wegpfadsteig WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 655 SELECT ''ax_wohnbauflaeche'' FROM ax_wohnbauflaeche WHERE gml_id = ''' || NEW.beziehung_von || ''' UNION 656 SELECT ''ax_wohnplatz'' FROM ax_wohnplatz WHERE gml_id = ''' || NEW.beziehung_von || ''''; 657 EXECUTE sql_vonTypename INTO NEW.von_typename; 658 659 -- 2013-12-10: Den Fall behandeln, dass das Objekt in keiner Tabelle gefunden wird. 660 -- NULL-Wert fÃŒhrt zu Abbruch des 2. Execute. Dies fÃŒhrt in einer Kettenreaktion dazu, 661 -- dass auch weitere Objekte nicht eingefÃŒgt werden können. 662 IF NEW.von_typename IS NULL THEN 663 RAISE NOTICE 'Neue gml_id fuer "beziehung_von" in "alkis_beziehungen" ist keiner Tabelle zuzuordnen. "beziehung_von" und "beginnt" bleiben leer. gml_id: %', NEW.beziehung_von; 664 ELSE 665 -- Der von_typename (= Tabellen-Name) muss zuvor ermittelt worden sein. Dort wird nach der gml_id gesucht. 666 sql_beginnt := 'SELECT max(beginnt) FROM ' || NEW.von_typename || ' WHERE gml_id = ''' || NEW.beziehung_von ||''''; 667 EXECUTE sql_beginnt INTO NEW.beginnt; 668 -- Was passiert bei Replace eines Objektes, das nur auf der zu-Seite einer Beziehung auftaucht. 669 END IF; 670 671 -- Die folgende Liste von Tabellen-Namen kann reduziert werden, auf solche Tabellen, die auf 672 -- zu-Seite von Beziehungen auftauchen können. 673 -- Diese Spalte erleichtert die Analyse, wird aber nicht fÃŒr die aktuelle Version des Triggers nicht verwendet. 674 -- Diese Anweisung liefert nur teilweise ein Ergebnis. 675 676 -- -- 2013-12-10 Wird nicht benötigt und ist auch nur teilweise erfolgreich. 677 -- -- Dann den Aufwand sparen. Auskommentiert. 678 -- sql_zuTypename := 679 -- 'SELECT ''ap_darstellung'' FROM ap_darstellung WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 680 -- SELECT ''ap_lpo'' FROM ap_lpo WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 681 -- SELECT ''ap_lto'' FROM ap_lto WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 682 -- SELECT ''ap_ppo'' FROM ap_ppo WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 683 -- SELECT ''ap_pto'' FROM ap_pto WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 684 -- SELECT ''ax_anderefestlegungnachwasserrecht'' FROM ax_anderefestlegungnachwasserrecht WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 685 -- SELECT ''ax_anschrift'' FROM ax_anschrift WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 686 -- SELECT ''ax_aufnahmepunkt'' FROM ax_aufnahmepunkt WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 687 -- SELECT ''ax_bahnverkehr'' FROM ax_bahnverkehr WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 688 -- SELECT ''ax_bahnverkehrsanlage'' FROM ax_bahnverkehrsanlage WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 689 -- SELECT ''ax_baublock'' FROM ax_baublock WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 690 -- SELECT ''ax_bauraumoderbodenordnungsrecht'' FROM ax_bauraumoderbodenordnungsrecht WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 691 -- SELECT ''ax_bauteil'' FROM ax_bauteil WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 692 -- SELECT ''ax_bauwerkimgewaesserbereich'' FROM ax_bauwerkimgewaesserbereich WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 693 -- SELECT ''ax_bauwerkimverkehrsbereich'' FROM ax_bauwerkimverkehrsbereich WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 694 -- SELECT ''ax_bauwerkoderanlagefuerindustrieundgewerbe'' FROM ax_bauwerkoderanlagefuerindustrieundgewerbe WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 695 -- SELECT ''ax_bauwerkoderanlagefuersportfreizeitunderholung'' FROM ax_bauwerkoderanlagefuersportfreizeitunderholung WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 696 -- SELECT ''ax_bergbaubetrieb'' FROM ax_bergbaubetrieb WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 697 -- SELECT ''ax_besondereflurstuecksgrenze'' FROM ax_besondereflurstuecksgrenze WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 698 -- SELECT ''ax_besonderegebaeudelinie'' FROM ax_besonderegebaeudelinie WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 699 -- SELECT ''ax_besondererbauwerkspunkt'' FROM ax_besondererbauwerkspunkt WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 700 -- SELECT ''ax_besonderergebaeudepunkt'' FROM ax_besonderergebaeudepunkt WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 701 -- SELECT ''ax_besondererhoehenpunkt'' FROM ax_besondererhoehenpunkt WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 702 -- SELECT ''ax_besonderertopographischerpunkt'' FROM ax_besonderertopographischerpunkt WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 703 -- SELECT ''ax_bewertung'' FROM ax_bewertung WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 704 -- SELECT ''ax_bodenschaetzung'' FROM ax_bodenschaetzung WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 705 -- SELECT ''ax_boeschungkliff'' FROM ax_boeschungkliff WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 706 -- SELECT ''ax_boeschungsflaeche'' FROM ax_boeschungsflaeche WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 707 -- SELECT ''ax_buchungsblatt'' FROM ax_buchungsblatt WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 708 -- SELECT ''ax_buchungsblattbezirk'' FROM ax_buchungsblattbezirk WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 709 -- SELECT ''ax_buchungsstelle'' FROM ax_buchungsstelle WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 710 -- SELECT ''ax_bundesland'' FROM ax_bundesland WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 711 -- SELECT ''ax_dammwalldeich'' FROM ax_dammwalldeich WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 712 -- SELECT ''ax_denkmalschutzrecht'' FROM ax_denkmalschutzrecht WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 713 -- SELECT ''ax_dienststelle'' FROM ax_dienststelle WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 714 -- SELECT ''ax_duene'' FROM ax_duene WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 715 -- SELECT ''ax_einrichtungenfuerdenschiffsverkehr'' FROM ax_einrichtungenfuerdenschiffsverkehr WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 716 -- SELECT ''ax_einrichtunginoeffentlichenbereichen'' FROM ax_einrichtunginoeffentlichenbereichen WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 717 -- SELECT ''ax_felsenfelsblockfelsnadel'' FROM ax_felsenfelsblockfelsnadel WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 718 -- SELECT ''ax_firstlinie'' FROM ax_firstlinie WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 719 -- SELECT ''ax_flaechebesondererfunktionalerpraegung'' FROM ax_flaechebesondererfunktionalerpraegung WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 720 -- SELECT ''ax_flaechegemischternutzung'' FROM ax_flaechegemischternutzung WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 721 -- SELECT ''ax_fliessgewaesser'' FROM ax_fliessgewaesser WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 722 -- SELECT ''ax_flugverkehr'' FROM ax_flugverkehr WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 723 -- SELECT ''ax_flugverkehrsanlage'' FROM ax_flugverkehrsanlage WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 724 -- SELECT ''ax_flurstueck'' FROM ax_flurstueck WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 725 -- SELECT ''ax_forstrecht'' FROM ax_forstrecht WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 726 -- SELECT ''ax_fortfuehrungsfall'' FROM ax_fortfuehrungsfall WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 727 -- SELECT ''ax_fortfuehrungsnachweisdeckblatt'' FROM ax_fortfuehrungsnachweisdeckblatt WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 728 -- SELECT ''ax_friedhof'' FROM ax_friedhof WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 729 -- SELECT ''ax_gebaeude'' FROM ax_gebaeude WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 730 -- SELECT ''ax_gebaeudeausgestaltung'' FROM ax_gebaeudeausgestaltung WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 731 -- SELECT ''ax_gehoelz'' FROM ax_gehoelz WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 732 -- SELECT ''ax_gelaendekante'' FROM ax_gelaendekante WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 733 -- SELECT ''ax_gemarkung'' FROM ax_gemarkung WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 734 -- SELECT ''ax_gemarkungsteilflur'' FROM ax_gemarkungsteilflur WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 735 -- SELECT ''ax_gemeinde'' FROM ax_gemeinde WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 736 -- SELECT ''ax_gemeindeteil'' FROM ax_gemeindeteil WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 737 -- SELECT ''ax_georeferenziertegebaeudeadresse'' FROM ax_georeferenziertegebaeudeadresse WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 738 -- SELECT ''ax_gewaessermerkmal'' FROM ax_gewaessermerkmal WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 739 -- SELECT ''ax_gleis'' FROM ax_gleis WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 740 -- SELECT ''ax_grablochderbodenschaetzung'' FROM ax_grablochderbodenschaetzung WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 741 -- SELECT ''ax_grenzpunkt'' FROM ax_grenzpunkt WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 742 -- SELECT ''ax_hafenbecken'' FROM ax_hafenbecken WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 743 -- SELECT ''ax_halde'' FROM ax_halde WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 744 -- SELECT ''ax_heide'' FROM ax_heide WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 745 -- SELECT ''ax_heilquellegasquelle'' FROM ax_heilquellegasquelle WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 746 -- SELECT ''ax_historischesbauwerkoderhistorischeeinrichtung'' FROM ax_historischesbauwerkoderhistorischeeinrichtung WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 747 -- SELECT ''ax_historischesflurstueck'' FROM ax_historischesflurstueck WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 748 -- SELECT ''ax_historischesflurstueckalb'' FROM ax_historischesflurstueckalb WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 749 -- SELECT ''ax_historischesflurstueckohneraumbezug'' FROM ax_historischesflurstueckohneraumbezug WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 750 -- SELECT ''ax_hoehenlinie'' FROM ax_hoehenlinie WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 751 -- SELECT ''ax_hoehleneingang'' FROM ax_hoehleneingang WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 752 -- SELECT ''ax_industrieundgewerbeflaeche'' FROM ax_industrieundgewerbeflaeche WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 753 -- SELECT ''ax_klassifizierungnachstrassenrecht'' FROM ax_klassifizierungnachstrassenrecht WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 754 -- SELECT ''ax_klassifizierungnachwasserrecht'' FROM ax_klassifizierungnachwasserrecht WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 755 -- SELECT ''ax_kleinraeumigerlandschaftsteil'' FROM ax_kleinraeumigerlandschaftsteil WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 756 -- SELECT ''ax_kommunalesgebiet'' FROM ax_kommunalesgebiet WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 757 -- SELECT ''ax_kreisregion'' FROM ax_kreisregion WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 758 -- SELECT ''ax_lagebezeichnungkatalogeintrag'' FROM ax_lagebezeichnungkatalogeintrag WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 759 -- SELECT ''ax_lagebezeichnungmithausnummer'' FROM ax_lagebezeichnungmithausnummer WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 760 -- SELECT ''ax_lagebezeichnungmitpseudonummer'' FROM ax_lagebezeichnungmitpseudonummer WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 761 -- SELECT ''ax_lagebezeichnungohnehausnummer'' FROM ax_lagebezeichnungohnehausnummer WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 762 -- SELECT ''ax_landwirtschaft'' FROM ax_landwirtschaft WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 763 -- SELECT ''ax_leitung'' FROM ax_leitung WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 764 -- SELECT ''ax_meer'' FROM ax_meer WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 765 -- SELECT ''ax_moor'' FROM ax_moor WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 766 -- SELECT ''ax_musterlandesmusterundvergleichsstueck'' FROM ax_musterlandesmusterundvergleichsstueck WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 767 -- SELECT ''ax_namensnummer'' FROM ax_namensnummer WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 768 -- SELECT ''ax_naturumweltoderbodenschutzrecht'' FROM ax_naturumweltoderbodenschutzrecht WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 769 -- SELECT ''ax_person'' FROM ax_person WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 770 -- SELECT ''ax_platz'' FROM ax_platz WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 771 -- SELECT ''ax_punktkennunguntergegangen'' FROM ax_punktkennunguntergegangen WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 772 -- SELECT ''ax_punktortag'' FROM ax_punktortag WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 773 -- SELECT ''ax_punktortau'' FROM ax_punktortau WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 774 -- SELECT ''ax_punktortta'' FROM ax_punktortta WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 775 -- SELECT ''ax_regierungsbezirk'' FROM ax_regierungsbezirk WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 776 -- SELECT ''ax_reservierung'' FROM ax_reservierung WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 777 -- SELECT ''ax_schifffahrtsliniefaehrverkehr'' FROM ax_schifffahrtsliniefaehrverkehr WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 778 -- SELECT ''ax_schiffsverkehr'' FROM ax_schiffsverkehr WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 779 -- SELECT ''ax_schutzgebietnachnaturumweltoderbodenschutzrecht'' FROM ax_schutzgebietnachnaturumweltoderbodenschutzrecht WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 780 -- SELECT ''ax_schutzgebietnachwasserrecht'' FROM ax_schutzgebietnachwasserrecht WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 781 -- SELECT ''ax_schutzzone'' FROM ax_schutzzone WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 782 -- SELECT ''ax_seilbahnschwebebahn'' FROM ax_seilbahnschwebebahn WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 783 -- SELECT ''ax_sicherungspunkt'' FROM ax_sicherungspunkt WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 784 -- SELECT ''ax_soll'' FROM ax_soll WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 785 -- SELECT ''ax_sonstigervermessungspunkt'' FROM ax_sonstigervermessungspunkt WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 786 -- SELECT ''ax_sonstigesbauwerkodersonstigeeinrichtung'' FROM ax_sonstigesbauwerkodersonstigeeinrichtung WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 787 -- SELECT ''ax_sonstigesrecht'' FROM ax_sonstigesrecht WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 788 -- SELECT ''ax_sportfreizeitunderholungsflaeche'' FROM ax_sportfreizeitunderholungsflaeche WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 789 -- SELECT ''ax_stehendesgewaesser'' FROM ax_stehendesgewaesser WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 790 -- SELECT ''ax_strassenverkehr'' FROM ax_strassenverkehr WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 791 -- SELECT ''ax_strassenverkehrsanlage'' FROM ax_strassenverkehrsanlage WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 792 -- SELECT ''ax_sumpf'' FROM ax_sumpf WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 793 -- SELECT ''ax_tagebaugrubesteinbruch'' FROM ax_tagebaugrubesteinbruch WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 794 -- SELECT ''ax_tagesabschnitt'' FROM ax_tagesabschnitt WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 795 -- SELECT ''ax_topographischelinie'' FROM ax_topographischelinie WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 796 -- SELECT ''ax_transportanlage'' FROM ax_transportanlage WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 797 -- SELECT ''ax_turm'' FROM ax_turm WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 798 -- SELECT ''ax_unlandvegetationsloseflaeche'' FROM ax_unlandvegetationsloseflaeche WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 799 -- SELECT ''ax_untergeordnetesgewaesser'' FROM ax_untergeordnetesgewaesser WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 800 -- SELECT ''ax_vegetationsmerkmal'' FROM ax_vegetationsmerkmal WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 801 -- SELECT ''ax_vertretung'' FROM ax_vertretung WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 802 -- SELECT ''ax_verwaltung'' FROM ax_verwaltung WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 803 -- SELECT ''ax_verwaltungsgemeinschaft'' FROM ax_verwaltungsgemeinschaft WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 804 -- SELECT ''ax_vorratsbehaelterspeicherbauwerk'' FROM ax_vorratsbehaelterspeicherbauwerk WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 805 -- SELECT ''ax_wald'' FROM ax_wald WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 806 -- SELECT ''ax_wasserspiegelhoehe'' FROM ax_wasserspiegelhoehe WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 807 -- SELECT ''ax_weg'' FROM ax_weg WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 808 -- SELECT ''ax_wegpfadsteig'' FROM ax_wegpfadsteig WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 809 -- SELECT ''ax_wohnbauflaeche'' FROM ax_wohnbauflaeche WHERE gml_id = ''' || NEW.beziehung_zu || ''' UNION 810 -- SELECT ''ax_wohnplatz'' FROM ax_wohnplatz WHERE gml_id = ''' || NEW.beziehung_zu || ''''; 811 -- EXECUTE sql_zuTypename INTO NEW.zu_typename; 812 -- -- 2013-12-10 Ende 813 448 -- Wenn die Datenbank ohne Historie gefÃŒhrt wird, ist das Feld "identifier" verzichtbar. 449 -- Diese wird nur von der Trigger-Version fÃŒr die Version MIT Historie verwendet. 450 -- Es kann aus allen Tabellen entfernt werden. 451 CREATE OR REPLACE FUNCTION alkis_drop_all_identifier() RETURNS void AS $$ 452 DECLARE 453 c RECORD; 454 BEGIN 455 FOR c IN 456 SELECT table_name 457 FROM information_schema.columns a 458 WHERE a.column_name='identifier' 459 ORDER BY table_name 460 LOOP 461 EXECUTE 'ALTER TABLE ' || c.table_name || ' DROP COLUMN identifier'; 462 RAISE NOTICE 'Entferne ''identifier'' aus: %', c.table_name; 463 END LOOP; 464 END; 465 $$ LANGUAGE plpgsql; 466 467 468 -- Funktion zum Ermitteln der letzten import_id 469 CREATE OR REPLACE FUNCTION get_import_id() RETURNS TRIGGER AS $$ 470 BEGIN 471 EXECUTE 'SELECT max(id) FROM import' INTO NEW.import_id; 814 472 RETURN NEW; 815 473 END; -
trunk/import/alkis-trigger-kill.sql
r215 r314 1 2 -- Trigger fuer Fortfuehrung der PostNAS-Datenbank, wenn KEINE Historie gefuehrt werden soll. 3 -- Version 2014-01-31 4 1 5 CREATE TRIGGER delete_feature_trigger 2 6 BEFORE INSERT ON delete 3 7 FOR EACH ROW 4 8 EXECUTE PROCEDURE delete_feature_kill(); 9 10 -- 2013-07-10: Erweiterung zur Behandlung der Replace-Saetze in den Beziehungen 11 -- 2014-01-31: entfaellt, wird ersetzt durch "update_import_id" 12 --CREATE TRIGGER update_fields 13 -- BEFORE INSERT ON alkis_beziehungen 14 -- FOR EACH ROW 15 -- EXECUTE PROCEDURE update_fields_beziehungen(); 16 17 -- 2014-01-31: Den Relationen in "alkis_beziehungen" die laufende Nummer des Konverter-Laufes zuzuordnen. 18 -- Dies ermoeglicht bei Aenderungen das saubere Loeschen alter Relationen im Trigger. 19 CREATE TRIGGER update_import_id 20 BEFORE INSERT ON alkis_beziehungen 21 FOR EACH ROW 22 EXECUTE PROCEDURE get_import_id(); -
trunk/import/alkis_PostNAS_schema.sql
r312 r314 17 17 -- Stand 18 18 -- ----- 19 20 -- letzte Ãnderungen an Version 0.6:21 22 -- 2011-11-02 FJ: Neue Tabellen23 -- 2011-11-04 FJ: Anpassungen fuer Buchauskunft "Historie"24 -- 2011-11-21 FJ: siehe Version 0.625 -- 2011-12-16 FJ: Neue Tabelle "ax_sicherungspunkt"26 -- 2012-01-16 FJ: Spalte "ap_pto.art" wird doch gebraucht.27 28 -- ** Neuer Zweig PostNAS 0.7 (gdal > 1.9) **29 30 -- 2012-02-28 FJ: ZusammenfÃŒhren von Ãnderungen aus SVN (AE: Anfang Februar) mit eigener Version31 -- Auskommentierte Zeilen "identifier" entfernt.32 -- Feld "gemeindezugehoerigkeit" auskommentiert.33 -- Bereinigung Kommentare.34 19 35 20 -- 2012-04-23 FJ Diff zum GDAL-Patch #4555 angewendet: … … 68 53 69 54 -- 2014-01-24 FJ Feld "ax_datenerhebung_punktort" in "Punktort/TA/AG/AU" nach Vorschlag Marvin Brandt (Kreis Unna) 55 70 56 -- 2014-01-29 FJ Spalte "zeitpunktderentstehung" an allen Vorkommen auf Format "varchar". 71 57 -- Alte auskommentierte Varianten entrÃŒmpelt. 72 58 -- Tabs durch Space ersetzt und Code wieder hÃŒbsch ausgerichtet. 73 59 60 -- 2014-01-31 FJ Erweiterungen Marvin Brand (Unna) fuer sauberes Entfernen alter Beziehungen bei "replace". 61 -- Lösung ÃŒber import_id. 62 74 63 75 64 -- VERSIONS-NUMMER: 76 65 77 66 -- Dies Schema kann NICHT mehr mit der installierbaren gdal-Version 1.9 verwendet werden. 78 -- Derzeit muss ogr2ogr (gdal) aus den Quellen compiliert werden, die o.g. Patch enthalten.67 -- Derzeit muss ogr2ogr (gdal) aus den Quellen compiliert werden, die o.g. Patch #4555 enthalten. 79 68 -- WeiterfÃŒhrung dieses Zweiges als PostNAS 0.7 80 69 81 82 -- Zur Datenstruktur siehe Dokument: 83 -- http://www.bezreg-koeln.nrw.de/extra/33alkis/dokumente/Profile_NRW/5-1-1_ALKIS-OK-NRW_GDB.html 84 -- http://www.bezreg-koeln.nrw.de/extra/33alkis/dokumente/ALKIS_NRW/Pflichtenheft/Anlage03/Anlage3_ALKIS-OK-NRW_MAX.html 85 86 -- Ãbersicht "Landesspezifische Festlegungen zu ALKIS in NRW": 87 -- http://www.bezreg-koeln.nrw.de/extra/33alkis/alkis_nrw.htm 70 -- ALKIS-Dokumentation (NRW): 71 -- http://www.bezreg-koeln.nrw.de/extra/33alkis/alkis_nrw.htm 72 -- http://www.bezreg-koeln.nrw.de/extra/33alkis/geoinfodok.htm 73 -- http://www.bezreg-koeln.nrw.de/extra/33alkis/dokumente/GeoInfoDok/ALKIS/ALKIS_OK_V6-0.html 88 74 89 75 SET client_encoding = 'UTF8'; … … 108 94 --SELECT alkis_drop(); 109 95 96 97 -- Importtabelle fÃŒr Verarbeitungen 98 CREATE TABLE import ( 99 id serial NOT NULL, 100 datum timestamp without time zone, 101 verzeichnis text, 102 importart text, 103 CONSTRAINT import_pk PRIMARY KEY (id) 104 ); 105 106 CREATE UNIQUE INDEX import_id ON import USING btree (id); 107 108 COMMENT ON TABLE import IS 'Verwaltung der Import-ProgrammlÀufe. Wird nicht vom Konverter gefÃŒllt sondern aus der Start-Prozedur (z.B. konv_batch.sh).'; 109 COMMENT ON COLUMN import.id IS 'Laufende Nummer der Konverter-Datei-Verarbeitung. Der Max-Wert von "id" wird als "alkis_beziehungen.import_id" verwendet, um ein vollstÀndiges Löschen alter Beziehungen zu ermöglichen.'; 110 COMMENT ON COLUMN import.datum IS 'Zeitpunkt des Beginns des Konverter-Laufes fÃŒr einen Stapel von NAS-Dateien.'; 111 COMMENT ON COLUMN import.verzeichnis IS 'Ort von dem die NAS-Dateien verarbeitet wurden.'; 112 COMMENT ON COLUMN import.importart IS 'Modus des Konverter-Laufes: e="Erstladen" oder a="NBA-Aktualisierung"'; 113 110 114 -- Tabelle delete fÃŒr Lösch- und FortfÃŒhrungsdatensÀtze 111 CREATE TABLE "delete" 112 ( 115 CREATE TABLE "delete" ( 113 116 ogc_fid serial NOT NULL, 114 117 typename varchar, … … 127 130 CREATE UNIQUE INDEX delete_fid ON "delete"(featureid); 128 131 129 130 132 COMMENT ON TABLE "delete" IS 'Hilfstabelle fÃŒr das Speichern von Löschinformationen.'; 131 133 COMMENT ON COLUMN delete.typename IS 'Objektart, also Name der Tabelle, aus der das Objekt zu löschen ist.'; … … 148 150 -- ZusÀtzlich enthÀlt 'beziehungsart' noch ein Verb fÃŒr die Art der Beziehung. 149 151 150 -- 2013-07-10 Erweiterung nach Vorschlag Marvin Brandt (Kreis Unna)151 -- Durch Typenamen bessere Zuordnung der verlinkten Tabellen möglich.152 152 CREATE TABLE alkis_beziehungen ( 153 153 ogc_fid serial NOT NULL, 154 154 beziehung_von character(16), --> gml_id 155 von_typename varchar,156 beginnt character(20),157 155 beziehungsart varchar, -- Liste siehe unten 158 156 beziehung_zu character(16), 159 zu_typename varchar,157 import_id integer, -- 2014-01-31 160 158 CONSTRAINT alkis_beziehungen_pk PRIMARY KEY (ogc_fid) 161 159 ); … … 164 162 CREATE INDEX alkis_beziehungen_zu_idx ON alkis_beziehungen USING btree (beziehung_zu); 165 163 CREATE INDEX alkis_beziehungen_art_idx ON alkis_beziehungen USING btree (beziehungsart); 164 166 165 167 166 -- Dummy-Eintrag in Metatabelle … … 172 171 COMMENT ON COLUMN alkis_beziehungen.beziehung_zu IS 'Join auf Feld gml_id verschiedener Tabellen'; 173 172 COMMENT ON COLUMN alkis_beziehungen.beziehungsart IS 'Typ der Beziehung zwischen der von- und zu-Tabelle'; 174 175 COMMENT ON COLUMN alkis_beziehungen.von_typename IS 'Name der Tabelle der VON-Beziehung'; -- 2013-07-10 176 COMMENT ON COLUMN alkis_beziehungen.beginnt IS 'Mit Trigger kopiertes Beginnt-Datum des Datensatzes auf der Seite beziehung_von'; -- 2013-07-10 177 COMMENT ON COLUMN alkis_beziehungen.zu_typename IS 'Name der Tabelle der ZU-Beziehung'; -- 2013-07-10 173 --MMENT ON COLUMN alkis_beziehungen.beginnt IS 'Mit Trigger kopiertes Beginnt-Datum des Datensatzes auf der Seite beziehung_von'; 174 COMMENT ON COLUMN alkis_beziehungen.import_id IS 'laufende Nummer des Konverter-Laufes aus "import.id".'; 175 178 176 179 177 -
trunk/import/datenbank_anlegen.sh
r299 r314 11 11 ## 2013-10-16 F.J. krz: Neues Sript "pp_praesentation_sichten.sql" für Reparatur Präsentationsobjekte Straßennamen 12 12 ## 2013-12-03 F.J. krz: Script "sichten.sql" einbeziehen. Darin View "doppelverbindung" fuer WMS FS-Kommunal. 13 ## 2014-01-31 F.J. krz: Unterschiede der Datenbank-Struktur für die Varianten MIT/OHNE Historie. 13 14 14 15 POSTNAS_HOME=$(dirname $0) … … 58 59 if ! [ -e alkis-trigger.sql ]; then 59 60 if ln -s alkis-trigger-kill.sql alkis-trigger.sql; then 60 echo "** Symlink zu alkis-trigger-kill.sql (KEINE HISTORIE) angelegt"61 echo "** Symlink zu alkis-trigger-kill.sql (KEINE HISTORIE) wurde angelegt" 61 62 else 62 63 echo "** alkis-trigger.sql FEHLT!" … … 69 70 con="-p 5432 -d ${DBNAME} " 70 71 echo "connection " $con 72 71 73 echo "******************************" 72 74 echo "** Neue ALKIS-Datenbank **" … … 94 96 exit 1 95 97 fi 98 99 ## Kommentar zur Datenbank (allgemein) 100 psql $con -U ${DBUSER} -c "COMMENT ON DATABASE ${DBNAME} IS 'ALKIS - Konverter PostNAS 0.7';" 101 102 ## Kann man das Ziel des Symlinks abfragen? Wenn Kill, dann ... 103 ## if [ -e alkis-trigger.sql ]; then 104 echo " " 105 echo "** Besonderheiten der Datenbank OHNE Historie" 106 ## auskommentieren, wenn die Datenbank MIT Historie geführt wird 107 ## Import-ID: Tabelle und Spalte in "alkis_beziehungen" anlegen 108 psql $con -U ${DBUSER} -f alkis_PostNAS_schema_ohneHist.sql >$MANDANT_HOME/log/schema.log 109 ## Spalte "identifier" aus allen Tabellen entfernen (die wird nur vom Trigger MIT Historie benoetigt) 110 ##psql $con -U ${DBUSER} -c "SELECT alkis_drop_all_identifier();" 111 psql $con -U ${DBUSER} -c "COMMENT ON DATABASE ${DBNAME} IS 'ALKIS - Konverter PostNAS 0.7 - Ohne Historie';" 112 ## fi 96 113 97 114 echo " " … … 124 141 psql $con -U ${DBUSER} -f sichten.sql >$MANDANT_HOME/log/sichten.log 125 142 126 echo " "127 echo "COMMENT ON DATABASE ${DBNAME} IS 'ALKIS - Konverter PostNAS 0.7';" | psql -p 5432 -d ${DBNAME} -U ${DBUSER}128 echo " "129 130 143 echo "** Berechtigung (grant.sql) Protokoll siehe log" 131 144 psql $con -U ${DBUSER} -f grant.sql >$MANDANT_HOME/log/log_grant.log -
trunk/import/konv_batch.sh
r296 r314 30 30 ## Präsentationsobjekte Straßenname im Post-Processing 31 31 ## 2013-10-24 F.J. krz: Zwischenlösung "praesentation_action.sql" wieder deaktiviert. 32 ## 2014-01-31 F.J. krz: Import Eintrag erzeugen (nach Vorschlag Marvin Brandt, Unna) 32 33 ## 33 34 ## ToDo: Option "-skipfailures" nach Test entfernen ? … … 100 101 echo "Leeren der delete-Tabelle" 101 102 echo 'TRUNCATE table "delete";' | psql $con 103 104 # 105 # Import Eintrag erzeugen 106 # 107 # Die dadurch erzeugte Import-ID dient zur Steuerung des Löschens alter Relationen im Trigger. 108 # Wird die Datenbank MIT Historie geladen, muss die folgende Zeile auskommentiert werden. 109 echo "INSERT INTO import (datum,verzeichnis,importart) VALUES ('"$(date '+%Y-%m-%d %H:%M:%S')"','"${ORDNER}"','"${verarb}"');" | psql $con 110 102 111 # 103 112 # Ordner abarbeiten -
trunk/import/nutzungsart_definition.sql
r298 r314 60 60 nutz_id integer, 61 61 class integer NOT NULL, -- NULL-Werte der Quelltabelle durch den num. Wert 0 ersetzen 62 info integer,62 info integer, 63 63 zustand integer, 64 64 "name" varchar, -
trunk/import/sichten.sql
r311 r314 27 27 -- 2014-01-21 In "exp_csv": Rechtsgemeinsachaft zu allen Personen statt als eigener Satz. 28 28 -- 2014-01-27 Neuer Baustein "flst_an_strasse". Neuer View "exp_csv_str" fÃŒr CSV-Export von Flst. an einer StraÃe 29 -- 30 29 -- 2014-01-29 Neuer View "strasse_als_gewanne" zur Fehlersuche. 30 -- 2014-01-31 Kommentar 31 31 32 32 -- Bausteine fÃŒr andere Views: … … 931 931 -- Nach Ãnderung der Trigger-Function am 10.12.2013 wird die Beziehung trotzdem eingetragen, 932 932 -- nur die Felder "von_typename" und "beginnt" bleiben leer. 933 934 -- Diese FÀlle anzeigen: 935 CREATE OR REPLACE VIEW beziehungsproblem_faelle 936 AS 937 SELECT * 938 FROM alkis_beziehungen 939 WHERE beginnt IS NULL; 940 941 -- Wie viele sind das? 942 CREATE OR REPLACE VIEW beziehungsproblem_zaehler 943 AS 944 SELECT count(ogc_fid) AS anzahl 945 FROM alkis_beziehungen 946 WHERE beginnt IS NULL; 933 -- 2014-01-31: Dieser Trigger wird nicht mehr verwendet. 934 935 -- Diese FÀlle anzeigen: 936 -- CREATE OR REPLACE VIEW beziehungsproblem_faelle 937 -- AS 938 -- SELECT * 939 -- FROM alkis_beziehungen 940 -- WHERE beginnt IS NULL; 941 -- COMMENT ON VIEW beziehungsproblem_faelle 942 -- IS 'Fehlersuche: Im Trigger "update_fields_beziehungen()" wurde das Objekt in seiner Tabelle nicht gefunden, darum kein "beginnt" in "alkis_beziehungen" eingetragen.'; 943 944 -- Wie viele sind das? 945 -- CREATE OR REPLACE VIEW beziehungsproblem_zaehler 946 -- AS 947 -- SELECT count(ogc_fid) AS anzahl 948 -- FROM alkis_beziehungen 949 -- WHERE beginnt IS NULL; 950 -- COMMENT ON VIEW beziehungsproblem_faelle 951 -- IS 'Fehlersuche: Wie oft fehlt das beginnt-Feld in alkis_beziehungen?'; 947 952 948 953
Note: See TracChangeset
for help on using the changeset viewer.