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

Revision 427, 19.7 KB checked in by frank.jaeger, 2 years ago (diff)

Überarbeitung der Auskunft: Durch Functions den Code verdichtet. Drei neue Arten von Bauwerken.

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()
[425]18
[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);
87$resg = pg_prepare("", $sqlg);
88$resg = pg_execute("", $v);
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"];
[427]132$nam=trim(trim($rowg["name"], "{}"), '"'); // GebÀude-Name ist ein Array.
[422]133// Mehrfachbelegung theoretisch. Entklammern reicht. Mal mit und mal ohne "" drum.
134$kfunk=$rowg["gebaeudefunktion"];
135$bfunk=$rowg["bfunk"];
136$dfunk=$rowg["dfunk"];
[362]137
[422]138$baw=$rowg["bauweise"];
139$bbauw=$rowg["bbauw"];
140$dbauw=$rowg["dbauw"];
[362]141
[422]142$ofl=$rowg["lagezurerdoberflaeche"];
143$oflv=$rowg["oflv"];
144$ofld=$rowg["ofld"];
[362]145
[422]146$dga=$rowg["dachgeschossausbau"]; // Key
147$dgav=$rowg["dgaus"];           // Value
[362]148
[422]149$zus=$rowg["zustand"];          // Key
150$zusv=$rowg["zustandv"];        // Value
151$zusd=$rowg["zustandd"];        // Description
[362]152
[422]153$wgf=$rowg["wgf"];                      // Array-> kommagetr. Liste
[362]154
[422]155$daf=$rowg["dachform"];         // Key
156$dach=$rowg["bdach"];           // Value
[362]157
[422]158$hho=$rowg["objekthoehe"];
159$gfl=$rowg["geschossflaeche"];
160$grf=$rowg["grundflaeche"];
161$ura=$rowg["umbauterraum"];
162$bja=$rowg["baujahr"];
163$daa=$rowg["dachart"];
[362]164
[422]165if (($nam != "") OR $allefelder) {
166        echo "\n<tr>"
167                ."\n\t<td class='li'>Name</td>"
168                ."\n\t<td>".$nam."</td>"
169                ."\n\t<td>"
170                        ."\n\t\t<p class='erklk'>'Name' ist der Eigenname oder die Bezeichnung des Geb&auml;udes."
171                ."\n\t</td>"
172        ."\n</tr>";
173}
174
175// 0 bis N   L a g e bezeichnungen mit Haus- oder Pseudo-Nummer
176
177// HAUPTgebÀude
[425]178$sqll ="SELECT 'm' AS ltyp, lh.gml_id AS gmllag, sh.lage, sh.bezeichnung, lh.hausnummer, '' AS laufendenummer, ph.bezeichnung AS gemeinde
179FROM ax_gebaeude gh
[422]180JOIN ax_lagebezeichnungmithausnummer lh ON lh.gml_id=ANY(gh.zeigtauf)
[425]181JOIN ax_lagebezeichnungkatalogeintrag sh ON lh.kreis=sh.kreis AND lh.gemeinde=sh.gemeinde AND lh.lage=sh.lage
182LEFT 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")
183."WHERE gh.gml_id= $1 AND gh.endet IS NULL AND lh.endet IS NULL AND sh.endet IS NULL";
184
[422]185// oder NEBENgebÀude
186$sqll.=" UNION
[425]187SELECT 'p' AS ltyp, ln.gml_id AS gmllag, sn.lage, sn.bezeichnung, ln.pseudonummer AS hausnummer, ln.laufendenummer, pn.bezeichnung AS gemeinde
[422]188FROM ax_gebaeude gn
189JOIN ax_lagebezeichnungmitpseudonummer ln ON ln.gml_id=gn.hat
[425]190JOIN ax_lagebezeichnungkatalogeintrag sn ON ln.kreis=sn.kreis AND ln.gemeinde=sn.gemeinde AND ln.lage=sn.lage
191LEFT 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")
192."WHERE gn.gml_id= $1 AND gn.endet IS NULL AND ln.endet IS NULL AND sn.endet IS NULL ";
[422]193
194$sqll.="ORDER BY bezeichnung, hausnummer ;";
195
196$v = array($gmlid);
197$resl = pg_prepare("", $sqll);
198$resl = pg_execute("", $v);
199if (!$resl) {
200        echo "\n<p class='err'>Fehler bei Lage mit HsNr.</p>";
[425]201        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqll."<br>$1 = gml_id = '".$gmlid."'</p>";}
[422]202}
203$zhsnr=0;
204while($rowl = pg_fetch_assoc($resl)) { // LOOP: Lagezeilen
205        $zhsnr++;
206        $ltyp=$rowl["ltyp"]; // Lagezeilen-Typ
207        $skey=$rowl["lage"]; // Str.-Schluessel
208        $snam=htmlentities($rowl["bezeichnung"], ENT_QUOTES, "UTF-8"); // -Name
209        $hsnr=$rowl["hausnummer"];
210        $hlfd=$rowl["laufendenummer"];
[425]211        $gemeinde=$rowl["gemeinde"];
[422]212        $gmllag=$rowl["gmllag"];
213
214        if ($zhsnr === 1) {
[362]215                echo "\n<tr>"
[422]216                        ."\n\t<td class='li' title='Lage mit Hausnummer oder Pseudonummer'>Adresse</td>"
217                        ."\n\t<td class='fett'>";
[362]218        }
[427]219        echo "\n\t\t<img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''>&nbsp;".DsKy($skey, 'Stra&szlig;en-*');             
220        echo "\n\t\t<a title='Hausnummer' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag."&amp;ltyp=".$ltyp.LnkStf()."'>".$snam."&nbsp;".$hsnr;
[422]221                if ($ltyp === "p") {echo ", lfd.Nr ".$hlfd;}
[425]222        echo "</a>, ".$gemeinde."<br>";
[422]223} // Ende Loop Lagezeilen m.H.
224if ($zhsnr > 0) {echo "\n\t</td>\n\t<td>&nbsp;</td>\n</tr>";}
225pg_free_result($resl);
[362]226
[422]227// GebÀudefunktion
228echo "\n<tr>"
229        ."\n\t<td class='li'>Geb&auml;udefunktion</td>"
[427]230        ."\n\t<td class='fett'>".DsKy($kfunk, 'Geb&auml;udefunktion-*').$bfunk."</td>"
[422]231        ."\n\t<td>"
232                ."\n\t\t<p class='erklk'>'Geb&auml;udefunktion' ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des Geb&auml;udes'</p>"
233                ."\n\t\t<p class='erkli'>".$dfunk."</p>"
234        ."</td>"
235."\n</tr>";
[362]236
[422]237// Bauweise
238if ($baw != "" OR $allefelder) {
239        echo "\n<tr>"
[427]240        ."\n\t<td class='li'>Bauweise</td>"
241        ."\n\t<td class='fett'>".DsKy($baw, 'Bauweise-*').$bbauw."</td>"
242        ."\n\t<td>"
243                ."\n\t\t<p class='erklk'>'Bauweise' ist die Beschreibung der Art der Bauweise.</p>"
244                ."\n\t\t<p class='erkli'>".$dbauw."</p>"
245        ."\n\t</td>\n</tr>";
[422]246}
[362]247
[422]248// Geschosse
249if ($aog != "" OR $allefelder) {
250        echo "\n<tr>"
[427]251        ."\n\t<td class='li'>Geschosse</td>"
252        ."\n\t<td class='fett'>".$aog."</td>"
253        ."\n\t<td>"
254                ."\n\t\t<p class='erklk'>Anzahl oberirdischer Geschosse.</p>"
255        ."\n\t</td>\n</tr>";
[422]256}
[362]257
[422]258// U-Geschosse
259if ($aug != "" OR $allefelder) {
260        echo "\n<tr>"
[427]261        ."\n\t<td class='li'>U-Geschosse</td>"
262        . "\n\t<td class='fett'>".$aug."</td>"
263        ."\n\t<td>"
264                ."\n\t\t<p class='erklk'>Anzahl unterirdischer Geschosse.</p>"
265        ."\n\t</td>\n</tr>";
[422]266}
[362]267
[422]268// Hochhaus
269if ($hoh != "" OR $allefelder) {
270        echo "\n<tr>"
[427]271        ."\n\t<td class='li'>Hochhaus</td>"
272        ."\n\t<td class='fett'>".$hoh."</td>"
273        ."\n\t<td>"
274                ."\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."
275        ."\n\t</td>\n</tr>";
[422]276}
[362]277
[422]278// Lage zur ErdoberflÀche
279if ($ofl != "" OR $allefelder) {
280        echo "\n<tr>"
[427]281        ."\n\t<td class='li'>Lage zur Erdoberfl&auml;che</td>"
282        ."\n\t<td class='fett'>".DsKy($ofl, '* f&uuml;r Lage zur Erdoberfl&auml;che').$oflv."</td>"
283        ."\n\t<td>"
284                ."\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>"
285                ."\n\t\t<p class='erkli'>".$ofld."</p>"
286        ."\n\t</td>\n</tr>";
[422]287}
[388]288
[422]289// Dachgeschossausbau, Spalte dokumentation ist immer leer
290if ($dga != "" OR $allefelder) {
[362]291        echo "\n<tr>"
[427]292        ."\n\t<td class='li'>Dachgeschossausbau</td>"
293        ."\n\t<td class='fett'>".DsKy($dga, '* Dachgeschossausbau').$dgav."</td>"
294        ."\n\t<td>"
295                ."\n\t\t<p class='erklk'>'Dachgeschossausbau' ist ein Hinweis auf den Ausbau bzw. die Ausbauf&auml;higkeit des Dachgeschosses."
296        ."\n\t</td>\n</tr>";
[422]297}
[377]298
[422]299// Zustand
300if ($zus != "" OR $allefelder) {
301        echo "\n<tr>"
[427]302        ."\n\t<td class='li'>Zustand</td>"
303        ."\n\t<td class='fett'>";
304        echo DsKy($zus, 'Zustand-*').$zusv."</td>"
305        ."\n\t<td>"
306                ."\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>"
307                ."\n\t\t<p class='erkli'>".$zusd."</p>"
308        ."\n\t</td>\n</tr>";
[422]309}
[377]310
[422]311// Weitere GebÀudefunktionen
312if ($wgf != "" OR $allefelder) { // ... ist ein Array
313        echo "\n<tr>"
[427]314        ."\n\t<td class='li'>Weitere Geb&auml;udefunktionen</td>"
315        ."\n\t<td>";
316        if ($wgf != "") { // Kommagetrennte Liste aus Array
317                $sqlw="SELECT wert, beschreibung, dokumentation FROM ax_gebaeudefunktion WHERE wert IN ( $1 ) ORDER BY wert;";
318                $v = array($wgf);
319                $resw = pg_prepare("", $sqlw);
320                $resw = pg_execute("", $v);
321                if (!$resw) {
322                        echo "\n<p class='err'>Fehler bei Geb&auml;ude - weitere Funktion.</p>";
323                        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqlw."<br>$1 = Werteliste = '".$wgf."'</p>";}
[422]324                }
[427]325                $zw=0;
326                while($roww = pg_fetch_assoc($resw)) { // LOOP Funktion
327                        if ($zw > 0) {echo "<br>";}
328                        echo DsKy($roww["wert"], 'Geb&auml;udefunktionen-*')."<span title='".$roww["dokumentation"]."'>".$roww["beschreibung"]."</span>";
329                        $zw++;
330           }
331           pg_free_result($resw);
332        }
333        echo "</td>"
334        ."\n\t<td>"
335                ."\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."
336        ."\n\t</td>\n</tr>";
[422]337}
[377]338
[422]339// Dachform, Spalte dokumentation ist immer leer
340if ($daf != "" OR $allefelder) {
341        echo "\n<tr>"
[427]342        ."\n\t<td class='li'>Dachform</td>"
343        ."\n\t<td class='fett'>".DsKy($daf, 'Dachform-*').$dach."</td>"
344        ."\n\t<td>"
345                ."\n\t\t<p class='erklk'>'Dachform' beschreibt die charakteristische Form des Daches."
346        ."\n\t</td>\n</tr>";
[422]347}
[377]348
[422]349// Objekthöhe
350if ($hho != "" OR $allefelder) {
351        echo "\n<tr>"
[427]352        ."\n\t<td class='li'>Objekth&ouml;he</td>"
353        ."\n\t<td class='fett'>".$hho."</td>"
354        ."\n\t<td>"
355                ."\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."
356        ."\n\t</td>\n</tr>";
[422]357}
[377]358
[422]359// GeschossflÀche
360if ($gfl != "" OR $allefelder) {
361        echo "\n<tr>"
[427]362        ."\n\t<td class='li'>Geschossfl&auml;che</td>"
363        ."\n\t<td class='fett'>";
364        if ($gfl != "") {echo $gfl." m&#178;";}
365        echo "</td>"
366        ."\n\t<td>"
367                ."\n\t\t<p class='erklk'>'Geschossfl&auml;che' ist die Geb&auml;udegeschossfl&auml;che in [qm]."
368        ."\n\t</td>\n</tr>";
[422]369}
[377]370
[422]371// GrundflÀche
372if ($grf != "" OR $allefelder) {
373        echo "\n<tr>"
[427]374        ."\n\t<td class='li'>Grundfl&auml;che</td>"
375        ."\n\t<td class='fett'>";
376        if ($grf != "") {echo $grf." m&#178;";}
377        echo "\n\t<td>"
378                ."\n\t\t<p class='erklk'>'Grundfl&auml;che' ist die Geb&auml;udegrundfl&auml;che in [qm]."
379        ."\n\t</td>\n</tr>";
[422]380}
[377]381
[422]382// Umbauter Raum
383if ($ura != "" OR $allefelder) {
384        echo "\n<tr>"
[427]385        ."\n\t<td class='li'>Umbauter Raum</td>"
386        ."\n\t<td class='fett'>".$ura."</td>"
387        ."\n\t<td>"
388                ."\n\t\t<p class='erklk'>'Umbauter Raum' ist der umbaute Raum [Kubikmeter] des Geb&auml;udes."
389        ."\n\t</td>\n</tr>";
[422]390}
[377]391
[422]392// Baujahr
393if ($bja != "" OR $allefelder) {
394        echo "\n<tr>"
[427]395        ."\n\t<td class='li'>Baujahr</td>"
396        ."\n\t<td class='fett'>".$bja."</td>"
397        ."\n\t<td>"
398                ."\n\t\t<p class='erklk'>'Baujahr' ist das Jahr der Fertigstellung oder der baulichen Ver&auml;nderung des Geb&auml;udes."
399        ."\n\t</td>\n</tr>";
[422]400}
[377]401
[422]402// Dachart
403if ($daa != "" OR $allefelder) {
404        echo "\n<tr>"
[427]405        ."\n\t<td class='li'>Dachart</td>"
406        ."\n\t<td class='fett'>".$daa."</td>"
407        ."\n\t<td>"
408                ."\n\t\t<p class='erklk'>'Dachart' gibt die Art der Dacheindeckung (z.B. Reetdach) an."
409        ."\n\t</td>\n</tr>";
[422]410}
[377]411
[422]412// D a t e n e r h e b u n g  (QualitÀt der Einmessung)
413$sqle ="SELECT g.gml_id, e.wert, e.beschreibung, e.dokumentation FROM ax_gebaeude g
414LEFT JOIN ax_datenerhebung e ON cast(e.wert AS varchar) = any(g.herkunft_source_source_ax_datenerhebung)
415WHERE g.gml_id= $1 AND g.endet IS NULL;";
416$v = array($gmlid);
417$rese = pg_prepare("", $sqle);
418$rese = pg_execute("", $v);
419if (!$rese) {
420        echo "\n<p class='err'>Fehler bei Datenerhebung.<br>".pg_last_error()."</p>";
[425]421        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqle."<br>$1 = gml_id = '".$gmlid."'</p>";}
[422]422}
423while($rowe = pg_fetch_assoc($rese)) { // Schleife weil array-Feld, meist aber leer
424        $erheb =$rowe["wert"];
425        $berheb=$rowe["beschreibung"];
426        $derheb=$rowe["dokumentation"]; // immer leer, oder
427        if ($derheb == '' AND $erheb != '') { // Wert ohne Doku
428                if ( $erheb >= 2000) { // selbst was dazu sagen
429                        $derheb = 'nicht eingemessenes Geb&auml;ude'; // so hieß das in der ALK
430                }
[362]431        }
[422]432        if ($erheb != "" OR $allefelder) {
[362]433                echo "\n<tr>"
[427]434                ."\n\t<td class='li'>Datenerhebung</td>"
435                ."\n\t<td class='fett'>".DsKy($erheb, 'Datenerhebung-*').$berheb."</td>"
436                ."\n\t<td>"
437                        ."\n\t\t<p class='erklk'>'Datenerhebung' beschreibt Qualit&auml;tsangaben, Herkunft.</p>"
438                        ."\n\t\t<p class='erkli'>".$derheb."</p>"
439                ."</td>\n</tr>";
[362]440        }
[422]441}
442echo "\n</table>";
443pg_free_result($rese);
[377]444
[422]445$gfla=$rowg["gebflae"]; // bei Flurstck. gebraucht
446pg_free_result($resg);
[377]447
[422]448echo "\n\n<h3><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;cke</h3>"
449."\n<p>.. auf dem das Geb&auml;ude steht. Ermittelt durch Verschneidung der Geometrie.</p>";
[377]450
[422]451// F l u r s t Ì c k
452$sqlf ="SELECT f.gml_id, round(st_area(ST_Intersection(g.wkb_geometry,f.wkb_geometry))::numeric,2) AS schnittflae,
453st_within(g.wkb_geometry,f.wkb_geometry) as drin, o.gemarkungsnummer, o.bezeichnung, f.flurnummer, f.zaehler, f.nenner
[425]454FROM ax_gebaeude g, ax_flurstueck f LEFT JOIN ax_gemarkung o ON f.land=o.land AND f.gemarkungsnummer=o.gemarkungsnummer ".UnqKatAmt("f","o")
455."WHERE g.gml_id= $1 AND f.endet IS NULL and g.endet IS NULL
[422]456AND st_intersects(g.wkb_geometry,f.wkb_geometry) = true ORDER BY schnittflae DESC;";
[377]457
[422]458$v=array($gmlid);
459$resf=pg_prepare("", $sqlf);
460$resf=pg_execute("", $v);
461if (!$resf) {
462        echo "\n<p class='err'>Fehler bei FS-Verschneidung.</p>";
[425]463        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".$sqlf."<br>$1 = gml_id = '".$gmlid."'</p>";}
[422]464}
465
466echo "\n<hr>\n<table class='geb'>"
467."\n<tr>"
468        ."\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>"
469        ."\n\t<td class='head' title='Verh&auml;ltnis Geb&auml;udefl&auml;che zur FlurstÃŒcksfl&auml;che'>Verh&auml;ltnis</td>"
470        ."\n\t<td class='head' title='Flurst&uuml;ckskennzeichen Ortsteil'>Gemarkung</td>"
471        ."\n\t<td class='head' title='Flurst&uuml;ckskennzeichen Flur-Nummer'>Flur</td>"
472        ."\n\t<td class='heads fsnr' title='Flurst&uuml;ckskennzeichen Flurst&uuml;cks-Nummer'>Flurst&uuml;ck</td>"
473        ."\n\t<td class='head nwlink' title='Flurst&uuml;cks-Nachweis'>weitere Auskunft</td>"
474."\n</tr>";
475
476while($rowf = pg_fetch_assoc($resf)) {
477        $fgml=$rowf["gml_id"];
478        $drin=$rowf["drin"];
479        $schni=$rowf["schnittflae"];
480        $flur= $rowf["flurnummer"];
481        $fskenn=$rowf["zaehler"];
482        if ($rowf["nenner"] != "") { $fskenn.="/".$rowf["nenner"];}
483
484        // 3 FÀlle:
[427]485        if ($drin === "t") { // Geb. komplett in FS
[422]486                $gstyle="gin"; // siehe .css   
487                $f1=number_format($schni,2,",",".") . " m&#178;";
488                $f2="vollst&auml;ndig";
489        } else {
490                if ($schni === "0.00") { // GebÀude angrenzend (Grenzbebauung)
491                        $gstyle="gan";
492                        $f1="&nbsp;";
493                        $f2="angrenzend";
[427]494                } else { // Teile des Geb. auf dem FS
[422]495                        $gstyle="gtl";
496                        $f1=number_format($schni,2,",",".") . " m&#178;";
497                        $f2="teilweise";
498                }
[362]499        }
[422]500        echo "\n<tr>"
501                ."\n\t<td class='fla'>".$f1."</td>"
[427]502                ."\n\t<td class='".$gstyle."'>".$f2."</td>"
503                ."\n\t<td>".DsKy($rowf["gemarkungsnummer"], 'Gemarkungsnummer').$rowf["bezeichnung"]."</td>"
504                ."\n\t<td>".$flur."</td>"
505                ."\n\t<td class='fsnr'><span class='wichtig'>".$fskenn."</span></td>";
[377]506
[422]507        echo "\n\t<td class='nwlink noprint'>" // Link FS
[427]508                ."\n\t\t<a title='Flurst&uuml;ck' href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fgml.LnkStf()
509                ."'>Flurst&uuml;ck&nbsp;<img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''></a>"
[422]510                ."\n\t</td>"
511        ."\n</tr>";
[362]512}
513
[422]514$gfla=number_format($gfla,2,",",".") . " m&#178;";
515echo "\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]516echo "\n</table>";
[362]517
[425]518echo "<div class='buttonbereich noprint'>\n<hr>"
519        ."\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;";
520if ($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;";}
521echo "\n</div>";
[362]522
[425]523footer($gmlid, selbstverlinkung()."?", "");
524?>
[362]525</body>
526</html>
Note: See TracBrowser for help on using the repository browser.