1 | <?php |
---|
2 | /* Modul alkisfsexp.php |
---|
3 | CSV-Export von Flurstuecks-Daten
|
---|
4 | 2012-07-23 krz f.j. |
---|
5 | */ |
---|
6 | import_request_variables("G"); // gmlid |
---|
7 | header('Content-type: application/octet-stream'); |
---|
8 | header('Content-Disposition: attachment; filename="alkis_flurstueck_'.$gmlid.'.csv"'); |
---|
9 | require_once("alkis_conf_location.php");
|
---|
10 | |
---|
11 | // CSV-Ausgabe |
---|
12 | echo "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); |
---|
16 | if (!$con) {exit("Fehler beim Verbinden der DB");} |
---|
17 | pg_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);
|
---|
26 | if (!$res) {exit("Fehler bei Flurstuecksdaten");} |
---|
27 | if ($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);}
|
---|
36 | pg_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);
|
---|
48 | if (!$res) { |
---|
49 | echo "Fehler bei Lagebezeichnung mit Hausnummer\n"; |
---|
50 | echo $sql."\n"; |
---|
51 | } |
---|
52 | $j=0; |
---|
53 | $lagehsnr=""; // mehrere ggf. in ein Feld
|
---|
54 | while($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 | } |
---|
65 | pg_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);
|
---|
81 | if (!$ress) {echo "\nKeine Buchungsstelle";}
|
---|
82 | $bs=0; // Z.Buchungsstelle
|
---|
83 | while($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 | } |
---|
141 | if ($bs == 0) {echo "\nKeine Buchungstelle gefunden.";} |
---|
142 | pg_close($con); |
---|
143 | exit(0);
|
---|
144 | ?> |
---|