source: trunk/var/www/info/alkis/alkisgebaeudenw.php @ 61

Revision 61, 10.4 KB checked in by astrid.emde, 12 years ago (diff)

Umstellung auf prepared statements

Line 
1<?php
2/*      alkisgebaeudenw.php - Gebaeudenachweis
3        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
4
5        Version:
6        15.09.2010  Function "buchungsart" durch JOIN ersetzt
7        21.09.2010  vergessenen Parameter &style und Kommentar entfernt
8        01.10.2010  Geschoss-Anzahl
9        14.12.2010  Pfad zur Conf
10*/
11ini_set('error_reporting', 'E_ALL & ~ E_NOTICE');
12session_start();
13$gkz=urldecode($_REQUEST["gkz"]);
14require_once("alkis_conf_location.php");
15if ($auth == "mapbender") {
16        // Bindung an Mapbender-Authentifizierung
17        require_once($mapbender);
18} include("alkisfkt.php");
19?>
20<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
21<html>
22<head>
23        <meta name="author" content="F. Jaeger krz" >
24        <meta http-equiv="cache-control" content="no-cache">
25        <meta http-equiv="pragma" content="no-cache">
26        <meta http-equiv="expires" content="0">
27        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
28        <title>ALKIS Geb&auml;udenachweis</title>
29        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
30        <link rel="shortcut icon" type="image/x-icon" href="ico/Haus.ico">
31        <style type='text/css' media='print'>
32                .noprint {visibility: hidden;}
33        </style>
34</head>
35<body>
36<?php
37$gmlid=urldecode($_REQUEST["gmlid"]);
38$id = isset($_GET["id"]) ? $_GET["id"] : "n";
39if ($id == "j") {
40        $idanzeige=true;
41} else {
42        $idanzeige=false;
43}
44$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
45if ($keys == "j") {
46        $showkey=true;
47} else {
48        $showkey=false;
49}
50$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
51if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
52
53// Flurstueck
54$sqlf ="SELECT f.name, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, f.zeitpunktderentstehung, ";
55$sqlf.="g.gemarkungsnummer, g.bezeichnung ";
56$sqlf.="FROM ax_flurstueck f ";
57$sqlf.="JOIN ax_gemarkung  g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
58$sqlf.="WHERE f.gml_id= $1;";
59
60$v = array($gmlid);
61$resf = pg_prepare("", $sqlf);
62$resf = pg_execute("", $v);
63
64if (!$resf) {
65        echo "\n<p class='err'>Fehler bei Flurst&uuml;cksdaten\n<br>".$sqlf."</p>\n";
66}
67
68if ($rowf = pg_fetch_array($resf)) {
69        $gemkname=htmlentities($rowf["bezeichnung"], ENT_QUOTES, "UTF-8");
70        $gmkgnr=$rowf["gemarkungsnummer"];
71        $flurnummer=$rowf["flurnummer"];
72        $flstnummer=$rowf["zaehler"];
73        $nenner=$rowf["nenner"];
74        if ($nenner > 0) { // BruchNr
75                $flstnummer.="/".$nenner;
76        }
77        $flstflaeche = $rowf["amtlicheflaeche"] ;
78} else {
79        echo "<p class='err'>Fehler! Kein Treffer fuer gml_id=".$gmlid."</p>";
80}
81
82// Balken echo "<p class='geb'>ALKIS Flurst&uuml;ck (Geb&auml;ude) ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>\n";
83
84echo "\n<h2><img src='ico/Flurstueck.ico' width='16' height='16' alt=''> Flurst&uuml;ck (Geb&auml;ude)</h2>\n";
85
86// Kennzeichen in Rahmen
87echo "\n<table class='outer'>\n<tr>\n<td>";
88        echo "\n\t<table class='kennzfs' title='Flurst&uuml;ckskennzeichen'>";
89                echo "\n\t<tr>";
90                        echo "\n\t\t<td class='head'>Gmkg</td>";
91                        echo "\n\t\t<td class='head'>Flur</td>";
92                        echo "\n\t\t<td class='head'>Flurst-Nr.</td>";
93                echo "\n\t</tr>";
94                echo "\n\t<tr>";
95                        echo "\n\t\t<td title='Gemarkung'>";
96                        if  ($shaowkey) {
97                                echo "<span class='key'>".$gmkgnr."</span><br>";
98                        }
99                        echo $gemkname."</td>";
100                        echo "\n\t\t<td title='Flurnummer'>".$flurnummer."</td>";
101                        echo "\n\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>";
102                echo "\n\t</tr>";
103        echo "\n\t</table>";
104echo "\n</td>\n<td>";
105
106// Links zu anderen Nachweisen
107echo "\n\t<p class='nwlink noprint'>";
108        echo "\n\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
109        if ($idanzeige) {echo "&amp;id=j";}
110        if ($showkey)   {echo "&amp;showkey=j";}         echo "&amp;eig=n' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck <img src='ico/Flurstueck_Link.ico' width='16' height='16' alt=''></a>";
111echo "\n\t</p>";
112
113if ($idanzeige) {linkgml($gkz, $gmlid, "Flurst&uuml;ck"); }
114echo "\n\t</td>\n</tr>\n</table>";
115// Ende Seitenkopf
116
117echo "\n<p class='fsd'>Flurst&uuml;cksfl&auml;che: <b>".number_format($flstflaeche,0,",",".") . " m&#178;</b></p>";
118
119echo "\n\n<h3><img src='ico/Haus.ico' width='16' height='16' alt=''> Geb&auml;ude</h3>";
120echo "\n<p>.. auf oder an dem Flurst&uuml;ck. Ermittelt durch Verschneidung der Geometrie.</p>";
121
122// G e b a e u d e
123$sqlg ="SELECT g.gml_id, g.name, g.description, g.bauweise, g.gebaeudefunktion, g.anzahlderoberirdischengeschosse AS aog, ";
124$sqlg.=" h.bauweise_beschreibung, u.bezeichner, v.beziehungsart, v.beziehung_zu, l.hausnummer, ";
125
126// Gebaeudeflaeche komplett auch ausserhalb des FS
127$sqlg.="round(area(g.wkb_geometry)::numeric,2) AS gebflae, ";
128
129// wie viel vom GEB liegt im FS?
130$sqlg.="round(st_area(ST_Intersection(g.wkb_geometry,f.wkb_geometry))::numeric,2) AS schnittflae, ";
131
132// liegt das GEB komplett im FS?
133$sqlg.="st_within(g.wkb_geometry,f.wkb_geometry) as drin ";
134
135// FS und GEB geometrisch verschneiden
136$sqlg.="FROM ax_flurstueck f, ax_gebaeude g ";
137
138// Entschluesseln
139$sqlg.="LEFT JOIN ax_gebaeude_bauweise h ON g.bauweise = h.bauweise_id ";
140$sqlg.="LEFT JOIN ax_gebaeude_funktion u ON g.gebaeudefunktion = u.wert ";
141
142// Beziehungen verfolgen (holt die Hausnummer)
143$sqlg.="LEFT JOIN alkis_beziehungen v ON g.gml_id=v.beziehung_von ";
144$sqlg.="LEFT JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu=l.gml_id ";
145
146// auch die Nebengebaeude-Pseudo-Nummern suchen?
147// $sqlg.="LEFT JOIN ax_lagebezeichnungmitpseudonummer p ON v.beziehung_zu=p.gml_id ";
148
149// ID des aktuellen FS
150$sqlg.="WHERE f.gml_id= $1 ";
151
152// ALT: "within" liefert nur Gebaeude, die komplett im Flurstueck liegen
153//$sqlg.="AND within(g.wkb_geometry,f.wkb_geometry) = true ";
154
155// "intersects" liefert ueberlappende Flaechen
156$sqlg.="AND st_intersects(g.wkb_geometry,f.wkb_geometry) = true ";
157
158// RLP: keine Relationen zu Nebengebaeuden:
159// auf Qualifizierung verzichten, sonst werden NebengebÀude nicht angezeigt
160        //$sqlg.="AND (v.beziehungsart='zeigtAuf' OR v.beziehungsart='hat') ";
161
162$sqlg.="ORDER BY schnittflae DESC;";
163
164// Problem: HsNr ist linksbuedig Char:
165//$sqlg.="ORDER BY hausnummer, flaeche DESC;"; 
166
167// ax_gebaeude  (zeigtAuf) ax_LagebezeichnungMitHausnummer    (HauptgebÀude)
168// ax_gebaeude  (hat)      ax_LagebezeichnungMitPseudonummer  (NebengebÀude)
169
170$v = array($gmlid);
171$resg = pg_prepare("", $sqlg);
172$resg = pg_execute("", $v);
173
174if (!$resg) {
175        echo "\n<p class='err'>Keine Geb&auml;ude ermittelt.<br>\nSQL=<br></p>\n";
176        echo "\n<p class='err'>".$sqlg."</p>\n";
177}
178
179$gebnr=0;
180echo "\n<hr>\n<table class='geb'>";
181        // Header
182        echo "\n<tr>\n";
183                //echo "\n\t<td class='head' title='laufende Nummer'>Lfd. Nr.</td>";
184                echo "\n\t<td class='head' title='ggf. Hausnummer und/oder Geb&auml;udename'>Nr/Name</td>";
185                echo "\n\t<td class='head fla' title='Schnittsfl&auml;che'>Fl&auml;che</td>";
186                echo "\n\t<td class='head' title='Geb&auml;udefl&auml;che'>&nbsp;</td>";
187                echo "\n\t<td class='head' title='Anzahl oberirdischer Geschosse'>Gesch.</td>";
188                echo "\n\t<td class='head' title='Geb&auml;udefunktion ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des Geb&auml;udes'>Funktion</td>";
189                echo "\n\t<td class='head' title='Bauweise (Schl&uuml;ssel und Beschreibung)'>Bauweise</td>";
190                echo "\n\t<td class='head nwlink' title='Typ von .. und Link zur Lagebezeichnung'>Lage</td>";
191        echo "\n</tr>";
192        // Body
193        while($rowg = pg_fetch_array($resg)) {
194                $gebnr = $gebnr + 1;
195                $gebflsum = $gebflsum + $rowg["schnittflae"];           
196                echo "\n<tr>";
197                        echo "\n\t<td>".$rowg["hausnummer"]."&nbsp;".$rowg["name"];
198                                if ($idanzeige) {
199                                        linkgml($gkz, $rowg["gml_id"], "Geb&auml;ude");
200                                }       
201                        echo "</td>";
202
203                        if ($rowg["drin"] == "t") { // 3 komplett enthalten
204                                echo "\n\t<td class='fla'>".$rowg["schnittflae"]." m&#178;</td>";
205                                echo "\n\t<td>&nbsp;</td>";
206                        } else {
207                if ($rowg["schnittflae"] == "0.00") { // angrenzend
208                                        echo "\n\t<td class='fla'>&nbsp;</td>";
209                                        echo "\n\t<td>angrenzend</td>";
210                                } else { // Teile enthalten
211                                        echo "\n\t<td class='fla'>".$rowg["schnittflae"]." m&#178;</td>";
212                                        echo "\n\t<td>(von ".$rowg["gebflae"]." m&#178;)</td>";
213                                }
214                        }
215
216                        echo "\n\t<td>".$rowg["aog"]."</td>";
217
218                        echo "\n\t<td>";
219                        if ($showkey) {
220                                echo "<span class='key'>".$rowg["gebaeudefunktion"]."</span>&nbsp;";
221                        }
222                        echo $rowg["bezeichner"]."</td>";
223
224                        echo "\n\t<td>";
225                        if ($showkey) {
226                                echo "<span class='key'>".$rowg["bauweise"]."</span>&nbsp;";
227                        }
228                        echo $rowg["bauweise_beschreibung"]."</td>";
229
230                        echo "\n\t<td class='nwlink noprint'>";
231                        $bezieh=$rowg["beziehungsart"];         
232                        if (!$bezieh == "" ) {
233                                $gmllag=$rowg["beziehung_zu"];
234                                switch ($bezieh) {
235                                        case "hat":                     // *P*seudonummer
236                                                echo "\n\t\t<a title='Lagebezeichnung' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag;
237                                                if ($idanzeige) {echo "&amp;id=j";}
238                                                echo "&amp;ltyp=p'>lfd-Nr</a>";
239                                                break;
240                                        case "zeigtAuf":        // *M*it HausNr
241                                                echo "\n\t\t<a title='Lagebezeichnung' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag;
242                                                if ($idanzeige) {echo "&amp;id=j";}
243                                                echo "&amp;ltyp=m'>Haus-Nr</a>";
244                                                break;
245                                        default:
246                                                echo "<p>unbekannte Beziehungsart ".$bezieh."</p>";
247                                                break;
248                                }
249                        }                       
250                        echo "\n\t</td>";
251                echo "\n</tr>";
252        } // Footer
253        if ($gebnr == 0) {
254                echo "\n</table>";
255                echo "<p class='err'><br>Keine Geb&auml;ude auf diesem Flurst&uuml;ck.<br>&nbsp;</p>";
256        } else {
257                echo "\n<tr>";
258                        echo "\n\t<td>Summe:</td>"; // 1
259                        echo "\n\t<td class='fla sum'>".number_format($gebflsum,0,",",".")."&nbsp;&nbsp;&nbsp;&nbsp;m&#178;</td>";
260                        echo "\n\t<td>&nbsp;</td>"; // 3
261                        echo "\n\t<td>&nbsp;</td>"; // 4
262                        echo "\n\t<td>&nbsp;</td>"; // 5
263                        echo "\n\t<td>&nbsp;</td>"; // 6
264                echo "\n</tr>";
265        echo "\n</table>";
266        $unbebaut = number_format(($flstflaeche - $gebflsum),0,",",".") . " m&#178;";         echo "\n<p>Flurst&uuml;cksfl&auml;che abz&uuml;glich Geb&auml;udefl&auml;che: <b>".$unbebaut."</b></p>";
267}
268
269?>
270<form action=''>
271        <div class='buttonbereich noprint'>
272        <hr>
273                <input type='button' name='back'  value='&lt;&lt;' title='Zur&uuml;ck'  onClick='javascript:history.back()'>&nbsp;
274                <input type='button' name='print' value='Druck' title='Seite Drucken' onClick='window.print()'>&nbsp;
275                <input type='button' name='close' value='X' title='Fenster schlie&szlig;en' onClick='window.close()'>
276        </div>
277</form>
278
279<?php footer($gkz, $gmlid, $idumschalter, $idanzeige, $_SERVER['PHP_SELF']."?", $hilfeurl, "", $showkey); ?>
280
281</body>
282</html>
Note: See TracBrowser for help on using the repository browser.