source: trunk/info/info/alkis/alkishaus.php @ 306

Revision 306, 14.8 KB checked in by frank.jaeger, 10 years ago (diff)

ALKIS-Auskunft, neues Modul "Straße"

RevLine 
[132]1<?php
[275]2/*      alkishaus.php - Daten zum ALKIS-GebÀude-Objekt
[132]3        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
4
[306]5        Version:         2011-11-30 NEU! Variante von alkisgebaeudenw: Aufruf fÃŒr EIN Haus, nicht fÃŒr ein FS
6        2011-01-31 ax_gebaeude.weiteregebaeudefunktion ist jetzt Array
7        2013-04-08  deprecated "import_request_variables" ersetzt
8
9        ToDo:
10        - sinnvolle Sortierung und Gruppierung der Felder
11        - geometrische Suche nach FS, auf denen das Haus steht
12        - Template im WMS auf Ebene GebÀude hierhin verknÃŒpfen.
13        - Auch diese Relationen abbilden:
[132]14                ax_gebaeude >gehoertZu> ax_gebaeude  (ringförmige Verbindung GebÀudekomplex)
[246]15                ax_gebaeude (umschliesst) ax_bauteil
[132]16                ax_gebaeude >gehoert> ax_person  (Ausnahme) */
[306]17session_start();
[132]18$cntget = extract($_GET);
[306]19require_once("alkis_conf_location.php");
[275]20if ($auth == "mapbender") {require_once($mapbender);} include("alkisfkt.php");
[132]21if ($id == "j") {$idanzeige=true;} else {$idanzeige=false;}
[306]22$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
23if ($keys == "j") {$showkey=true;} else {$showkey=false;}
24if ($allfld == "j") {$allefelder=true;} else {$allefelder=false;}
[132]25?>
[306]26<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
[132]27<html>
28<head>
29        <meta name="author" content="b600352" >
30        <meta http-equiv="cache-control" content="no-cache">
31        <meta http-equiv="pragma" content="no-cache">
[198]32        <meta http-equiv="expires" content="0">
[132]33        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
34        <title>ALKIS Daten zum Haus</title>
35        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
36        <link rel="shortcut icon" type="image/x-icon" href="ico/Haus.ico">
37        <style type='text/css' media='print'>
38                .noprint {visibility: hidden;}
39        </style>
40</head>
41<body>
42<?php
43
44$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
[306]45if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
46
[132]47// // G e b a e u d e
48$sqlg ="SELECT g.gml_id, g.name, g.bauweise, g.gebaeudefunktion, g.anzahlderoberirdischengeschosse AS aog, g.anzahlderunterirdischengeschosse AS aug, ";
[306]49$sqlg.="g.lagezurerdoberflaeche, g.dachgeschossausbau, g.zustand, g.weiteregebaeudefunktion, g.dachform, g.hochhaus, g.objekthoehe, g.geschossflaeche, g.grundflaeche, g.umbauterraum, g.baujahr, g.dachart, g.qualitaetsangaben, ";
[132]50$sqlg.="h.bauweise_beschreibung, u.bezeichner AS bfunk, z.bezeichner AS bzustand, ";
51// "w.bezeichner AS bweitfunk, ";
[306]52$sqlg.="d.bezeichner AS bdach, round(area(g.wkb_geometry)::numeric,2) AS gebflae "; $sqlg.="FROM ax_gebaeude g ";
53
54// Entschluesseln
55$sqlg.="LEFT JOIN ax_gebaeude_bauweise h ON g.bauweise = h.bauweise_id ";
[132]56$sqlg.="LEFT JOIN ax_gebaeude_funktion u ON g.gebaeudefunktion = u.wert ";
[306]57$sqlg.="LEFT JOIN ax_gebaeude_zustand z ON g.zustand = z.wert ";
[132]58$sqlg.="LEFT JOIN ax_gebaeude_dachform d ON g.dachform = d.wert ";
59
60$sqlg.="WHERE g.gml_id= $1 "; // ID des Hauses
[306]61
62$v = array($gmlid);
63$resg = pg_prepare("", $sqlg);
[132]64$resg = pg_execute("", $v);
[306]65if (!$resg) {
[132]66        echo "\n<p class='err'>Fehler bei Geb&auml;ude.<br>".pg_last_error()."</p>\n";
67        if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sqlg."<br>$1 = gml_id = '".$gmlid."'</p>";}
68}
69
[275]70// Balken echo "<p class='geb'>ALKIS Haus ".$gmlid."&nbsp;</p>\n"; // +++ Kennzeichen = ?
[132]71
[306]72echo "\n<h2><img src='ico/Haus.ico' width='16' height='16' alt=''> Haus (Geb&auml;ude)</h2>\n";
[132]73
[306]74// Kennzeichen in Rahmen
[132]75// - Welches Kennzeichen zum Haus ? if ($idanzeige) {linkgml($gkz, $gmlid, "Haus"); }
[306]76echo "\n<hr>";
[132]77// Umschalter: auch leere Felder ausgeben?
[306]78echo "<p class='nwlink noprint'>";
79echo "<a class='nwlink' href='".$_SERVER['PHP_SELF']."?gkz=".$gkz."&amp;gmlid=".$gmlid;
80        if ($showkey) {echo "&amp;showkey=j";} else {echo "&amp;showkey=n";}
81        if ($idanzeige) {echo "&amp;id=j";} else {echo "&amp;id=n";}
82        if ($allefelder) {echo "&amp;allfld=n'>nur Felder mit Inhalt";}
83        else {echo "&amp;allfld=j'>auch leere Felder";}
84echo "</a></p>";
85 while($rowg = pg_fetch_array($resg)) { // Als Schleife, kann aber nur EIN Haus sein.
86        $gebnr++;
87        echo "\n<table class='geb'>";
88        echo "\n<tr>\n";                 echo "\n\t<td class='head' title=''>Attribut</td>";                 echo "\n\t<td class='head' title=''>Wert</td>";
89        echo "\n</tr>";
90
91        $aog=$rowg["aog"];
92        $aug=$rowg["aug"];
93        $hoh=$rowg["hochhaus"];
[132]94        $nam=$rowg["name"]; // Gebaeude-Name
[306]95        $bfunk=$rowg["bfunk"];
96        $baw=$rowg["bauweise"];
[132]97        $bbauw=$rowg["bauweise_beschreibung"];
[306]98        $ofl=$rowg["lagezurerdoberflaeche"];
99        $dga=$rowg["dachgeschossausbau"];
100        $zus=$rowg["zustand"];
101        $zustand=$rowg["bzustand"];
102        $wgf=$rowg["weiteregebaeudefunktion"];
103        $daf=$rowg["dachform"];
104        $dach=$rowg["bdach"];
105        $hho=$rowg["objekthoehe"];
[132]106        $gfl=$rowg["geschossflaeche"];
[306]107        $grf=$rowg["grundflaeche"];
108        $ura=$rowg["umbauterraum"];
109        $bja=$rowg["baujahr"];
110        $daa=$rowg["dachart"];
111        $qag=$rowg["qualitaetsangaben"];
112
113        if (($nam != "") OR $allefelder) {
114                echo "\n<tr>";
115                        echo "\n\t<td title='\"Name\" ist der Eigenname oder die Bezeichnung des Geb&auml;udes.'>Name</td>";
116                        echo "\n\t<td>";
117                        echo $nam."</td>";
118                echo "\n</tr>";
119        }
120
121        // 0 bis N Lagebezeichnungen mit Haus- oder Pseudo-Nummer
122        // HAUPTgebÀude
[132]123        $sqll ="SELECT 'm' AS ltyp, v.beziehung_zu, s.lage, s.bezeichnung, l.hausnummer, '' AS laufendenummer ";
[306]124        $sqll.="FROM alkis_beziehungen v ";
[132]125        $sqll.="JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu=l.gml_id ";
126        $sqll.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage ";
[306]127        $sqll.="WHERE v.beziehungsart = 'zeigtAuf' AND v.beziehung_von = $1 ";
128        $sqll.="UNION ";
129        // oder NEBENgebÀude
130        $sqll.="SELECT 'p' AS ltyp, v.beziehung_zu, s.lage, s.bezeichnung, l.pseudonummer AS hausnummer, l.laufendenummer ";
131        $sqll.="FROM alkis_beziehungen v ";
132        $sqll.="JOIN ax_lagebezeichnungmitpseudonummer l ON v.beziehung_zu=l.gml_id ";
[132]133        $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"
134
135        $sqll.="ORDER BY bezeichnung, hausnummer ";
136
[306]137        $v = array($gmlid);
138        $resl = pg_prepare("", $sqll);
139        $resl = pg_execute("", $v);
[132]140        if (!$resl) {
141                echo "\n<p class='err'>Fehler bei Lage mit HsNr.</p>\n";
[306]142                if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sqll."<br>$1 = gml_id = '".$gmlid."'</p>";}
143        }
144        $zhsnr=0;
145        while($rowl = pg_fetch_array($resl)) { // LOOP: Lagezeilen
146                $zhsnr++;
[132]147                $ltyp=$rowl["ltyp"]; // Lagezeilen-Typ
148                $skey=$rowl["lage"]; // Str.-Schluessel
149                $snam=htmlentities($rowl["bezeichnung"], ENT_QUOTES, "UTF-8"); // -Name
150                $hsnr=$rowl["hausnummer"];
151                $hlfd=$rowl["laufendenummer"];
152                $gmllag=$rowl["beziehung_zu"];
[306]153
154                        if ($zhsnr == 1) {
155                                echo "\n<tr>\n\t<td title='Lage mit Hausnummer oder Pseudonummer'>Adresse</td>";
156                                echo "\n\t<td>";
157                        }
158                        echo "\n\t\t<img src='ico/Lage_mit_Haus.ico' width='16' height='16' alt=''>&nbsp;";
159                        if ($showkey) {echo "<span class='key'>(".$skey.")</span>&nbsp;";}                     
160                        echo "\n\t\t<a title='Hausnummer' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag."&amp;ltyp=".$ltyp;
161                                if ($idanzeige) {echo "&amp;id=j";}
162                        echo "'>";
163                                echo $snam."&nbsp;".$hsnr;
164                                if ($ltyp == "p") { echo ", lfd.Nr ".$hlfd;}
165                        echo "</a>";
166                        if ($idanzeige) {linkgml($gkz, $gmllag, "Lage"); }
167                        echo "<br>";
168        } // Ende Loop Lagezeilen m.H.
169
170        if ($zhsnr > 0) {
171                echo "\n\t</td>\n</tr>";
172        }
173
174                echo "\n<tr>";
175                        echo "\n\t<td title='\"Geb&auml;udefunktion\" ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des Geb&auml;udes'>Funktion</td>";
176                        echo "\n\t<td>";
177                        if ($showkey) {echo "<span class='key'>".$rowg["gebaeudefunktion"]."</span>&nbsp;";}
178                        echo $bfunk."</td>";
179                echo "\n</tr>";
180
181        if ($baw != "" OR $allefelder) {
182                echo "\n<tr>";
183                        echo "\n\t<td title='\"Bauweise\" ist die Beschreibung der Art der Bauweise.'>Bauweise</td>";
[132]184                        echo "\n\t<td>";
185                        if ($showkey) {echo "<span class='key'>".$baw."</span>&nbsp;";}
186                        echo $bbauw."</td>";
187                echo "\n</tr>";
188        }
[306]189
190        if ($aog != "" OR $allefelder) {
191                echo "\n<tr>";
[132]192                        echo "\n\t<td title='Anzahl oberirdischer Geschosse'>Geschosse</td>";
[306]193                        echo "\n\t<td>".$aog."</td>";                 echo "\n</tr>";
[132]194        }
195
196        if ($aug != "" OR $allefelder) {
[306]197                echo "\n<tr>";
198                        echo "\n\t<td title='Anzahl unterirdischer Geschosse'>U-Geschosse</td>";
199                        echo "\n\t<td>".$aug."</td>";                 echo "\n</tr>";
200        }
[132]201
[306]202        if ($hoh != "" OR $allefelder) {
203                echo "\n<tr>";
204                        echo "\n\t<td title='\"Hochhaus\" ist ein Geb&auml;ude, das nach Geb&auml;udeh&ouml;he und Auspr&auml;gung als Hochhaus zu bezeichnen ist. F&uuml;r Geb&auml;ude im Geschossbau gilt dieses i.d.R. ab 8 oberirdischen Geschossen, f&uuml;r andere Geb&auml;ude ab einer Geb&auml;udeh&ouml;he von 22 m.'>Hochhaus</td>";
205                        echo "\n\t<td>".$hoh."</td>";                 echo "\n</tr>";
206        }
207
[132]208        if ($ofl != "" OR $allefelder) {
[306]209                echo "\n<tr>";
210                        echo "\n\t<td title='\"Lage zur Erdoberfl&auml;che\" ist die Angabe der relativen Lage des Geb&auml;udes zur Erdoberfl&auml;che. Diese Attributart wird nur bei nicht ebenerdigen Geb&auml;uden gef&uuml;hrt.'>Lage zur Erdoberfl&auml;che</td>";
211                        echo "\n\t<td>";
212                        if ($showkey) {echo "<span class='key'>".$ofl."</span>&nbsp;";}
213                        switch ($ofl) {
214                                case 1200: echo "Unter der Erdoberfl&auml;che"; break;
[132]215                                // "Unter der Erdoberfl&auml;che" bedeutet, dass sich das Geb&auml;ude unter der Erdoberfl&auml;che befindet
[306]216                                case 1400: echo "Aufgest&auml;ndert"; break;
217                                // "Aufgest&auml;ndert" bedeutet, dass ein Geb&auml;ude auf St&uuml;tzen steht
218                                case "": echo "&nbsp;"; break;                                 default: echo "** Unbekannte Lage zur Erdoberfl&auml;che '".$ofl."' **"; break;
219                        }
220                        echo "&nbsp;</td>";
221                echo "\n</tr>";
[132]222        }
[306]223
[132]224        if ($dga != "" OR $allefelder) { // keine Schluesseltabelle in DB
[306]225                echo "\n<tr>";
[132]226                        echo "\n\t<td title='\"Dachgeschossausbau\" ist ein Hinweis auf den Ausbau bzw. die Ausbauf&auml;higkeit des Dachgeschosses.'>Dachgeschossausbau</td>";
[306]227                        echo "\n\t<td>";
[132]228                        if ($showkey) {echo "<span class='key'>".$dga."</span>&nbsp;";}                         switch ($dga) {
[306]229                                case 1000: echo "Nicht ausbauf&auml;hig"; break;
230                                case 2000: echo "Ausbauf&auml;hig"; break;
231                                case 3000: echo "Ausgebaut"; break;
[132]232                                case 4000: echo "Ausbauf&auml;higkeit unklar"; break;
233                                case "": echo "&nbsp;"; break;                                 default: echo "** Unbekannter Wert Dachgeschossausbau '".$dga."' **"; break;
[306]234                        }
235                        echo "</td>";
236                echo "\n</tr>";
237        }
238
[132]239        if ($zus != "" OR $allefelder) {
[306]240                echo "\n<tr>";
[132]241                        echo "\n\t<td title='\"Zustand\" beschreibt die Beschaffenheit oder die Betriebsbereitschaft von \"Geb&auml;ude\". Diese Attributart wird nur dann optional gef&uuml;hrt, wenn der Zustand des Geb&auml;udes vom nutzungsf&auml;higen Zustand abweicht.'>Zustand</td>";
[306]242                        echo "\n\t<td>";
[132]243                        if ($showkey) {echo "<span class='key'>".$zus."</span>&nbsp;";}
244                        echo $zustand."</td>";
[306]245                echo "\n</tr>";
246        }
247
248        if ($wgf != "" OR $allefelder) {
[132]249                echo "\n<tr>";
[306]250                        echo "\n\t<td title='\"Weitere Geb&auml;udefunktion\" ist die Funktion, die ein Geb&auml;ude neben der dominierenden Geb&auml;udefunktion hat.'>Weitere Geb&auml;udefunktionen</td>";
251                        echo "\n\t<td>";
252
253                        if ($wgf != "") {
254                                // weiteregebaeudefunktion ist jetzt ein Array
255                                $wgflist=trim($wgf, "{}"); // kommagetrennte(?) Liste der Schluesselwerte
[132]256                                //$wgfarr=explode(",", $wgflist);
[306]257                                //for each ...
[132]258                                $sqlw="SELECT wert, bezeichner FROM ax_gebaeude_weiterefunktion WHERE wert in ( $1 ) ORDER BY wert;";
259                                $v = array($wgflist);
[306]260                                $resw = pg_prepare("", $sqlw);
261                                $resw = pg_execute("", $v);
262                                if (!$resw) {
263                                        echo "\n<p class='err'>Fehler bei Geb&auml;ude - weitere Funktion.</p>\n";
264                                        if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sqlw."<br>$1 = Werteliste = '".$wgflist."'</p>";}
[132]265                                }
[306]266                                $zw=0;
[132]267                                while($roww = pg_fetch_array($resw)) { // LOOP: w.Funktion
[306]268                                        $wwert=$roww["wert"];
269                                        $wbez=$roww["bezeichner"];
270                                        if ($zw > 0) {echo ", ";} // Liste oder Zeile? echo "<br>";
271                                        if ($showkey) {echo "<span class='key'>".$wwert."</span>&nbsp;";}
272                                        echo $wbez;
273                                        $zw++;
274                           }
275                        }
[275]276                        echo "</td>";
277                echo "\n</tr>";
278        }
279
280        if ($daf != "" OR $allefelder) {
[306]281                echo "\n<tr>";
282                        echo "\n\t<td title='\"Dachform\" beschreibt die charakteristische Form des Daches.'>Dachform</td>";
283                        echo "\n\t<td>";
284                        if ($showkey) {echo "<span class='key'>".$daf."</span>&nbsp;";}
285                        echo $dach."</td>";
286                echo "\n</tr>";
[275]287        }
[306]288
289        if ($hho != "" OR $allefelder) {
290                echo "\n<tr>";
291                        echo "\n\t<td title='\"Objekth&ouml;he\" ist die H&ouml;hendifferenz in [m] zwischen dem h&ouml;chsten Punkt der Dachkonstruktion und der festgelegten Gel&auml;ndeoberfl&auml;che des Geb&auml;udes.'>Objekth&ouml;he</td>";
292                        echo "\n\t<td>";
293                        echo $hho."</td>";
294                echo "\n</tr>";
295        }
296
[132]297        if ($gfl != "" OR $allefelder) {
[306]298                echo "\n<tr>";
[132]299                        echo "\n\t<td title='\"Geschossfl&auml;che\" ist die Geb&auml;udegeschossfl&auml;che in [qm].'>Geschossfl&auml;che</td>";
300                        echo "\n\t<td>";
[306]301                        if ($gfl != "") {
302                                echo $gfl." m&#178;";
303                        }
304                        echo "</td>";
305                echo "\n</tr>";
[132]306        }
[306]307
[132]308        if ($grf != "" OR $allefelder) {
[306]309                echo "\n<tr>";
310                        echo "\n\t<td title='\"Grundfl&auml;che\" ist die Geb&auml;udegrundfl&auml;che in [qm].'>Grundfl&auml;che</td>";
311                        echo "\n\t<td>";
312                        if ($grf != "") {
313                                echo $grf." m&#178;";
[132]314                        }
[306]315                echo "\n</tr>";
316        }
317
318        if ($ura != "" OR $allefelder) {
319                echo "\n<tr>";
320                        echo "\n\t<td title='\"Umbauter Raum\" ist der umbaute Raum [Kubikmeter] des Geb&auml;udes.'>Umbauter Raum</td>";
321                        echo "\n\t<td>";
322                        echo $ura."</td>";
323                echo "\n</tr>";
324        }
[132]325
[306]326        if ($bja != "" OR $allefelder) {
327                echo "\n<tr>";
328                        echo "\n\t<td title='\"Baujahr\" ist das Jahr der Fertigstellung oder der baulichen Ver&auml;nderung des Geb&auml;udes.'>Baujahr</td>";
329                        echo "\n\t<td>";
[132]330                        echo $bja."</td>";
[306]331                echo "\n</tr>";
332        }
333
334        if ($daa != "" OR $allefelder) {
[132]335                echo "\n<tr>";
[306]336                        echo "\n\t<td title='\"Dachart\" gibt die Art der Dacheindeckung (z.B. Reetdach) an.'>Dachart</td>";
[132]337                        echo "\n\t<td>";
[306]338                        echo $daa."</td>";
339                echo "\n</tr>";
340        }
341
342        if ($qag != "" OR $allefelder) {
[132]343                echo "\n<tr>";
[306]344                        echo "\n\t<td title='Angaben zur Herkunft der Informationen (Erhebungsstelle). Die Information ist konform zu den Vorgaben aus ISO 19115 zu repr&auml;sentieren.'>Qualit&auml;tsangaben</td>";
[132]345                        echo "\n\t<td>";
[306]346                        echo $qag."</td>";
347                echo "\n</tr>";
348        }
349
350        echo "\n</table>";
[132]351}
[306]352if ($gebnr == 0) {echo "<p class='err'><br>Kein Geb&auml;ude gefunden<br>&nbsp;</p>";}
[132]353// ++ ToDo: Verschnitt mit FS
[306]354
355?>
356
357<form action=''>
358        <div class='buttonbereich noprint'>
[132]359        <hr>
[306]360                <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.ico" width="16" height="16" alt="zur&uuml;ck" /></a>&nbsp;
[132]361                <a title="Drucken" href='javascript:window.print()'><img src="ico/print.ico" width="16" height="16" alt="Drucken" /></a>&nbsp;
[306]362<!--    <a title="Export als CSV" href='javascript:ALKISexport()'><img src="ico/download.ico" width="16" height="16" alt="Export" /></a>&nbsp;
363                <a title="Seite schlie&szlig;en" href="javascript:window.close()"><img src="ico/close.ico" width="16" height="16" alt="Ende" /></a>     -->
364        </div>
365</form>
[132]366
367<?php footer($gmlid, $_SERVER['PHP_SELF']."?", ""); ?>
368
[306]369</body>
[132]370</html>
Note: See TracBrowser for help on using the repository browser.