source: trunk/info/info/alkis/alkisexport.php @ 302

Revision 302, 4.3 KB checked in by frank.jaeger, 10 years ago (diff)

CSV-Export aus der Auskunft - Prototyp. Fehlerkorrektur.

Line 
1<?php
2/*      Modul alkisexport.php
3        CSV-Export von ALKIS-Daten zu einem Flurstueck, Grundbuch oder EigentÃŒmer.
4        Es wird eine GML-ID ÃŒbergeben.
5        Es wird ein gespeicherter View verwendet, der nach der gml_id gefiltert wird.
6        Der View verkettet Flurstueck - Buchungsstelle - Grundbuch - Eigentuemer
7        Die Lagebezeichnung des FlurstÃŒcks wird in ein Feld komprimiert.
8        Parameter: gkz=mandant&gmlid=DE...&tabtyp=flurstueck/grundbuch/person
9
10        2014-01-17 krz f.j.
11*/
12
13function lage_zum_fs($gmlid) {
14        // Zu einem FlurstÃŒck die Lagebezeichnungen (mit Hausnummer) so aufbereiten,
15        // dass ggf. mehrere Lagebezeichnungen in eine Zelle der Tabelle passen.
16        $sql ="SELECT DISTINCT s.bezeichnung, l.hausnummer FROM alkis_beziehungen v ";
17        $sql.="JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu=l.gml_id ";
18        $sql.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage = s.lage ";
19        $sql.="WHERE v.beziehung_von= $1 AND v.beziehungsart='weistAuf' ";
20        $sql.="ORDER BY s.bezeichnung, l.hausnummer;";
21        $v=array($gmlid);
22        $res=pg_prepare("", $sql);
23        $res=pg_execute("", $v);
24        if (!$res) {
25                echo "Fehler bei Lagebezeichnung \n";
26                echo $sql."\n";
27        }
28        $j=0;
29        $lagehsnr="";
30        while($row = pg_fetch_array($res)) {
31                if ($j > 0) {$lagehsnr.=", ";}
32                $sneu=$row["bezeichnung"];
33                if ($sneu == $salt) { // gleiche Str.
34                        $lagehsnr.=$row["hausnummer"]; // HsNr dran haengen
35                } else { // Name UND HsNr dranhaengen
36                        $lagehsnr.=$sneu." ".$row["hausnummer"];
37                }
38                $salt=$sneu; // Name f. naechste Runde
39                $j++;
40        }
41        pg_free_result($res);
42        return($lagehsnr);
43}
44
45$cntget = extract($_GET); // Parameter aus URL lesen
46header('Content-type: application/octet-stream');
47header('Content-Disposition: attachment; filename="alkis_'.$tabtyp.'_'.$gmlid.'.csv"');
48require_once("alkis_conf_location.php");
49
50// CSV-Ausgabe: Kopfzeile mit Feldnamen
51echo "FS-Kennzeichen;Gemarkung;Flur;Flurstueck;Flaeche;Adressen;GB-Bezirk;GB-Blatt;LfdNrName;Anteil_am_FS;Buchungsart;Namensnummer;AnteilDerPerson;Beschreibung;Name;Vorname;GebDatum";
52
53// Datenbank-Verbindung
54$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
55if (!$con) {
56        exit("Fehler beim Verbinden der DB");
57}
58pg_set_client_encoding($con, LATIN1); // FÃŒr Excel kein UTF8 ausgeben
59
60// Der Parameter "Tabellentyp" bestimmt den Namen des Filter-Feldes aus dem View
61switch ($tabtyp) { // zulaessige Erte fuer &tabtyp=
62        case 'flurstueck': $filter = "fsgml"; break;
63        case 'grundbuch':  $filter = "gbgml"; break;
64        case 'person':     $filter = "psgml"; break;
65        default: exit("Falscher Parameter '".$tabtyp."'"); break;
66}
67
68// Daten aus gespeichertem View
69$sql ="SELECT * FROM exp_csv WHERE ".$filter." = $1 ";
70$v = array($gmlid);
71$res = pg_prepare("", $sql);
72$res = pg_execute("", $v);
73if (!$res) {
74        exit("Fehler bei Datenbankabfrage");
75}
76$i=0;
77$fsalt='';
78
79// Datenfelder auslesen
80while($row = pg_fetch_array($res)) {
81
82        // Flurstueck
83        $fsgml=$row["fsgml"];
84        $fs_kennz=$row["fs_kennz"];
85        $gmkgnr=$row["gemarkungsnummer"];
86//      $gemkname=$row["bezeichnung"];
87        $flurnummer=$row["flurnummer"];
88        $flstnummer=$row["zaehler"];
89        $nenner=$row["nenner"];
90        if ($nenner > 0) {$flstnummer.="/".$nenner;} // BruchNr
91        $fs_flae=$row["fs_flae"]; // amtliche Fl. aus DB-Feld
92
93        // Grundbuch (Blatt)
94        $gb_bezirk=$row["gb_bezirk"];
95        $gb_blatt=$row["gb_blatt"];
96
97        // 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       
107        // Person
108        $naname=$row["nachnameoderfirma"];
109        $vorname=$row["vorname"];
110        $gebdat=$row["geburtsdatum"];
111
112        // Adresse der Person
113        //      -- fehlt noch
114
115        // Adressen zum FS
116        if($fsgml != $fsalt) { // bei geÀndertem Kennz.
117                $lage=lage_zum_fs($fsgml); // die Lage neu ermitteln
118                $fsalt=$fsgml;
119        }
120
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;
125
126        // Ausgabe in CSV-Datei
127        echo "\n".$fsteil.$gbteil.$namteil;
128        $i++;
129}
130pg_free_result($res);
131if ($i == 0) {exit ("Kein Treffer fuer gml_id=".$gmlid);}
132pg_close($con);
133exit(0);
134?>
Note: See TracBrowser for help on using the repository browser.