source: trunk/info/info/alkisn/alkishaus.php @ 431

Revision 430, 19.9 KB checked in by frank.jaeger, 22 months ago (diff)

ALKIS-Auskunft angepasst an PHP 8

RevLine 
[362]1<?php
[427]2/*      alkishaus.php
[362]3
[427]4        ALKIS-Auskunft
5        Author: Frank JÀger, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo)
6
7        Daten zu EINEM ALKIS-GebÀude-Objekt
8
[362]9        Version:
[425]10        2016-02-24 Version fÃŒr norGIS-ALKIS-Import
[422]11        ....
12        2020-12-01 Darstellung der Datenerhebung, Klammern um SchlÃŒsselwerte
13        2020-12-02 Verschnitt GebÀude / FlurstÃŒcke
14        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF']
15        2020-12-15 Input-Validation und Strict Comparisation (===)
[425]16        2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÀche). Gemeinde in Adresse
[427]17        2022-01-13 Neue Functions LnkStf(), DsKy()
[430]18        2022-07-05 PHP 8.1: Connection verwenden bei "pg_prepare" und "pg_execute", keine NULL-Werte in String-Functions verwenden
[422]19ToDo:
[427]20        - per Relation dazugehörige Bauwerke (z.B. Überdachung) suchen, ax_sonstigesbauwerkodersonstigeeinrichtung.gehoertzu
[362]21        - Template im WMS auf Ebene GebÀude hierhin verknÃŒpfen.
22*/
[422]23ini_set("session.cookie_httponly", 1);
[362]24session_start();
[402]25$allfld = "n"; $showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren
[387]26$cntget = extract($_GET); // Parameter in Variable umwandeln
27
28// strikte Validierung aller Parameter
[422]29if (isset($gmlid)) {
30        if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");}
31} else {
32        die("Fehlender Parameter");
33}
34if (isset($gkz)) {
35        if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
36} else {
37        die("Fehlender Parameter");
38}
[387]39if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
[422]40if ($showkey === "j") {$showkey=true;} else {$showkey=false;}
[387]41if (!preg_match('#^[j|n]{0,1}$#', $allfld)) {die ("Eingabefehler allfld");}
[422]42if ($allfld === "j") {$allefelder=true;} else {$allefelder=false;}
[402]43if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");}
[387]44
[422]45include "alkis_conf_location.php";
46include "alkisfkt.php";
47
[402]48echo <<<END
[377]49<!doctype html>
50<html lang="de">
[362]51<head>
[377]52        <meta charset="utf-8">
[387]53        <meta name="viewport" content="width=device-width, initial-scale=1.0">
[362]54        <title>ALKIS Daten zum Haus</title>
55        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
56        <link rel="shortcut icon" type="image/x-icon" href="ico/Haus.ico">
[387]57        <style type='text/css' media='print'> td.mittelspalte {width: 190px;} </style>
[362]58</head>
59<body>
[402]60END;
[422]61
62$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); }
[427]63$dbg=$debug;
[425]64if ($nodebug === "j") {$dbg=0;}
[362]65
[377]66$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkishaus.php'");
[387]67if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
[362]68
[427]69// G e b À u d e
[412]70// ... g.qualitaetsangaben,
[362]71$sqlg ="SELECT g.gml_id, g.name, g.bauweise, g.gebaeudefunktion, g.anzahlderoberirdischengeschosse AS aog, g.anzahlderunterirdischengeschosse AS aug,
[412]72g.lagezurerdoberflaeche, g.dachgeschossausbau, g.zustand, array_to_string(g.weiteregebaeudefunktion, ',') AS wgf, g.dachform, g.hochhaus, g.objekthoehe,
73g.geschossflaeche, g.grundflaeche, g.umbauterraum, g.baujahr, g.dachart,
74h.beschreibung AS bbauw, h.dokumentation AS dbauw, u.beschreibung AS bfunk, u.dokumentation AS dfunk, z.beschreibung AS zustandv, z.dokumentation AS zustandd, d.beschreibung AS bdach,
75a.beschreibung AS dgaus, o.beschreibung AS oflv, o.dokumentation AS ofld,
[377]76round(st_area(g.wkb_geometry)::numeric,2) AS gebflae
77FROM ax_gebaeude g
[412]78LEFT JOIN ax_bauweise_gebaeude h ON g.bauweise = h.wert
79LEFT JOIN ax_gebaeudefunktion u ON g.gebaeudefunktion = u.wert
80LEFT JOIN ax_zustand_gebaeude z ON g.zustand = z.wert
81LEFT JOIN ax_dachform d ON g.dachform = d.wert
82LEFT JOIN ax_dachgeschossausbau_gebaeude a ON g.dachgeschossausbau = a.wert
83LEFT JOIN ax_lagezurerdoberflaeche_gebaeude o ON g.lagezurerdoberflaeche = o.wert
[362]84WHERE g.gml_id= $1 AND g.endet IS NULL;";
85
86$v = array($gmlid);
[430]87$resg = pg_prepare($con, "", $sqlg);
88$resg = pg_execute($con, "", $v);
[362]89if (!$resg) {
[387]90        echo "\n<p class='err'>Fehler bei Geb&auml;ude.<br>".pg_last_error()."</p>";
[425]91        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqlg."<br>$1 = gml_id = '".$gmlid."'</p>";}
[362]92}
[425]93if ($dbg > 0) {
94        $zeianz=pg_num_rows($resg);
95        if ($zeianz > 1){
96                echo "\n<p class='err'>Die Abfrage liefert mehr als ein (".$zeianz.") Geb&auml;ude-Objekt!</p>";
97                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sqlg), ENT_QUOTES, "UTF-8")."</p>";}
98        }
99}
[362]100
101// Balken
[427]102echo "\n<p class='balken geb'>ALKIS Haus ".$gmlid."&nbsp;</p>"
103."\n<h2><img src='ico/Haus.png' width='16' height='16' alt=''> Haus (Geb&auml;ude)</h2>\n<hr>";
[362]104
[427]105echo "<p class='nwlink noprint'>" // Umschalter: auch leere Felder
106."Umschalten: <a class='nwlink' href='".selbstverlinkung()."?gkz=".$gkz."&amp;gmlid=".$gmlid.LnkStf();
107if ($allefelder) {
108        echo "&amp;allfld=n'>nur Felder mit Inhalt";
109} else {
110        echo "&amp;allfld=j'>auch leere Felder";
111}
[362]112echo "</a></p>";
113
[422]114if (!($rowg = pg_fetch_assoc($resg))) {
115        echo "\n<p class='err'><br>Kein Geb&auml;ude gefunden</p>";
116        die ("Abbruch");
117}
[373]118
[422]119echo "\n<table class='geb'>"
120."\n<tr>\n"
121        ."\n\t<td class='head' title=''>Attribut</td>"
122        ."\n\t<td class='head mittelspalte' title=''>Wert</td>"
123        ."\n\t<td class='head' title=''>"
124                ."\n\t\t<p class='erklk'>Erkl&auml;rung Kategorie</p>"
125                ."\n\t\t<p class='erkli'>Erkl&auml;rung Inhalt</p>"
126        ."\n\t</td>"
127."\n</tr>";
[362]128
[422]129$aog=$rowg["aog"];
130$aug=$rowg["aug"];
131$hoh=$rowg["hochhaus"];
[430]132if (is_null($rowg["name"])) {
133        $nam="";
134} else {
135        $nam=trim(trim($rowg["name"], "{}"), '"'); // GebÀude-Name ist ein Array.
136}
137
[422]138// Mehrfachbelegung theoretisch. Entklammern reicht. Mal mit und mal ohne "" drum.
139$kfunk=$rowg["gebaeudefunktion"];
140$bfunk=$rowg["bfunk"];
141$dfunk=$rowg["dfunk"];
[362]142
[422]143$baw=$rowg["bauweise"];
144$bbauw=$rowg["bbauw"];
145$dbauw=$rowg["dbauw"];
[362]146
[422]147$ofl=$rowg["lagezurerdoberflaeche"];
148$oflv=$rowg["oflv"];
149$ofld=$rowg["ofld"];
[362]150
[422]151$dga=$rowg["dachgeschossausbau"]; // Key
152$dgav=$rowg["dgaus"];           // Value
[362]153
[422]154$zus=$rowg["zustand"];          // Key
155$zusv=$rowg["zustandv"];        // Value
156$zusd=$rowg["zustandd"];        // Description
[362]157
[422]158$wgf=$rowg["wgf"];                      // Array-> kommagetr. Liste
[362]159
[422]160$daf=$rowg["dachform"];         // Key
161$dach=$rowg["bdach"];           // Value
[362]162
[422]163$hho=$rowg["objekthoehe"];
164$gfl=$rowg["geschossflaeche"];
165$grf=$rowg["grundflaeche"];
166$ura=$rowg["umbauterraum"];
167$bja=$rowg["baujahr"];
168$daa=$rowg["dachart"];
[362]169
[422]170if (($nam != "") OR $allefelder) {
171        echo "\n<tr>"
172                ."\n\t<td class='li'>Name</td>"
173                ."\n\t<td>".$nam."</td>"
174                ."\n\t<td>"
175                        ."\n\t\t<p class='erklk'>'Name' ist der Eigenname oder die Bezeichnung des Geb&auml;udes."
176                ."\n\t</td>"
177        ."\n</tr>";
178}
179
180// 0 bis N   L a g e bezeichnungen mit Haus- oder Pseudo-Nummer
181
182// HAUPTgebÀude
[425]183$sqll ="SELECT 'm' AS ltyp, lh.gml_id AS gmllag, sh.lage, sh.bezeichnung, lh.hausnummer, '' AS laufendenummer, ph.bezeichnung AS gemeinde
184FROM ax_gebaeude gh
[422]185JOIN ax_lagebezeichnungmithausnummer lh ON lh.gml_id=ANY(gh.zeigtauf)
[425]186JOIN ax_lagebezeichnungkatalogeintrag sh ON lh.kreis=sh.kreis AND lh.gemeinde=sh.gemeinde AND lh.lage=sh.lage
187LEFT JOIN ax_gemeinde ph ON lh.land=ph.land AND lh.regierungsbezirk=ph.regierungsbezirk AND lh.kreis=ph.kreis AND lh.gemeinde=ph.gemeinde ".UnqKatAmt("lh","ph")
188."WHERE gh.gml_id= $1 AND gh.endet IS NULL AND lh.endet IS NULL AND sh.endet IS NULL";
189
[422]190// oder NEBENgebÀude
191$sqll.=" UNION
[425]192SELECT 'p' AS ltyp, ln.gml_id AS gmllag, sn.lage, sn.bezeichnung, ln.pseudonummer AS hausnummer, ln.laufendenummer, pn.bezeichnung AS gemeinde
[422]193FROM ax_gebaeude gn
194JOIN ax_lagebezeichnungmitpseudonummer ln ON ln.gml_id=gn.hat
[425]195JOIN ax_lagebezeichnungkatalogeintrag sn ON ln.kreis=sn.kreis AND ln.gemeinde=sn.gemeinde AND ln.lage=sn.lage
196LEFT JOIN ax_gemeinde pn ON ln.land=pn.land AND ln.regierungsbezirk=pn.regierungsbezirk AND ln.kreis=pn.kreis AND ln.gemeinde=pn.gemeinde ".UnqKatAmt("ln","pn")
197."WHERE gn.gml_id= $1 AND gn.endet IS NULL AND ln.endet IS NULL AND sn.endet IS NULL ";
[422]198
199$sqll.="ORDER BY bezeichnung, hausnummer ;";
200
201$v = array($gmlid);
[430]202$resl = pg_prepare($con, "", $sqll);
203$resl = pg_execute($con, "", $v);
[422]204if (!$resl) {
205        echo "\n<p class='err'>Fehler bei Lage mit HsNr.</p>";
[425]206        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqll."<br>$1 = gml_id = '".$gmlid."'</p>";}
[422]207}
208$zhsnr=0;
209while($rowl = pg_fetch_assoc($resl)) { // LOOP: Lagezeilen
210        $zhsnr++;
211        $ltyp=$rowl["ltyp"]; // Lagezeilen-Typ
212        $skey=$rowl["lage"]; // Str.-Schluessel
213        $snam=htmlentities($rowl["bezeichnung"], ENT_QUOTES, "UTF-8"); // -Name
214        $hsnr=$rowl["hausnummer"];
215        $hlfd=$rowl["laufendenummer"];
[425]216        $gemeinde=$rowl["gemeinde"];
[422]217        $gmllag=$rowl["gmllag"];
218
219        if ($zhsnr === 1) {
[362]220                echo "\n<tr>"
[422]221                        ."\n\t<td class='li' title='Lage mit Hausnummer oder Pseudonummer'>Adresse</td>"
222                        ."\n\t<td class='fett'>";
[362]223        }
[427]224        echo "\n\t\t<img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''>&nbsp;".DsKy($skey, 'Stra&szlig;en-*');             
225        echo "\n\t\t<a title='Hausnummer' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag."&amp;ltyp=".$ltyp.LnkStf()."'>".$snam."&nbsp;".$hsnr;
[422]226                if ($ltyp === "p") {echo ", lfd.Nr ".$hlfd;}
[425]227        echo "</a>, ".$gemeinde."<br>";
[422]228} // Ende Loop Lagezeilen m.H.
229if ($zhsnr > 0) {echo "\n\t</td>\n\t<td>&nbsp;</td>\n</tr>";}
230pg_free_result($resl);
[362]231
[422]232// GebÀudefunktion
233echo "\n<tr>"
234        ."\n\t<td class='li'>Geb&auml;udefunktion</td>"
[427]235        ."\n\t<td class='fett'>".DsKy($kfunk, 'Geb&auml;udefunktion-*').$bfunk."</td>"
[422]236        ."\n\t<td>"
237                ."\n\t\t<p class='erklk'>'Geb&auml;udefunktion' ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des Geb&auml;udes'</p>"
238                ."\n\t\t<p class='erkli'>".$dfunk."</p>"
239        ."</td>"
240."\n</tr>";
[362]241
[422]242// Bauweise
243if ($baw != "" OR $allefelder) {
244        echo "\n<tr>"
[427]245        ."\n\t<td class='li'>Bauweise</td>"
246        ."\n\t<td class='fett'>".DsKy($baw, 'Bauweise-*').$bbauw."</td>"
247        ."\n\t<td>"
248                ."\n\t\t<p class='erklk'>'Bauweise' ist die Beschreibung der Art der Bauweise.</p>"
249                ."\n\t\t<p class='erkli'>".$dbauw."</p>"
250        ."\n\t</td>\n</tr>";
[422]251}
[362]252
[422]253// Geschosse
254if ($aog != "" OR $allefelder) {
255        echo "\n<tr>"
[427]256        ."\n\t<td class='li'>Geschosse</td>"
257        ."\n\t<td class='fett'>".$aog."</td>"
258        ."\n\t<td>"
259                ."\n\t\t<p class='erklk'>Anzahl oberirdischer Geschosse.</p>"
260        ."\n\t</td>\n</tr>";
[422]261}
[362]262
[422]263// U-Geschosse
264if ($aug != "" OR $allefelder) {
265        echo "\n<tr>"
[427]266        ."\n\t<td class='li'>U-Geschosse</td>"
267        . "\n\t<td class='fett'>".$aug."</td>"
268        ."\n\t<td>"
269                ."\n\t\t<p class='erklk'>Anzahl unterirdischer Geschosse.</p>"
270        ."\n\t</td>\n</tr>";
[422]271}
[362]272
[422]273// Hochhaus
274if ($hoh != "" OR $allefelder) {
275        echo "\n<tr>"
[427]276        ."\n\t<td class='li'>Hochhaus</td>"
277        ."\n\t<td class='fett'>".$hoh."</td>"
278        ."\n\t<td>"
279                ."\n\t\t<p class='erklk'>'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."
280        ."\n\t</td>\n</tr>";
[422]281}
[362]282
[422]283// Lage zur ErdoberflÀche
284if ($ofl != "" OR $allefelder) {
285        echo "\n<tr>"
[427]286        ."\n\t<td class='li'>Lage zur Erdoberfl&auml;che</td>"
287        ."\n\t<td class='fett'>".DsKy($ofl, '* f&uuml;r Lage zur Erdoberfl&auml;che').$oflv."</td>"
288        ."\n\t<td>"
289                ."\n\t\t<p class='erklk'>'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.<br>"
290                ."\n\t\t<p class='erkli'>".$ofld."</p>"
291        ."\n\t</td>\n</tr>";
[422]292}
[388]293
[422]294// Dachgeschossausbau, Spalte dokumentation ist immer leer
295if ($dga != "" OR $allefelder) {
[362]296        echo "\n<tr>"
[427]297        ."\n\t<td class='li'>Dachgeschossausbau</td>"
298        ."\n\t<td class='fett'>".DsKy($dga, '* Dachgeschossausbau').$dgav."</td>"
299        ."\n\t<td>"
300                ."\n\t\t<p class='erklk'>'Dachgeschossausbau' ist ein Hinweis auf den Ausbau bzw. die Ausbauf&auml;higkeit des Dachgeschosses."
301        ."\n\t</td>\n</tr>";
[422]302}
[377]303
[422]304// Zustand
305if ($zus != "" OR $allefelder) {
306        echo "\n<tr>"
[427]307        ."\n\t<td class='li'>Zustand</td>"
308        ."\n\t<td class='fett'>";
309        echo DsKy($zus, 'Zustand-*').$zusv."</td>"
310        ."\n\t<td>"
311                ."\n\t\t<p class='erklk'>'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.</p>"
312                ."\n\t\t<p class='erkli'>".$zusd."</p>"
313        ."\n\t</td>\n</tr>";
[422]314}
[377]315
[422]316// Weitere GebÀudefunktionen
317if ($wgf != "" OR $allefelder) { // ... ist ein Array
318        echo "\n<tr>"
[427]319        ."\n\t<td class='li'>Weitere Geb&auml;udefunktionen</td>"
320        ."\n\t<td>";
321        if ($wgf != "") { // Kommagetrennte Liste aus Array
322                $sqlw="SELECT wert, beschreibung, dokumentation FROM ax_gebaeudefunktion WHERE wert IN ( $1 ) ORDER BY wert;";
323                $v = array($wgf);
[430]324                $resw = pg_prepare($con, "", $sqlw);
325                $resw = pg_execute($con, "", $v);
[427]326                if (!$resw) {
327                        echo "\n<p class='err'>Fehler bei Geb&auml;ude - weitere Funktion.</p>";
328                        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqlw."<br>$1 = Werteliste = '".$wgf."'</p>";}
[422]329                }
[427]330                $zw=0;
331                while($roww = pg_fetch_assoc($resw)) { // LOOP Funktion
332                        if ($zw > 0) {echo "<br>";}
333                        echo DsKy($roww["wert"], 'Geb&auml;udefunktionen-*')."<span title='".$roww["dokumentation"]."'>".$roww["beschreibung"]."</span>";
334                        $zw++;
335           }
336           pg_free_result($resw);
337        }
338        echo "</td>"
339        ."\n\t<td>"
340                ."\n\t\t<p class='erklk'>'Weitere Geb&auml;udefunktion' ist die Funktion, die ein Geb&auml;ude neben der dominierenden Geb&auml;udefunktion hat."
341        ."\n\t</td>\n</tr>";
[422]342}
[377]343
[422]344// Dachform, Spalte dokumentation ist immer leer
345if ($daf != "" OR $allefelder) {
346        echo "\n<tr>"
[427]347        ."\n\t<td class='li'>Dachform</td>"
348        ."\n\t<td class='fett'>".DsKy($daf, 'Dachform-*').$dach."</td>"
349        ."\n\t<td>"
350                ."\n\t\t<p class='erklk'>'Dachform' beschreibt die charakteristische Form des Daches."
351        ."\n\t</td>\n</tr>";
[422]352}
[377]353
[422]354// Objekthöhe
355if ($hho != "" OR $allefelder) {
356        echo "\n<tr>"
[427]357        ."\n\t<td class='li'>Objekth&ouml;he</td>"
358        ."\n\t<td class='fett'>".$hho."</td>"
359        ."\n\t<td>"
360                ."\n\t\t<p class='erklk'>'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."
361        ."\n\t</td>\n</tr>";
[422]362}
[377]363
[422]364// GeschossflÀche
365if ($gfl != "" OR $allefelder) {
366        echo "\n<tr>"
[427]367        ."\n\t<td class='li'>Geschossfl&auml;che</td>"
368        ."\n\t<td class='fett'>";
369        if ($gfl != "") {echo $gfl." m&#178;";}
370        echo "</td>"
371        ."\n\t<td>"
372                ."\n\t\t<p class='erklk'>'Geschossfl&auml;che' ist die Geb&auml;udegeschossfl&auml;che in [qm]."
373        ."\n\t</td>\n</tr>";
[422]374}
[377]375
[422]376// GrundflÀche
377if ($grf != "" OR $allefelder) {
378        echo "\n<tr>"
[427]379        ."\n\t<td class='li'>Grundfl&auml;che</td>"
380        ."\n\t<td class='fett'>";
381        if ($grf != "") {echo $grf." m&#178;";}
382        echo "\n\t<td>"
383                ."\n\t\t<p class='erklk'>'Grundfl&auml;che' ist die Geb&auml;udegrundfl&auml;che in [qm]."
384        ."\n\t</td>\n</tr>";
[422]385}
[377]386
[422]387// Umbauter Raum
388if ($ura != "" OR $allefelder) {
389        echo "\n<tr>"
[427]390        ."\n\t<td class='li'>Umbauter Raum</td>"
391        ."\n\t<td class='fett'>".$ura."</td>"
392        ."\n\t<td>"
393                ."\n\t\t<p class='erklk'>'Umbauter Raum' ist der umbaute Raum [Kubikmeter] des Geb&auml;udes."
394        ."\n\t</td>\n</tr>";
[422]395}
[377]396
[422]397// Baujahr
398if ($bja != "" OR $allefelder) {
399        echo "\n<tr>"
[427]400        ."\n\t<td class='li'>Baujahr</td>"
401        ."\n\t<td class='fett'>".$bja."</td>"
402        ."\n\t<td>"
403                ."\n\t\t<p class='erklk'>'Baujahr' ist das Jahr der Fertigstellung oder der baulichen Ver&auml;nderung des Geb&auml;udes."
404        ."\n\t</td>\n</tr>";
[422]405}
[377]406
[422]407// Dachart
408if ($daa != "" OR $allefelder) {
409        echo "\n<tr>"
[427]410        ."\n\t<td class='li'>Dachart</td>"
411        ."\n\t<td class='fett'>".$daa."</td>"
412        ."\n\t<td>"
413                ."\n\t\t<p class='erklk'>'Dachart' gibt die Art der Dacheindeckung (z.B. Reetdach) an."
414        ."\n\t</td>\n</tr>";
[422]415}
[377]416
[422]417// D a t e n e r h e b u n g  (QualitÀt der Einmessung)
418$sqle ="SELECT g.gml_id, e.wert, e.beschreibung, e.dokumentation FROM ax_gebaeude g
419LEFT JOIN ax_datenerhebung e ON cast(e.wert AS varchar) = any(g.herkunft_source_source_ax_datenerhebung)
420WHERE g.gml_id= $1 AND g.endet IS NULL;";
421$v = array($gmlid);
[430]422$rese = pg_prepare($con, "", $sqle);
423$rese = pg_execute($con, "", $v);
[422]424if (!$rese) {
425        echo "\n<p class='err'>Fehler bei Datenerhebung.<br>".pg_last_error()."</p>";
[425]426        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqle."<br>$1 = gml_id = '".$gmlid."'</p>";}
[422]427}
428while($rowe = pg_fetch_assoc($rese)) { // Schleife weil array-Feld, meist aber leer
429        $erheb =$rowe["wert"];
430        $berheb=$rowe["beschreibung"];
431        $derheb=$rowe["dokumentation"]; // immer leer, oder
432        if ($derheb == '' AND $erheb != '') { // Wert ohne Doku
433                if ( $erheb >= 2000) { // selbst was dazu sagen
434                        $derheb = 'nicht eingemessenes Geb&auml;ude'; // so hieß das in der ALK
435                }
[362]436        }
[422]437        if ($erheb != "" OR $allefelder) {
[362]438                echo "\n<tr>"
[427]439                ."\n\t<td class='li'>Datenerhebung</td>"
440                ."\n\t<td class='fett'>".DsKy($erheb, 'Datenerhebung-*').$berheb."</td>"
441                ."\n\t<td>"
442                        ."\n\t\t<p class='erklk'>'Datenerhebung' beschreibt Qualit&auml;tsangaben, Herkunft.</p>"
443                        ."\n\t\t<p class='erkli'>".$derheb."</p>"
444                ."</td>\n</tr>";
[362]445        }
[422]446}
447echo "\n</table>";
448pg_free_result($rese);
[377]449
[422]450$gfla=$rowg["gebflae"]; // bei Flurstck. gebraucht
451pg_free_result($resg);
[377]452
[422]453echo "\n\n<h3><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;cke</h3>"
454."\n<p>.. auf dem das Geb&auml;ude steht. Ermittelt durch Verschneidung der Geometrie.</p>";
[377]455
[422]456// F l u r s t Ì c k
457$sqlf ="SELECT f.gml_id, round(st_area(ST_Intersection(g.wkb_geometry,f.wkb_geometry))::numeric,2) AS schnittflae,
458st_within(g.wkb_geometry,f.wkb_geometry) as drin, o.gemarkungsnummer, o.bezeichnung, f.flurnummer, f.zaehler, f.nenner
[425]459FROM ax_gebaeude g, ax_flurstueck f LEFT JOIN ax_gemarkung o ON f.land=o.land AND f.gemarkungsnummer=o.gemarkungsnummer ".UnqKatAmt("f","o")
460."WHERE g.gml_id= $1 AND f.endet IS NULL and g.endet IS NULL
[422]461AND st_intersects(g.wkb_geometry,f.wkb_geometry) = true ORDER BY schnittflae DESC;";
[377]462
[422]463$v=array($gmlid);
[430]464$resf=pg_prepare($con, "", $sqlf);
465$resf=pg_execute($con, "", $v);
[422]466if (!$resf) {
467        echo "\n<p class='err'>Fehler bei FS-Verschneidung.</p>";
[425]468        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".$sqlf."<br>$1 = gml_id = '".$gmlid."'</p>";}
[422]469}
470
471echo "\n<hr>\n<table class='geb'>"
472."\n<tr>"
473        ."\n\t<td class='heads fla' title='Schnittfl&auml;che zwischen Flurst&uuml;ck und Geb&auml;ude'><img src='ico/sortd.png' width='10' height='10' alt='' title='Sortierung (absteigend)'>Fl&auml;che</td>"
474        ."\n\t<td class='head' title='Verh&auml;ltnis Geb&auml;udefl&auml;che zur FlurstÃŒcksfl&auml;che'>Verh&auml;ltnis</td>"
475        ."\n\t<td class='head' title='Flurst&uuml;ckskennzeichen Ortsteil'>Gemarkung</td>"
476        ."\n\t<td class='head' title='Flurst&uuml;ckskennzeichen Flur-Nummer'>Flur</td>"
477        ."\n\t<td class='heads fsnr' title='Flurst&uuml;ckskennzeichen Flurst&uuml;cks-Nummer'>Flurst&uuml;ck</td>"
478        ."\n\t<td class='head nwlink' title='Flurst&uuml;cks-Nachweis'>weitere Auskunft</td>"
479."\n</tr>";
480
481while($rowf = pg_fetch_assoc($resf)) {
482        $fgml=$rowf["gml_id"];
483        $drin=$rowf["drin"];
484        $schni=$rowf["schnittflae"];
485        $flur= $rowf["flurnummer"];
486        $fskenn=$rowf["zaehler"];
487        if ($rowf["nenner"] != "") { $fskenn.="/".$rowf["nenner"];}
488
489        // 3 FÀlle:
[427]490        if ($drin === "t") { // Geb. komplett in FS
[422]491                $gstyle="gin"; // siehe .css   
492                $f1=number_format($schni,2,",",".") . " m&#178;";
493                $f2="vollst&auml;ndig";
494        } else {
495                if ($schni === "0.00") { // GebÀude angrenzend (Grenzbebauung)
496                        $gstyle="gan";
497                        $f1="&nbsp;";
498                        $f2="angrenzend";
[427]499                } else { // Teile des Geb. auf dem FS
[422]500                        $gstyle="gtl";
501                        $f1=number_format($schni,2,",",".") . " m&#178;";
502                        $f2="teilweise";
503                }
[362]504        }
[422]505        echo "\n<tr>"
506                ."\n\t<td class='fla'>".$f1."</td>"
[427]507                ."\n\t<td class='".$gstyle."'>".$f2."</td>"
508                ."\n\t<td>".DsKy($rowf["gemarkungsnummer"], 'Gemarkungsnummer').$rowf["bezeichnung"]."</td>"
509                ."\n\t<td>".$flur."</td>"
510                ."\n\t<td class='fsnr'><span class='wichtig'>".$fskenn."</span></td>";
[377]511
[422]512        echo "\n\t<td class='nwlink noprint'>" // Link FS
[427]513                ."\n\t\t<a title='Flurst&uuml;ck' href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fgml.LnkStf()
514                ."'>Flurst&uuml;ck&nbsp;<img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''></a>"
[422]515                ."\n\t</td>"
516        ."\n</tr>";
[362]517}
518
[422]519$gfla=number_format($gfla,2,",",".") . " m&#178;";
520echo "\n<tr>\n\t<td class='fla sum'>".$gfla."</td>\n\t<td>Geb&auml;udefl&auml;che</td>\n\t<td></td>\n</tr>";
[427]521echo "\n</table>";
[362]522
[425]523echo "<div class='buttonbereich noprint'>\n<hr>"
524        ."\n\t<a title='zur&uuml;ck' href='javascript:history.back()'><img src='ico/zurueck.png' width='16' height='16' alt='zur&uuml;ck'></a>&nbsp;";
525if ($PrntBtn==true){echo "\n\t<a title='Drucken' href='javascript:window.print()'><img src='ico/print.png' width='16' height='16' alt='Drucken'></a>&nbsp;";}
526echo "\n</div>";
[362]527
[425]528footer($gmlid, selbstverlinkung()."?", "");
529?>
[362]530</body>
531</html>
Note: See TracBrowser for help on using the repository browser.