source: trunk/info/info/alkis/alkisgebaeudenw.php @ 301

Revision 275, 12.4 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/*      alkisgebaeudenw.php - Gebaeudenachweis
3        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
4
5        Version:         22.11.2011  Feld ax_gebaeude.description ist entfallen, neue Spalte Zustand
6        30.11.2011
7                Fehlerkorrektur Gebaeude mit mehreren Adressen nicht mehrfach
8                Sonderfall lage aus PostNAS 05 entfernt, import_request_variables
9        2013-04-08  deprecated "import_request_variables" ersetzt
10*/
11session_start();
12//import_request_variables("G"); // php 5.3 deprecated, php 5.4 entfernt
13$cntget = extract($_GET);
14require_once("alkis_conf_location.php");
15if ($auth == "mapbender") {require_once($mapbender);} include("alkisfkt.php");
16if ($id == "j") {$idanzeige=true;} else {$idanzeige=false;}
17$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
18if ($keys == "j") {$showkey=true;} else {$showkey=false;}
19?>
20<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
21<html>
22<head>
23        <meta name="author" content="b600352" >
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$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
38if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
39
40// Flurstueck
41$sqlf ="SELECT f.name, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, f.zeitpunktderentstehung, ";
42$sqlf.="g.gemarkungsnummer, g.bezeichnung ";
43$sqlf.="FROM ax_flurstueck f ";
44$sqlf.="LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
45$sqlf.="WHERE f.gml_id= $1;";
46$v = array($gmlid);
47$resf = pg_prepare("", $sqlf);
48$resf = pg_execute("", $v);
49if (!$resf) {
50        echo "\n<p class='err'>Fehler bei Flurst&uuml;cksdaten.</p>\n";
51        if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqlf."<br>$1 = gml_id = '".$gmlid."'</p>";}
52}
53
54if ($rowf = pg_fetch_array($resf)) {
55        $gemkname=htmlentities($rowf["bezeichnung"], ENT_QUOTES, "UTF-8");
56        $gmkgnr=$rowf["gemarkungsnummer"];
57        $flurnummer=$rowf["flurnummer"];
58        $flstnummer=$rowf["zaehler"];
59        $nenner=$rowf["nenner"];
60        if ($nenner > 0) { // BruchNr
61                $flstnummer.="/".$nenner;
62        }
63        $flstflaeche = $rowf["amtlicheflaeche"] ;
64} else {
65        echo "<p class='err'>Fehler! Kein Treffer fuer gml_id=".$gmlid."</p>";
66}
67
68// Balken echo "<p class='geb'>ALKIS Flurst&uuml;ck (Geb&auml;ude) ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>\n";
69
70echo "\n<h2><img src='ico/Flurstueck.ico' width='16' height='16' alt=''> Flurst&uuml;ck (Geb&auml;ude)</h2>\n";
71
72// Kennzeichen in Rahmen
73echo "\n<table class='outer'>\n<tr>\n<td>";
74        echo "\n\t<table class='kennzfs' title='Flurst&uuml;ckskennzeichen'>";
75                echo "\n\t<tr>";
76                        echo "\n\t\t<td class='head'>Gmkg</td>";
77                        echo "\n\t\t<td class='head'>Flur</td>";
78                        echo "\n\t\t<td class='head'>Flurst-Nr.</td>";
79                echo "\n\t</tr>";
80                echo "\n\t<tr>";
81                        echo "\n\t\t<td title='Gemarkung'>";
82                        if  ($showkey) {echo "<span class='key'>".$gmkgnr."</span><br>";}
83                        echo $gemkname."&nbsp;</td>";
84                        echo "\n\t\t<td title='Flurnummer'>".$flurnummer."</td>";
85                        echo "\n\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>";
86                echo "\n\t</tr>";
87        echo "\n\t</table>";
88echo "\n</td>\n<td>";
89
90// Links zu anderen Nachweisen
91echo "\n\t<p class='nwlink noprint'>";
92        echo "\n\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
93        if ($idanzeige) {echo "&amp;id=j";}
94        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>";
95echo "\n\t</p>";
96if ($idanzeige) {linkgml($gkz, $gmlid, "Flurst&uuml;ck"); }
97echo "\n\t</td>\n</tr>\n</table>";
98// Ende Seitenkopf
99
100echo "\n<p class='fsd'>Flurst&uuml;cksfl&auml;che: <b>".number_format($flstflaeche,0,",",".") . " m&#178;</b></p>";
101
102echo "\n\n<h3><img src='ico/Haus.ico' width='16' height='16' alt=''> Geb&auml;ude</h3>";
103echo "\n<p>.. auf oder an dem Flurst&uuml;ck. Ermittelt durch Verschneidung der Geometrie.</p>";
104
105// G e b a e u d e
106$sqlg ="SELECT g.gml_id, g.name, g.bauweise, g.gebaeudefunktion, ";
107$sqlg.="h.bauweise_beschreibung, u.bezeichner, g.zustand, z.bezeichner AS bzustand, ";
108
109// Gebaeudeflaeche komplett auch ausserhalb des FS
110$sqlg.="round(area(g.wkb_geometry)::numeric,2) AS gebflae, ";
111
112// wie viel vom GEB liegt im FS?
113$sqlg.="round(st_area(ST_Intersection(g.wkb_geometry,f.wkb_geometry))::numeric,2) AS schnittflae, ";
114
115// liegt das GEB komplett im FS?
116$sqlg.="st_within(g.wkb_geometry,f.wkb_geometry) as drin ";
117
118// FS und GEB geometrisch verschneiden
119$sqlg.="FROM ax_flurstueck f, ax_gebaeude g ";
120
121// Entschluesseln
122$sqlg.="LEFT JOIN ax_gebaeude_bauweise h ON g.bauweise = h.bauweise_id ";
123$sqlg.="LEFT JOIN ax_gebaeude_funktion u ON g.gebaeudefunktion = u.wert ";
124$sqlg.="LEFT JOIN ax_gebaeude_zustand z ON g.zustand = z.wert ";
125$sqlg.="WHERE f.gml_id= $1 "; // ID des akt. FS
126
127// "within" liefert nur Gebaeude, die komplett im Flurstueck liegen
128// "intersects" liefert ueberlappende Flaechen
129$sqlg.="AND st_intersects(g.wkb_geometry,f.wkb_geometry) = true ";
130
131// RLP: keine Relationen zu Nebengebaeuden:
132// auf Qualifizierung verzichten, sonst werden NebengebÀude nicht angezeigt
133        //$sqlg.="AND (v.beziehungsart='zeigtAuf' OR v.beziehungsart='hat') ";
134$sqlg.="ORDER BY schnittflae DESC;";
135
136$v = array($gmlid);
137$resg = pg_prepare("", $sqlg);
138$resg = pg_execute("", $v);
139if (!$resg) {
140        echo "\n<p class='err'>Keine Geb&auml;ude ermittelt.</p>\n";
141        if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqlg."<br>$1 = gml_id = '".$gmlid."'</p>";}
142}
143$gebnr=0;
144echo "\n<hr>\n<table class='geb'>";
145        // T-Header
146        echo "\n<tr>\n";
147                echo "\n\t<td class='head' title='ggf. Geb&auml;udename'>Name</td>";
148                echo "\n\t<td class='head fla' title='Schnittsfl&auml;che'>Fl&auml;che</td>";
149                echo "\n\t<td class='head' title='Geb&auml;udefl&auml;che'>&nbsp;</td>";
150                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>";
151                echo "\n\t<td class='head' title='Bauweise (Schl&uuml;ssel und Beschreibung)'>Bauweise</td>";
152                echo "\n\t<td class='head' title='Zustand (Schl&uuml;ssel und Beschreibung)'>Zustand</td>";                 echo "\n\t<td class='head nwlink' title='Lagebezeichnung mit Stra&szlig;e und Hausnummer'>Lage</td>";
153                echo "\n\t<td class='head nwlink' title='Link zu den kompletten Hausdaten'>Haus</td>";
154        echo "\n</tr>";
155        // T-Body
156        while($rowg = pg_fetch_array($resg)) {
157                $gebnr = $gebnr + 1;
158// ++ ToDo:
159// Die Zeilen abwechselnd verschieden einfÀrben
160// Angrenzend anders einfÀrben
161
162                $ggml=$rowg["gml_id"];
163                $gebflsum = $gebflsum + $rowg["schnittflae"];
164                $skey=$rowg["lage"]; // Strassenschluessel             
165                $gnam=$rowg["name"];
166                $gzus=$rowg["zustand"];
167                $gzustand=$rowg["bzustand"];
168
169                echo "\n<tr>";
170                        echo "\n\t<td>";
171                                if ($gnam != "") {echo "<span title='Geb&auml;udename'>".$gnam."</span><br>";}
172                        echo "\n\t</td>";
173
174                        if ($rowg["drin"] == "t") { // 3 komplett enthalten
175                                echo "\n\t<td class='fla'>".$rowg["schnittflae"]." m&#178;</td>";
176                                echo "\n\t<td>&nbsp;</td>";
177                        } else {
178                if ($rowg["schnittflae"] == "0.00") { // angrenzend
179                                        echo "\n\t<td class='fla'>&nbsp;</td>";
180                                        echo "\n\t<td>angrenzend</td>";
181                                } else { // Teile enthalten
182                                        echo "\n\t<td class='fla'>".$rowg["schnittflae"]." m&#178;</td>";
183                                        echo "\n\t<td>(von ".$rowg["gebflae"]." m&#178;)</td>";
184                                }
185                        }
186                        echo "\n\t<td>";
187                        if ($showkey) {echo "<span class='key'>".$rowg["gebaeudefunktion"]."</span>&nbsp;";}
188                        echo $rowg["bezeichner"]."</td>";
189
190                        echo "\n\t<td>";
191                        if ($showkey) {echo "<span class='key'>".$rowg["bauweise"]."</span>&nbsp;";}
192                        echo $rowg["bauweise_beschreibung"]."&nbsp;</td>";
193
194                        echo "\n\t<td>";
195                        if ($showkey) {echo "<span class='key'>".$gzus."</span>&nbsp;";}
196                        echo $gzustand."&nbsp;</td>";
197
198                        echo "\n\t<td class='nwlink noprint'>";
199
200                        // 0 bis N Lagebezeichnungen mit Haus- oder Pseudo-Nummer, alle in ein TD zu EINEM GebÀude
201                        // HAUPTgebÀude
202                        $sqll ="SELECT 'm' AS ltyp, v.beziehung_zu, s.lage, s.bezeichnung, l.hausnummer, '' AS laufendenummer ";
203                        $sqll.="FROM alkis_beziehungen v ";
204                        $sqll.="JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu=l.gml_id ";
205                        $sqll.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage ";
206                        $sqll.="WHERE v.beziehungsart = 'zeigtAuf' AND v.beziehung_von = $1 ";
207                        $sqll.="UNION ";
208                        // oder NEBENgebÀude
209                        $sqll.="SELECT 'p' AS ltyp, v.beziehung_zu, s.lage, s.bezeichnung, l.pseudonummer AS hausnummer, l.laufendenummer ";
210                        $sqll.="FROM alkis_beziehungen v ";
211                        $sqll.="JOIN ax_lagebezeichnungmitpseudonummer l ON v.beziehung_zu=l.gml_id ";
212                        $sqll.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage ";                         $sqll.="WHERE v.beziehungsart = 'hat' AND v.beziehung_von = $1 "; // ID des Hauses"
213               
214                        $sqll.="ORDER BY bezeichnung, hausnummer ";
215               
216                        $v = array($ggml);
217                        $resl = pg_prepare("", $sqll);
218                        $resl = pg_execute("", $v);
219                        if (!$resl) {
220                                echo "\n<p class='err'>Fehler bei Lage mit HsNr.</p>\n";
221                                if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sqll."<br>$1 = gml_id = '".$gmlid."'</p>";}
222                        }
223                        while($rowl = pg_fetch_array($resl)) { // LOOP: Lagezeilen
224                                $ltyp=$rowl["ltyp"]; // Lagezeilen-Typ
225                                $skey=$rowl["lage"]; // Str.-Schluessel
226                                $snam=htmlentities($rowl["bezeichnung"], ENT_QUOTES, "UTF-8"); // -Name
227                                $hsnr=$rowl["hausnummer"];
228                                $hlfd=$rowl["laufendenummer"];
229                                $gmllag=$rowl["beziehung_zu"];
230                                if ($ltyp == "p") {
231                                        $lagetitl="NebengebÀude - Pseudonummer";
232                                        $lagetxt="Nebengeb&auml;ude Nr. ".$hlfd;
233                                } else {
234                                        $lagetitl="HauptgabÀude - Hausnummer";
235                                        $lagetxt=$snam."&nbsp;".$hsnr;
236                                }
237                                echo "\n\t\t<img src='ico/Lage_mit_Haus.ico' width='16' height='16' alt=''>&nbsp;";
238                                if ($showkey) {echo "<span class='key'>(".$skey.")</span>&nbsp;";}                     
239                                echo "\n\t\t<a title='".$lagetitl."' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag."&amp;ltyp=".$ltyp;
240                                        if ($idanzeige) {echo "&amp;id=j";}
241                                        if ($showkey)   {echo "&amp;showkey=j";}
242                                echo "'>".$lagetxt."</a>";
243                                if ($idanzeige) {linkgml($gkz, $gmllag, "Lage"); }
244                                echo "<br>";
245                        } // Ende Loop Lagezeilen m.H.
246
247                        echo "\n\t</td>";
248
249                        echo "\n\t<td class='nwlink noprint'>";
250                                echo "\n\t\t<a title='Daten zum Geb&auml;ude-Objekt' href='alkishaus.php?gkz=".$gkz."&amp;gmlid=".$ggml;
251                                if ($idanzeige) {echo "&amp;id=j";}
252                                if ($showkey)   {echo "&amp;showkey=j";}
253                                echo "'><img src='ico/Haus.ico' width='16' height='16' alt=''></a>";
254                        echo "\n\t</td>";
255
256                echo "\n</tr>";
257        } // Footer
258        if ($gebnr == 0) {
259                echo "\n</table>";
260                echo "<p class='err'><br>Keine Geb&auml;ude auf diesem Flurst&uuml;ck.<br>&nbsp;</p>";
261        } else {
262                echo "\n<tr>";
263                        echo "\n\t<td>Summe:</td>"; // 1
264                        echo "\n\t<td class='fla sum'>".number_format($gebflsum,0,",",".")."&nbsp;&nbsp;&nbsp;&nbsp;m&#178;</td>";
265                        echo "\n\t<td>&nbsp;</td>"; // 3
266                        echo "\n\t<td>&nbsp;</td>"; // 4
267                        echo "\n\t<td>&nbsp;</td>"; // 5
268                        echo "\n\t<td>&nbsp;</td>"; // 6
269                        echo "\n\t<td>&nbsp;</td>"; // 7
270                echo "\n</tr>";
271        echo "\n</table>";
272        $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><br>";
273}
274
275?>
276
277<form action=''>
278        <div class='buttonbereich noprint'>
279        <hr>
280                <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.ico" width="16" height="16" alt="zur&uuml;ck" /></a>&nbsp;
281                <a title="Drucken" href='javascript:window.print()'><img src="ico/print.ico" width="16" height="16" alt="Drucken" /></a>&nbsp;
282<!--    <a title="Export als CSV" href='javascript:ALKISexport()'><img src="ico/download.ico" width="16" height="16" alt="Export" /></a>&nbsp;
283                <a title="Seite schlie&szlig;en" href="javascript:window.close()"><img src="ico/close.ico" width="16" height="16" alt="Ende" /></a>     -->
284        </div>
285</form>
286
287<?php footer($gmlid, $_SERVER['PHP_SELF']."?", ""); ?>
288
289</body>
290</html>
Note: See TracBrowser for help on using the repository browser.