Ignore:
Timestamp:
01/27/14 17:55:54 (10 years ago)
Author:
frank.jaeger
Message:

CSV-Export aller Flurstücke an einer Straße.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/import/sichten.sql

    r305 r308  
    2626--  2014-01-20 Erweiterung "exp_csv" fÃŒr alkisexport.php 
    2727--  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 
    2929 
    3030-- Bausteine fÃŒr andere Views: 
     
    7272--   SELECT * FROM doppelverbindung WHERE ba_dien > 0 LIMIT 20; 
    7373 
     74 
     75 
     76-- Ein View, der die Verbindung von FlurstÃŒck zur Straßentabelle fÃŒr zwei verschiedene FÀlle herstellt. 
     77-- Einmal ÃŒber die Lagebezeichnung MIT Hausnummer und einmal OHNE. 
     78-- Dies kann als "MittelstÃŒck" in den anderen Views eingefÃŒgt werden. 
     79 
     80--   FlurstÃŒck  >weistAuf> ax_lagebezeichnungmithausnummer  <JOIN> ax_lagebezeichnungkatalogeintrag 
     81--   FlurstÃŒck  >zeigtAuf> ax_lagebezeichnungohnehausnummer <JOIN> ax_lagebezeichnungkatalogeintrag 
     82 
     83--           DROP VIEW public.flst_an_strasse; 
     84CREATE OR REPLACE VIEW public.flst_an_strasse 
     85AS 
     86  SELECT vm.beziehung_von AS fsgml,          -- Join auf "gml_id" aus "ax_flurstÃŒck" 
     87         sm.gml_id AS stgml,                 -- Filter: gml_id der Straße 
     88      -- sm.gemeinde, sm.lage,               -- Gemeinde- und Straßenschluessel als Filter? 
     89         'm' AS fall                         -- SÀtze unterschieden: Mit HsNr 
     90    FROM alkis_beziehungen vm                -- Verbindung Mit 
     91    JOIN ax_lagebezeichnungmithausnummer lm  -- Lage MIT 
     92      ON lm.gml_id=vm.beziehung_zu 
     93     AND vm.beziehungsart= 'weistAuf'  
     94    JOIN ax_lagebezeichnungkatalogeintrag sm -- Ausnahmsweise mal direkt und nicht ÃŒber die "alkis_beziehungen" 
     95      ON lm.land=sm.land  
     96     AND lm.regierungsbezirk=sm.regierungsbezirk  
     97     AND lm.kreis=sm.kreis  
     98     AND lm.gemeinde=sm.gemeinde  
     99     AND lm.lage=sm.lage  
     100 UNION 
     101  SELECT vo.beziehung_von AS fsgml,          -- Join auf gml_id aus ax_flurstÃŒck 
     102         so.gml_id AS stgml,                 -- Filter: gml_id der Straße 
     103      -- so.gemeinde, so.lage                -- Gemeinde- und Straßenschluessel als Filter? 
     104         'o' AS fall                         -- SÀtze unterschieden: Ohne HsNr 
     105    FROM alkis_beziehungen vo                -- Verbindung OHNE 
     106    JOIN ax_lagebezeichnungohnehausnummer lo -- Lage OHNE 
     107      ON lo.gml_id=vo.beziehung_zu 
     108     AND vo.beziehungsart= 'zeigtAuf'  
     109    JOIN ax_lagebezeichnungkatalogeintrag so -- Straße OHNE 
     110      ON lo.land=so.land  
     111     AND lo.regierungsbezirk=so.regierungsbezirk  
     112     AND lo.kreis=so.kreis  
     113     AND lo.gemeinde=so.gemeinde  
     114     AND lo.lage=so.lage; 
     115 
     116COMMENT ON VIEW public.flst_an_strasse  
     117 IS 'ALKIS-Beziehung von FlurstÃŒck zu Straßentabelle. UNION-Zusammenfassung der FÀlle MIT und OHNE Hausnummer.'; 
     118 
     119-- Muss man noch dafÃŒr sorgen, dass FlurstÃŒck nicht doppelt vorkommt? z.B. mit DISTINCT 
     120-- Oder mÃŒssen ggf. mehrfache FS im Programm ÃŒbersprungen werden? 
     121 
     122-- Test-Ausgabe: 
     123--   SELECT * FROM flst_an_strasse WHERE stgml='DENW18AL000004Fl' LIMIT 40; 
     124 
    74125-- Ende "Bausteine" 
    75  
    76126 
    77127 
     
    81131-- Wird benötigt im Auskunft-Modul "alkisexport.php": 
    82132-- Je nach aufrufendem Modul wird der Filter (WHERE) an anderer Stelle gesetzt (gml_id von FS, GB oder Pers.) 
     133-- FÃŒr Filter nach "Straße" siehe die nachfolgende Sonderversion "exp_csv_str". 
    83134 
    84135-- Problem / Konflikt: 
     
    125176 
    126177  -- Person 
    127      p.gml_id                             AS psgml,           -- möglicher Filter Personen-GML-ID 
    128      p.anrede, 
    129      p.vorname, 
    130      p.namensbestandteil, 
    131      p.nachnameoderfirma,                                     -- Familienname 
    132      p.geburtsdatum, 
    133      --p.geburtsname, p.akademischergrad  
     178    p.gml_id                             AS psgml,           -- möglicher Filter Personen-GML-ID 
     179    p.anrede, 
     180    p.vorname, 
     181    p.namensbestandteil, 
     182    p.nachnameoderfirma,                                     -- Familienname 
     183    p.geburtsdatum, 
     184    --p.geburtsname, p.akademischergrad  
    134185  
    135186  -- Adresse der Person 
     
    200251  GRANT SELECT ON TABLE exp_csv TO mb27;       -- User fÃŒr Auskunfts-Programme 
    201252--GRANT SELECT ON TABLE exp_csv TO alkisbuch;  -- User fÃŒr Auskunfts-Programme RLP-Demo 
     253 
     254 
     255-- Variante des View "exp_csv": 
     256-- Hier wird zusÀtzlich der Baustein "flst_an_strasse" verwendet. 
     257-- Der Filter "WHERE stgml= " auf die "gml_id" von "ax_lagebezeichnungkatalogeintrag" sollte gesetzt werden 
     258-- um alle FlurstÃŒcke zu bekommen, die an einer Straße liegen. 
     259-- DROP           VIEW exp_csv_str; 
     260CREATE OR REPLACE VIEW exp_csv_str 
     261AS 
     262 SELECT 
     263    l.stgml,                                             -- Filter: Straßen-GML-ID 
     264 
     265  -- FlurstÃŒck 
     266    f.gml_id                             AS fsgml,       -- Gruppenwechsel fÃŒr "function lage_zum_fs" in alkisexport.php 
     267    f.flurstueckskennzeichen             AS fs_kennz, 
     268    f.gemarkungsnummer,                                  -- Teile des FS-Kennz. noch mal einzeln 
     269    f.flurnummer, f.zaehler, f.nenner,  
     270    f.amtlicheflaeche                    AS fs_flae, 
     271    g.bezeichnung                        AS gemarkung, 
     272 
     273  -- Grundbuch 
     274  --gb.gml_id                            AS gbgml,       -- möglicher Filter Grundbuch-GML-ID 
     275    gb.bezirk                            AS gb_bezirk, 
     276    gb.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt, 
     277    z.bezeichnung                        AS beznam,      -- GB-Bezirks-Name 
     278 
     279  -- Buchungsstelle (GrundstÃŒck) 
     280    s.laufendenummer                     AS bu_lfd,      -- BVNR 
     281    --s.zaehler, s.nenner,                                -- Anteil des GB am FS, einzelne Felder 
     282    '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an') 
     283    s.buchungsart,                                       -- verschlÃŒsselt 
     284    b.bezeichner                         AS bu_art,      -- Buchungsart entschlÃŒsselt 
     285 
     286  -- NamensNummer (Normalfall mit Person) 
     287    nn.laufendenummernachdin1421         AS nam_lfd,  
     288    '=' || nn.zaehler|| '/' || nn.nenner AS nam_ant,         -- als Excel-Formel 
     289 
     290  -- Rechtsgemeinsachaft (Sonderfall von Namensnummer, ohne Person, ohne Nummer) 
     291    rg.artderrechtsgemeinschaft          AS nam_adr, 
     292    rg.beschriebderrechtsgemeinschaft    AS nam_bes, 
     293 
     294  -- Person 
     295  --p.gml_id                             AS psgml,           -- möglicher Filter Personen-GML-ID 
     296    p.anrede, 
     297    p.vorname, 
     298    p.namensbestandteil, 
     299    p.nachnameoderfirma,                                     -- Familienname 
     300    p.geburtsdatum, 
     301    --p.geburtsname, p.akademischergrad  
     302  
     303  -- Adresse der Person 
     304    a.postleitzahlpostzustellung         AS plz, 
     305    a.ort_post                           AS ort,             -- Anschreifenzeile 1: PLZ+Ort 
     306    a.strasse,  a.hausnummer,                                -- Anschriftenzeile 2: Straße+HsNr 
     307    a.bestimmungsland                    AS land 
     308 
     309  FROM ax_flurstueck    f               -- FlurstÃŒck 
     310 
     311  JOIN flst_an_strasse  l               -- Lage (hier zusÀtzlicher JOIN gegenÃŒber Version "exp_csv")  
     312        ON l.fsgml = f.gml_id  
     313 
     314  JOIN doppelverbindung d               -- beide FÀlle ÃŒber Union-View: direkt und ÃŒber Recht von Buchung an Buchung 
     315    ON d.fsgml = f.gml_id  
     316 
     317  JOIN ax_gemarkung g                   -- entschlÃŒsseln 
     318    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
     319 
     320  JOIN ax_buchungsstelle s              -- Buchungs-Stelle 
     321    ON d.bsgml = s.gml_id  
     322  JOIN ax_buchungsstelle_buchungsart b  -- EnstschlÃŒsselung der Buchungsart 
     323    ON s.buchungsart = b.wert  
     324 
     325  JOIN alkis_beziehungen v3             -- Buchung --> Grundbuchblatt 
     326    ON s.gml_id = v3.beziehung_von AND v3.beziehungsart = 'istBestandteilVon' 
     327  JOIN ax_buchungsblatt  gb  
     328    ON v3.beziehung_zu = gb.gml_id  
     329 
     330  JOIN ax_buchungsblattbezirk z  
     331    ON gb.land=z.land AND gb.bezirk=z.bezirk  
     332 
     333  JOIN alkis_beziehungen v4             -- Blatt  --> NamNum 
     334    ON v4.beziehung_zu = gb.gml_id AND v4.beziehungsart = 'istBestandteilVon'   
     335  JOIN ax_namensnummer nn  
     336    ON v4.beziehung_von = nn.gml_id 
     337 
     338  JOIN alkis_beziehungen v5             -- NamNum --> Person  
     339   -- 2014-01-20: Mit LEFT ab hier werden auch NumNum-Zeilen mit "Beschreibung der Rechtsgemeinschaft" geliefert (ohne Person) 
     340    ON v5.beziehung_von = nn.gml_id AND v5.beziehungsart = 'benennt' 
     341  JOIN ax_person p 
     342    ON v5.beziehung_zu = p.gml_id 
     343 
     344  LEFT JOIN alkis_beziehungen v6        -- Person --> Anschrift 
     345    ON v6.beziehung_von = p.gml_id AND v6.beziehungsart = 'hat'  
     346  LEFT JOIN ax_anschrift a  
     347    ON v6.beziehung_zu = a.gml_id 
     348 
     349  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery: 
     350 
     351  -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft". 
     352  -- Kommt max. 1 mal je GB vor und hat keine Relation auf Person. 
     353  LEFT JOIN 
     354   ( SELECT v7.beziehung_zu, 
     355            rg.artderrechtsgemeinschaft,  
     356            rg.beschriebderrechtsgemeinschaft  
     357       FROM ax_namensnummer rg  
     358       JOIN alkis_beziehungen v7              -- Blatt  --> NamNum (Rechtsgemeinschaft)  
     359         ON v7.beziehung_von = rg.gml_id 
     360      WHERE v7.beziehungsart = 'istBestandteilVon' 
     361        AND NOT rg.artderrechtsgemeinschaft IS NULL 
     362   ) AS rg                         -- Rechtsgemeinschaft 
     363   ON rg.beziehung_zu = gb.gml_id  -- zum GB 
     364 
     365  ORDER BY f.flurstueckskennzeichen,  
     366           gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, s.laufendenummer, 
     367           nn.laufendenummernachdin1421; 
     368 
     369COMMENT ON VIEW exp_csv_str  
     370 IS 'View fÃŒr einen CSV-Export aus der Buchauskunft mit alkisexport.php. Liefert nur FlurstÃŒcke, die eine Lagebezeichnung MIT/OHNE Hausnummer haben. Dazu noch den Filter auf GML-ID der Straßentabelle setzen.'; 
     371 
     372  GRANT SELECT ON TABLE exp_csv_str TO mb27;       -- User fÃŒr Auskunfts-Programme 
     373--GRANT SELECT ON TABLE exp_csv_str TO alkisbuch;  -- User fÃŒr Auskunfts-Programme RLP-Demo 
     374 
     375 
     376-- Test-Ausgabe: 
     377--   SELECT * FROM exp_csv_str WHERE stgml='DENW18AL000004Fl' LIMIT 40; 
    202378 
    203379 
Note: See TracChangeset for help on using the changeset viewer.