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

Revision 425, 20.8 KB checked in by frank.jaeger, 2 years ago (diff)

Web-GIS-Auskunft und Mapbender2-Navigation: neue Konfigurations-Parameter und verbessertes Grundbuch-Modul

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