source: trunk/var/www/info/alkis/alkisfsgbexp.php @ 198

Revision 198, 6.1 KB checked in by frank.jaeger, 11 years ago (diff)

Buchauskunft: Umstellen der Schaltflächen am unteren Rand auf Symbole statt Buchstaben,
CSV-Download von FS- und GB-Daten,
begonnene Änderungen teilweise noch nicht fertig gestellt (siehe Kommentare).

Line 
1<?php
2/*      Modul alkisfsgbexp.php
3        CSV-Export von Grundbuch-Daten zum Flurstueck
4        Es wird die GML-ID eines FlurstÃŒcks ÃŒbergeben (analog alkisfsexp.php)
5        Dazu sollen alle verbundenen GrundbÃŒcher gesucht werden.
6        Zu diesen sollen die EigentÃŒmerdaten exportiert werden (analog alkisbestexp.php)
7
8+++ IN ARBEIT ++++  ZunÀchst Kopie von alkisfsexp.php
9       
10        2012-07-24 krz f.j.
11*/
12import_request_variables("G"); // gmlid
13header('Content-type: application/octet-stream');
14header('Content-Disposition: attachment; filename="alkis_flurstueck_'.$gmlid.'.csv"');
15require_once("alkis_conf_location.php");
16
17// CSV-Ausgabe
18echo "Gemarkung;FS-Kennzeichen;Flaeche;Adressen;Buchungsart;GB-Bezirk;GB-Blatt;LfdNr;Anteil";
19
20// Datenbank-Verbindung
21$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
22if (!$con) {exit("Fehler beim Verbinden der DB");}
23pg_set_client_encoding($con, LATIN1);
24
25// FlurstÃŒcksdaten
26$sql ="SELECT f.flurnummer, f.zaehler, f.nenner, f.gemeinde, f.amtlicheflaeche, g.gemarkungsnummer, g.bezeichnung ";
27$sql.="FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
28$sql.="WHERE f.gml_id= $1";
29$v = array($gmlid);
30$res = pg_prepare("", $sql);
31$res = pg_execute("", $v);
32if (!$res) {exit("Fehler bei Flurstuecksdaten");}
33if ($row = pg_fetch_array($res)) {
34        $gemkname=$row["bezeichnung"];
35        $gmkgnr=$row["gemarkungsnummer"];
36        $flurnummer=$row["flurnummer"];
37        $flstnummer=$row["zaehler"];
38        $nenner=$row["nenner"];
39        if ($nenner > 0) {$flstnummer.="/".$nenner;} // BruchNr
40        $fsbuchflae=$row["amtlicheflaeche"]; // amtliche Fl. aus DB-Feld
41} else {exit ("Kein Treffer fuer gml_id=".$gmlid);}
42pg_free_result($res);
43
44// Lagebezeichnung Mit Hausnummer
45// Mehrere Lagebezeichnungen kommen in eine Zelle der Tabelle
46$sql ="SELECT DISTINCT s.bezeichnung, l.hausnummer FROM alkis_beziehungen v ";
47$sql.="JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu=l.gml_id ";
48$sql.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage = s.lage ";
49$sql.="WHERE v.beziehung_von= $1 AND v.beziehungsart='weistAuf' ";
50$sql.="ORDER BY s.bezeichnung, l.hausnummer;";
51$v=array($gmlid);
52$res=pg_prepare("", $sql);
53$res=pg_execute("", $v);
54if (!$res) {
55        echo "Fehler bei Lagebezeichnung mit Hausnummer\n";
56        echo $sql."\n";
57}
58$j=0;
59$lagehsnr=""; // mehrere ggf. in ein Feld
60while($row = pg_fetch_array($res)) {
61        if ($j > 0) {$lagehsnr.=", ";}
62        $sneu=$row["bezeichnung"];
63        if ($sneu == $salt) {
64                $lagehsnr.=$row["hausnummer"];
65        } else {
66                $lagehsnr.=$sneu." ".$row["hausnummer"];
67        }
68        $salt=$sneu;
69        $j++;
70}
71pg_free_result($res);
72
73$fskennz='"'.$gmkgnr.'-'.$flurnummer.'-'.$flstnummer.'"'; // in "" einschließen, Excel macht sonst Datum daraus
74$csvfs="\n".$gemkname.";".$fskennz.";".$fsbuchflae.";".$lagehsnr.";"; // Buchung anhÀngen
75// Ende linearer Teil (eine Zeile je FlurstÃŒck))
76
77// BUCHUNGSSTELLEN zum FS
78//  jede Buchung zu einem FS erzeugt eine neue FS-Zeile !!
79$sql ="SELECT s.gml_id, s.buchungsart, s.laufendenummer as lfd, s.zaehler, s.nenner, b.bezeichner AS bart ";
80$sql.="FROM alkis_beziehungen v "; // Bez Flurst.- Stelle.
81$sql.="JOIN ax_buchungsstelle s ON v.beziehung_zu=s.gml_id ";
82$sql.="LEFT JOIN ax_buchungsstelle_buchungsart b ON s.buchungsart = b.wert ";
83$sql.="WHERE v.beziehung_von= $1 AND v.beziehungsart= $2 ORDER BY s.laufendenummer;";
84$v = array($gmlid,'istGebucht');
85$ress = pg_prepare("", $sql);
86$ress = pg_execute("", $v);
87if (!$ress) {echo "\nKeine Buchungsstelle";}
88$bs=0; // Z.Buchungsstelle
89while($rows = pg_fetch_array($ress)) {
90        $gmls=$rows["gml_id"]; // gml b-Stelle 
91        $lfd=$rows["lfd"]; // BVNR
92
93        // BUCHUNGSBLATT zur Buchungsstelle
94        $sql ="SELECT b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, z.bezeichnung ";
95        $sql.="FROM alkis_beziehungen v "; // Bez. Stelle - Blatt
96        $sql.="JOIN ax_buchungsblatt b ON v.beziehung_zu=b.gml_id ";
97        $sql.="LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk ";
98        $sql.="WHERE v.beziehung_von= $1 AND v.beziehungsart= $2 ";
99        $sql.="ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung ;";
100        $v=array($gmls,'istBestandteilVon');
101        $resg=pg_prepare("", $sql);
102        $resg=pg_execute("", $v);
103        if (!$resg) {echo "\nKein Buchungsblatt";}
104        $bl=0;
105        while($rowg = pg_fetch_array($resg)) {
106                echo $csvfs.$rows["bart"].";".$rowg["bezeichnung"].";".$rowg["blatt"].";".$rows["lfd"].";";
107                if ($rowg["zaehler"] == "") {echo "1";}
108                else {
109                        $zah=str_replace(".",",",$rowg["zaehler"]);
110                        $nen=str_replace(".",",",$rowg["nenner"]);             
111                        echo "=".$zah."/".$nen;
112                }       
113                $bl++;
114        }
115        pg_free_result($resg);
116        if ($bl == 0) {echo "\nKein Buchungsblatt gefunden.";}
117
118        // RECHT Stelle an Stelle - Kommentare siehe alkisfsnw.php
119        $sql ="SELECT s.laufendenummer as lfd, s.zaehler, s.nenner, ";
120        $sql.=" b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, z.bezeichnung, a.bezeichner AS bart ";
121        $sql.="FROM alkis_beziehungen an ";
122        $sql.="JOIN ax_buchungsstelle s ON an.beziehung_von = s.gml_id ";
123        $sql.="JOIN alkis_beziehungen v ON s.gml_id = v.beziehung_von ";
124        $sql.="JOIN ax_buchungsblatt  b ON v.beziehung_zu = b.gml_id ";
125        $sql.="LEFT JOIN ax_buchungsblattbezirk z ON z.land = b.land AND z.bezirk = b.bezirk ";
126        $sql.="LEFT JOIN ax_buchungsstelle_buchungsart a ON s.buchungsart = a.wert ";
127        $sql.="WHERE an.beziehung_zu = $1 ";
128        $sql.="AND an.beziehungsart = 'an' ";
129        $sql.="AND v.beziehungsart = 'istBestandteilVon' ";
130        $sql.="ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung;";
131        $v = array($gmls);
132        $resan = pg_prepare("", $sql);
133        $resan = pg_execute("", $v);
134        if (!$resan) {echo "\nFehler bei weiteren Buchungsstellen";}
135        while($rowan = pg_fetch_array($resan)) {
136                echo $csvfs.$rowan["bart"].";".$rowan["bezeichnung"].";".$rowan["blatt"].";".$rowan["lfd"].";";
137                if ($rowan["zaehler"] == "") {echo "1";}
138                else {
139                        $zah=str_replace(".",",",$rowan["zaehler"]);
140                        $nen=str_replace(".",",",$rowan["nenner"]);             
141                        echo "=".$zah."/".$nen;
142                }
143        }
144        pg_free_result($resan);
145        $bs++;
146}
147if ($bs == 0) {echo "\nKeine Buchungstelle gefunden.";}
148pg_close($con);
149exit(0);
150?>
Note: See TracBrowser for help on using the repository browser.