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

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