Changeset 303


Ignore:
Timestamp:
01/20/14 14:51:46 (10 years ago)
Author:
frank.jaeger
Message:
 
Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/import/sichten.sql

    r301 r303  
    2424--  2013-11-26 Neue Views (doppelverbindung) 
    2525--  2014-01-17 View "exp_csv" fÃŒr den Export von CSV-Daten aus der Auskunft mit Modul alkisexport.php. 
     26--  2014-01-20 Erweiterung "exp_csv" fÃŒr alkisexport.php 
    2627 
    2728 
     
    8687-- Diese Redundanzen mÃŒssen vom dem Programm gefiltert werden, das die Daten ÃŒber eine Schnittstelle einliest. 
    8788 
     89-- Durch LEFT-JOIN werden wahlweise Namennummern mit Person und Adresse erzeugt,  
     90-- oder auch Namensnummern einer einem Beschrieb der Rechtsgemeinschaft oder leere Felder zu einem fiktiven Grundbuch. 
     91-- Auch mit diesen Zeilen-Varianten muss das weiter verarbeitende Programm klar kommen. 
     92 
    8893-- Anwendungs-Beispiel: Abrechnung von AnliegerbeitrÀgen. 
    8994 
     
    9297AS 
    9398 SELECT 
    94   -- ** FlurstÃŒck 
    95      f.gml_id AS fsgml,                                   -- möglicher Filter FlurstÃŒcks-GML-ID 
     99  -- FlurstÃŒck 
     100     f.gml_id                             AS fsgml,       -- möglicher Filter FlurstÃŒcks-GML-ID 
    96101     f.flurstueckskennzeichen             AS fs_kennz, 
    97102     f.gemarkungsnummer,                                  -- Teile des FS-Kennz. noch mal einzeln 
    98103     f.flurnummer, f.zaehler, f.nenner,  
    99104     f.amtlicheflaeche                    AS fs_flae, 
    100  
    101    -- * Adressen des FS -- Nein, diese werden im Export-Modul ermitteln und nachtragen 
    102  --  k.bezeichnung                          AS strasse,   -- Straßennamen 
    103  --  split_part(l.hausnummer,' ',1)         AS hausnr,    -- Nummer 
    104  --  upper(split_part(l.hausnummer,' ',2))  AS hausnr_zs, -- Zusatz in Großschreibung 
    105  
    106   -- ** Grundbuch 
     105     g.bezeichnung                        AS gemarkung, 
     106 
     107  -- Grundbuch 
    107108     gb.gml_id                            AS gbgml,       -- möglicher Filter Grundbuch-GML-ID 
    108109     gb.bezirk                            AS gb_bezirk, 
    109110     gb.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt, 
    110  
    111  -- ** Buchung 
    112      s.laufendenummer                     AS bu_lfd, 
    113    -- s.zaehler, s.nenner,                                -- Anteil des GB am FS 
    114      '=' || s.zaehler|| '/' || s.nenner   AS bu_ant,      -- als Excel-Formel  (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an') 
    115    --s.buchungsart,                                       -- verschlÃŒsselt 
    116      b.bezeichner                         AS bu_art,      -- entschlÃŒsselt 
    117  
    118    -- Felder aus der Subquery "Namens-Zweig" 
    119      nz.nam_lfd, nz.nam_ant, nz.nam_bes,                  -- nn.* 
    120      nz.psgml,                                            -- möglicher Filter Personen-GML-ID 
    121      nz.nachnameoderfirma, nz.vorname, nz.geburtsdatum    -- p.* 
     111     z.bezeichnung                        AS beznam,      -- GB-Bezirks-Name 
     112 
     113  -- Buchungsstelle (GrundstÃŒck) 
     114     s.laufendenummer                     AS bu_lfd,      -- BVNR 
     115    --s.zaehler, s.nenner,                                -- Anteil des GB am FS, einzelne Felder 
     116     '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an') 
     117     s.buchungsart,                                       -- verschlÃŒsselt 
     118     b.bezeichner                         AS bu_art,      -- Buchungsart entschlÃŒsselt 
     119 
     120   --NamensNummer 
     121     nn.laufendenummernachdin1421         AS nam_lfd,  
     122     '=' || nn.zaehler|| '/' || nn.nenner AS nam_ant,         -- als Excel-Formel 
     123     nn.artderrechtsgemeinschaft          AS nam_adr, 
     124     nn.beschriebderrechtsgemeinschaft    AS nam_bes, 
     125 
     126     -- 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  
     134  
     135     -- Adresse der Person 
     136     a.postleitzahlpostzustellung         AS plz, 
     137     a.ort_post                           AS ort,             -- Anschreifenzeile 1: PLZ+Ort 
     138     a.strasse,  a.hausnummer,                                -- Anschriftenzeile 2: Straße+HsNr 
     139     a.bestimmungsland                    AS land 
    122140 
    123141  FROM ax_flurstueck    f               -- FlurstÃŒck 
    124   JOIN doppelverbindung d               -- beide FÀlle ÃŒber Union-View: direkt und ÃŒber Recht von BS an BS 
     142  JOIN doppelverbindung d               -- beide FÀlle ÃŒber Union-View: direkt und ÃŒber Recht von Buchung an Buchung 
    125143    ON d.fsgml = f.gml_id  
     144 
     145  JOIN ax_gemarkung g                   -- entschlÃŒsseln 
     146    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    126147 
    127148  JOIN ax_buchungsstelle s              -- Buchungs-Stelle 
     
    130151    ON s.buchungsart = b.wert  
    131152 
    132 --  JOIN alkis_beziehungen v2             -- ax_flurstueck  >weistAuf>  AX_LagebezeichnungMitHausnummer 
    133 --    ON v2.beziehung_von = f.gml_id AND v2.beziehungsart = 'weistAuf' 
    134 --  JOIN ax_lagebezeichnungmithausnummer l 
    135 --    ON v2.beziehung_zu = l.gml_id 
    136 --  JOIN ax_lagebezeichnungkatalogeintrag k  
    137 --   ON l.kreis = k.kreis AND l.gemeinde = k.gemeinde AND l.lage = k.lage  
    138  
    139   JOIN alkis_beziehungen v3              -- Grundbuch (zur Buchungs-Stelle) 
    140     ON s.gml_id = v3.beziehung_von  AND v3.beziehungsart = 'istBestandteilVon'  -- Buchung  --> Blatt 
     153  JOIN alkis_beziehungen v3              -- Buchung --> Grundbuchblatt 
     154    ON s.gml_id = v3.beziehung_von AND v3.beziehungsart = 'istBestandteilVon' 
    141155  JOIN ax_buchungsblatt  gb  
    142156    ON v3.beziehung_zu = gb.gml_id  
    143157 
    144   LEFT JOIN -- LEFT: fiktives Blatt hat keine Namensnummern, dieser "Zweig" kann leer bleiben. 
    145   ( SELECT 
    146     -- Namensnummer 
    147      v4.beziehung_zu AS v4gml, 
    148      nn.laufendenummernachdin1421         AS nam_lfd,  
    149      '=' || nn.zaehler|| '/' || nn.nenner AS nam_ant,         -- als Excel-Formel 
    150      nn.beschriebderrechtsgemeinschaft    AS nam_bes, 
    151  
    152      -- Person (zur Namensnummer) 
    153      p.gml_id                            AS psgml,            -- möglicher Filter 
    154      p.nachnameoderfirma,                                     -- Familienname 
    155      p.vorname,                                               -- Vorname 
    156      p.geburtsdatum 
    157  
    158      -- Adresse des EigentÃŒmers  - Nein 
    159  
    160    FROM alkis_beziehungen v4         -- Namensnummer (zum GB-Blatt)  
    161    JOIN ax_namensnummer nn  
    162      ON v4.beziehung_von = nn.gml_id  
    163    JOIN alkis_beziehungen v5         -- Person (zur Namensnummer) 
    164      ON v5.beziehung_von = nn.gml_id  AND v5.beziehungsart = 'benennt'  -- NamNum   --> Person 
    165    JOIN ax_person p 
    166      ON v5.beziehung_zu = p.gml_id 
    167    WHERE v4.beziehungsart = 'istBestandteilVon'  -- Blatt  --> NamNum 
    168   ) AS nz   -- Namens-Zweig 
    169    ON nz.v4gml = gb.gml_id      -- LEFT JOIN: Namenzweig an Grundbuch anbinden 
    170  
    171   ORDER BY f.flurstueckskennzeichen, gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, nz.nam_lfd ; 
     158  JOIN ax_buchungsblattbezirk z  
     159    ON gb.land=z.land AND gb.bezirk=z.bezirk  
     160 
     161  JOIN alkis_beziehungen v4              -- Blatt  --> NamNum 
     162    ON v4.beziehung_zu = gb.gml_id AND v4.beziehungsart = 'istBestandteilVon'   
     163  JOIN ax_namensnummer nn  
     164    ON v4.beziehung_von = nn.gml_id 
     165 
     166  LEFT JOIN alkis_beziehungen v5         -- NamNum --> Person  
     167   -- 2014-01-20: Mit LEFT ab hier werden auch NumNum-Zeilen mit "Beschreinbung der Rechtsgemeinschaft" geliefert (ohne Person) 
     168    ON v5.beziehung_von = nn.gml_id AND v5.beziehungsart = 'benennt' 
     169  LEFT JOIN ax_person p 
     170    ON v5.beziehung_zu = p.gml_id 
     171 
     172  LEFT JOIN alkis_beziehungen v6        -- Person --> Anschrift 
     173    ON v6.beziehung_von = p.gml_id AND v6.beziehungsart = 'hat'  
     174  LEFT JOIN ax_anschrift a  
     175    ON v6.beziehung_zu = a.gml_id 
     176  
     177  ORDER BY f.flurstueckskennzeichen,  
     178           gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, s.laufendenummer, 
     179           nn.laufendenummernachdin1421; 
    172180 
    173181COMMENT ON VIEW exp_csv  
    174182 IS 'View fÃŒr einen CSV-Export aus der Buchauskunft mit alkisexport.php. Generelle Struktur. FÃŒr eine bestimmte gml_id noch den Filter setzen.'; 
    175183 
    176 -- GRANT SELECT ON TABLE exp_csv TO mb27;       -- User fÃŒr Auskunfts-Programme 
    177 -- GRANT SELECT ON TABLE exp_csv TO alkisbuch;  -- User fÃŒr Auskunfts-Programme RLP-Demo 
    178  
     184--GRANT SELECT ON TABLE exp_csv TO mb27;       -- User fÃŒr Auskunfts-Programme 
     185--GRANT SELECT ON TABLE exp_csv TO alkisbuch;  -- User fÃŒr Auskunfts-Programme RLP-Demo 
    179186 
    180187 
  • trunk/info/info/alkis/alkisexport.php

    r302 r303  
    11<?php 
    22/*      Modul alkisexport.php 
    3         CSV-Export von ALKIS-Daten zu einem Flurstueck, Grundbuch oder EigentÃŒmer. 
    4         Es wird eine GML-ID ÃŒbergeben. 
     3        CSV-Export von ALKIS-Daten zu einem Flurstueck, Grundbuch oder Eigentümer. 
     4        Es wird eine GML-ID übergeben. 
    55        Es wird ein gespeicherter View verwendet, der nach der gml_id gefiltert wird.  
    66        Der View verkettet Flurstueck - Buchungsstelle - Grundbuch - Eigentuemer 
    7         Die Lagebezeichnung des FlurstÃŒcks wird in ein Feld komprimiert. 
     7        Die Lagebezeichnung des Flurstücks wird in ein Feld komprimiert. 
    88        Parameter: gkz=mandant&gmlid=DE...&tabtyp=flurstueck/grundbuch/person 
    99 
    1010        2014-01-17 krz f.j. 
     11        2014-01-20 weitere Spalten und verbesserte Formatierung 
    1112*/ 
    1213 
    1314function lage_zum_fs($gmlid) { 
    14         // Zu einem FlurstÃŒck die Lagebezeichnungen (mit Hausnummer) so aufbereiten,  
     15        // Zu einem Flurstück die Lagebezeichnungen (mit Hausnummer) so aufbereiten,  
    1516        // dass ggf. mehrere Lagebezeichnungen in eine Zelle der Tabelle passen. 
    1617        $sql ="SELECT DISTINCT s.bezeichnung, l.hausnummer FROM alkis_beziehungen v "; 
     
    4748header('Content-Disposition: attachment; filename="alkis_'.$tabtyp.'_'.$gmlid.'.csv"'); 
    4849require_once("alkis_conf_location.php"); 
     50include("alkisfkt.php"); 
    4951 
    5052// CSV-Ausgabe: Kopfzeile mit Feldnamen 
    51 echo "FS-Kennzeichen;Gemarkung;Flur;Flurstueck;Flaeche;Adressen;GB-Bezirk;GB-Blatt;LfdNrName;Anteil_am_FS;Buchungsart;Namensnummer;AnteilDerPerson;Beschreibung;Name;Vorname;GebDatum"; 
     53echo "FS-Kennzeichen;GmkgNr;Gemarkung;Flur;Flurstueck;Flaeche;Adressen;GB-BezNr;GB-Bezirk;GB-Blatt;BVNR;Anteil_am_FS;Buchungsart;Namensnummer;AnteilDerPerson;RechtsGemeinschaft;Person;GebDatum;Anschrift"; 
    5254 
    5355// Datenbank-Verbindung 
     
    5658        exit("Fehler beim Verbinden der DB"); 
    5759} 
    58 pg_set_client_encoding($con, LATIN1); // FÃŒr Excel kein UTF8 ausgeben 
     60pg_set_client_encoding($con, LATIN1); // Für Excel kein UTF8 ausgeben 
    5961 
    6062// Der Parameter "Tabellentyp" bestimmt den Namen des Filter-Feldes aus dem View 
     
    8284        // Flurstueck 
    8385        $fsgml=$row["fsgml"]; 
    84         $fs_kennz=$row["fs_kennz"]; 
     86        $fs_kennz=$row["fs_kennz"]; // Rechts Trim "_" ? 
    8587        $gmkgnr=$row["gemarkungsnummer"]; 
    86 //      $gemkname=$row["bezeichnung"];  
     88        $gemkname=$row["gemarkung"];  
    8789        $flurnummer=$row["flurnummer"]; 
    8890        $flstnummer=$row["zaehler"]; 
     
    9294 
    9395        // Grundbuch (Blatt) 
    94         $gb_bezirk=$row["gb_bezirk"]; 
     96        $gb_bezirk=$row["gb_bezirk"]; // Nummer des Bezirks 
     97    $gb_beznam=$row["beznam"];    // Name des Bezirks 
    9598        $gb_blatt=$row["gb_blatt"]; 
    9699 
    97100        // Buchungsstelle (Grundstueck) 
    98         $bu_lfd=$row["bu_lfd"]; 
    99         $bu_ant=$row["bu_ant"]; 
    100         $bu_art=$row["bu_art"]; 
    101          
    102         //      Namensnummer 
    103         $nam_lfd=$row["nam_lfd"]; 
    104         $nam_ant=$row["nam_ant"]; 
    105         $nam_bes=$row["nam_bes"]; 
    106          
     101        $bu_lfd=$row["bu_lfd"]; // BVNR 
     102        $bu_ant=$row["bu_ant"]; // '=zaehler/nenner' oder NULL wenn zaehler oder nenner NULL sind 
     103        $bu_key=$row["buchungsart"]; // Sxhlüssel 
     104        $bu_art=$row["bu_art"]; // entschlüsselt (Umlaute in ANSI!) 
     105 
     106        // Für Berechnungen in der exportierten Tabelle wäre es nützlich, wenn "voller Anteil" als Faktor 1  
     107        // statt eines leeren Feldes ausgegeben würde  - Ausnahmen? 
     108        if(($bu_ant == '') and ($bu_key == 1100)) { // Grundstück 
     109                $bu_ant = '1'; 
     110        } 
     111 
     112        // Namensnummer 
     113        $nam_lfd="'".kurz_namnr($row["nam_lfd"])."'"; // In Hochkomma. Wird sonst als Datum dargestellt. 
     114        $nam_ant=$row["nam_ant"]; // Wann darf als Anteil "1" statt leer gesetzt werden? 
     115        $nam_adr=$row["nam_adr"]; // Art der Rechtsgemeischaft (Schlüssel) 
     116        $nam_bes=$row["nam_bes"]; // Beschrieb der Rechtsgemeinschaft 
     117 
     118        // Rechtsgemeinschaft (in einer eigene Zeile ohne Namen) 
     119        if ($nam_adr == 9999) { // sonstiges 
     120                $rechtsg=$nam_bes; // Beschreibung verwenden 
     121        } else { 
     122                $rechtsg=rechtsgemeinschaft($nam_adr); // Entschlüsseln 
     123        } 
     124 
    107125        // Person 
    108         $naname=$row["nachnameoderfirma"]; 
    109         $vorname=$row["vorname"]; 
     126        $nana=$row["nachnameoderfirma"]; 
     127        if ($nana == "") { 
     128                $name=""; 
     129        } else { 
     130                $name=anrede($row["anrede"]); 
     131                $namteil=$row["namensbestandteil"]; 
     132                if ($namteil != "") { // von und zu 
     133                        $name.=" ".$namteil; 
     134                }  
     135                $name.=" ".$nana; 
     136                $vnam=$row["vorname"]; 
     137                if ($vnam != "") { // keine Firma 
     138                        $name.=", ".$vnam; 
     139                } 
     140        } 
    110141        $gebdat=$row["geburtsdatum"]; 
    111142 
    112         // Adresse der Person 
    113         //      -- fehlt noch 
     143        // Adresse der Person (Eigentuemer)) 
     144        $ort=$row["ort"]; 
     145        if ($ort == "") { 
     146                $adresse=""; 
     147        } else {  
     148                $adresse=$row["strasse"]." ".$row["hausnummer"].", ".$row["plz"]." ".$ort; 
     149                $land=$row["land"]; // nur andere Länder anzeigen 
     150                if (($land != "DEUTSCHLAND") and ($land != "")) { 
     151                        $adresse.=" (".$land.")"; 
     152                } 
     153        } 
    114154 
    115         // Adressen zum FS 
    116         if($fsgml != $fsalt) { // bei geÀndertem Kennz. 
     155        // Adressen (Lage) zum FS 
     156        if($fsgml != $fsalt) { // nur bei geändertem Kennz. 
    117157                $lage=lage_zum_fs($fsgml); // die Lage neu ermitteln 
    118158                $fsalt=$fsgml; 
    119159        } 
    120160 
    121         // Den Ausgabe-Satz montieren aus FlurstÃŒcks-, Grundbuch- und Namens-Teil 
    122         $fsteil=$fs_kennz.";".$gmkgnr.";".$flurnummer.";".$flstnummer.";".$fs_flae.";".$lage.";"; 
    123         $gbteil=$gb_bezirk.";".$gb_blatt.";".$bu_lfd.";".$bu_ant.";".$bu_art.";"; 
    124         $namteil=$nam_lfd.";".$nam_ant.";".$nam_bes.";".$naname.";".$vorname.";".$gebdat; 
     161        // Den Ausgabe-Satz montieren aus Flurstücks-, Grundbuch- und Namens-Teil 
     162        $fsteil=$fs_kennz.";".$gmkgnr.";".$gemkname.";".$flurnummer.";".$flstnummer.";".$fs_flae.";".$lage.";"; 
     163        $gbteil=$gb_bezirk.";".$gb_beznam.";".$gb_blatt.";".$bu_lfd.";".$bu_ant.";".$bu_art.";"; 
     164        $namteil=$nam_lfd.";".$nam_ant.";".$rechtsg.";".$name.";".$gebdat.";".$adresse; 
    125165 
    126166        // Ausgabe in CSV-Datei 
Note: See TracChangeset for help on using the changeset viewer.