source: trunk/info/info/alkis/alkisfsexp.php @ 275

Revision 275, 5.9 KB checked in by frank.jaeger, 11 years ago (diff)

Buchauskunft: deprecated "import_request_variables" ersetzt. In 'sichten.sql' die Mehrfachdarstellung unterdrückt, nur noch advstandardmodell='DKKM1000'.

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