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

Revision 372, 14.5 KB checked in by astrid.emde, 8 years ago (diff)

patch eingespielt

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