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

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