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.

Line 
1<?php
2/*      alkishaus.php
3
4        ALKIS-Auskunft
5        Author: Frank JÀger, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo)
6
7        Daten zu EINEM ALKIS-GebÀude-Objekt
8
9        Version:
10        2016-02-24 Version fÃŒr norGIS-ALKIS-Import
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 (===)
16        2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÀche). Gemeinde in Adresse
17        2022-01-13 Neue Functions LnkStf(), DsKy()
18
19ToDo:
20        - per Relation dazugehörige Bauwerke (z.B. Überdachung) suchen, ax_sonstigesbauwerkodersonstigeeinrichtung.gehoertzu
21        - Template im WMS auf Ebene GebÀude hierhin verknÃŒpfen.
22*/
23ini_set("session.cookie_httponly", 1);
24session_start();
25$allfld = "n"; $showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren
26$cntget = extract($_GET); // Parameter in Variable umwandeln
27
28// strikte Validierung aller Parameter
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}
39if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
40if ($showkey === "j") {$showkey=true;} else {$showkey=false;}
41if (!preg_match('#^[j|n]{0,1}$#', $allfld)) {die ("Eingabefehler allfld");}
42if ($allfld === "j") {$allefelder=true;} else {$allefelder=false;}
43if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");}
44
45include "alkis_conf_location.php";
46include "alkisfkt.php";
47
48echo <<<END
49<!doctype html>
50<html lang="de">
51<head>
52        <meta charset="utf-8">
53        <meta name="viewport" content="width=device-width, initial-scale=1.0">
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">
57        <style type='text/css' media='print'> td.mittelspalte {width: 190px;} </style>
58</head>
59<body>
60END;
61
62$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); }
63$dbg=$debug;
64if ($nodebug === "j") {$dbg=0;}
65
66$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkishaus.php'");
67if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
68
69// G e b À u d e
70// ... g.qualitaetsangaben,
71$sqlg ="SELECT g.gml_id, g.name, g.bauweise, g.gebaeudefunktion, g.anzahlderoberirdischengeschosse AS aog, g.anzahlderunterirdischengeschosse AS aug,
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,
76round(st_area(g.wkb_geometry)::numeric,2) AS gebflae
77FROM ax_gebaeude g
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
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) {
90        echo "\n<p class='err'>Fehler bei Geb&auml;ude.<br>".pg_last_error()."</p>";
91        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqlg."<br>$1 = gml_id = '".$gmlid."'</p>";}
92}
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}
100
101// Balken
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>";
104
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}
112echo "</a></p>";
113
114if (!($rowg = pg_fetch_assoc($resg))) {
115        echo "\n<p class='err'><br>Kein Geb&auml;ude gefunden</p>";
116        die ("Abbruch");
117}
118
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>";
128
129$aog=$rowg["aog"];
130$aug=$rowg["aug"];
131$hoh=$rowg["hochhaus"];
132$nam=trim(trim($rowg["name"], "{}"), '"'); // GebÀude-Name ist ein Array.
133// Mehrfachbelegung theoretisch. Entklammern reicht. Mal mit und mal ohne "" drum.
134$kfunk=$rowg["gebaeudefunktion"];
135$bfunk=$rowg["bfunk"];
136$dfunk=$rowg["dfunk"];
137
138$baw=$rowg["bauweise"];
139$bbauw=$rowg["bbauw"];
140$dbauw=$rowg["dbauw"];
141
142$ofl=$rowg["lagezurerdoberflaeche"];
143$oflv=$rowg["oflv"];
144$ofld=$rowg["ofld"];
145
146$dga=$rowg["dachgeschossausbau"]; // Key
147$dgav=$rowg["dgaus"];           // Value
148
149$zus=$rowg["zustand"];          // Key
150$zusv=$rowg["zustandv"];        // Value
151$zusd=$rowg["zustandd"];        // Description
152
153$wgf=$rowg["wgf"];                      // Array-> kommagetr. Liste
154
155$daf=$rowg["dachform"];         // Key
156$dach=$rowg["bdach"];           // Value
157
158$hho=$rowg["objekthoehe"];
159$gfl=$rowg["geschossflaeche"];
160$grf=$rowg["grundflaeche"];
161$ura=$rowg["umbauterraum"];
162$bja=$rowg["baujahr"];
163$daa=$rowg["dachart"];
164
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
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
180JOIN ax_lagebezeichnungmithausnummer lh ON lh.gml_id=ANY(gh.zeigtauf)
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
185// oder NEBENgebÀude
186$sqll.=" UNION
187SELECT 'p' AS ltyp, ln.gml_id AS gmllag, sn.lage, sn.bezeichnung, ln.pseudonummer AS hausnummer, ln.laufendenummer, pn.bezeichnung AS gemeinde
188FROM ax_gebaeude gn
189JOIN ax_lagebezeichnungmitpseudonummer ln ON ln.gml_id=gn.hat
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 ";
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>";
201        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqll."<br>$1 = gml_id = '".$gmlid."'</p>";}
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"];
211        $gemeinde=$rowl["gemeinde"];
212        $gmllag=$rowl["gmllag"];
213
214        if ($zhsnr === 1) {
215                echo "\n<tr>"
216                        ."\n\t<td class='li' title='Lage mit Hausnummer oder Pseudonummer'>Adresse</td>"
217                        ."\n\t<td class='fett'>";
218        }
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;
221                if ($ltyp === "p") {echo ", lfd.Nr ".$hlfd;}
222        echo "</a>, ".$gemeinde."<br>";
223} // Ende Loop Lagezeilen m.H.
224if ($zhsnr > 0) {echo "\n\t</td>\n\t<td>&nbsp;</td>\n</tr>";}
225pg_free_result($resl);
226
227// GebÀudefunktion
228echo "\n<tr>"
229        ."\n\t<td class='li'>Geb&auml;udefunktion</td>"
230        ."\n\t<td class='fett'>".DsKy($kfunk, 'Geb&auml;udefunktion-*').$bfunk."</td>"
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>";
236
237// Bauweise
238if ($baw != "" OR $allefelder) {
239        echo "\n<tr>"
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>";
246}
247
248// Geschosse
249if ($aog != "" OR $allefelder) {
250        echo "\n<tr>"
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>";
256}
257
258// U-Geschosse
259if ($aug != "" OR $allefelder) {
260        echo "\n<tr>"
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>";
266}
267
268// Hochhaus
269if ($hoh != "" OR $allefelder) {
270        echo "\n<tr>"
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>";
276}
277
278// Lage zur ErdoberflÀche
279if ($ofl != "" OR $allefelder) {
280        echo "\n<tr>"
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>";
287}
288
289// Dachgeschossausbau, Spalte dokumentation ist immer leer
290if ($dga != "" OR $allefelder) {
291        echo "\n<tr>"
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>";
297}
298
299// Zustand
300if ($zus != "" OR $allefelder) {
301        echo "\n<tr>"
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>";
309}
310
311// Weitere GebÀudefunktionen
312if ($wgf != "" OR $allefelder) { // ... ist ein Array
313        echo "\n<tr>"
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>";}
324                }
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>";
337}
338
339// Dachform, Spalte dokumentation ist immer leer
340if ($daf != "" OR $allefelder) {
341        echo "\n<tr>"
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>";
347}
348
349// Objekthöhe
350if ($hho != "" OR $allefelder) {
351        echo "\n<tr>"
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>";
357}
358
359// GeschossflÀche
360if ($gfl != "" OR $allefelder) {
361        echo "\n<tr>"
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>";
369}
370
371// GrundflÀche
372if ($grf != "" OR $allefelder) {
373        echo "\n<tr>"
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>";
380}
381
382// Umbauter Raum
383if ($ura != "" OR $allefelder) {
384        echo "\n<tr>"
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>";
390}
391
392// Baujahr
393if ($bja != "" OR $allefelder) {
394        echo "\n<tr>"
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>";
400}
401
402// Dachart
403if ($daa != "" OR $allefelder) {
404        echo "\n<tr>"
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>";
410}
411
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>";
421        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqle."<br>$1 = gml_id = '".$gmlid."'</p>";}
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                }
431        }
432        if ($erheb != "" OR $allefelder) {
433                echo "\n<tr>"
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>";
440        }
441}
442echo "\n</table>";
443pg_free_result($rese);
444
445$gfla=$rowg["gebflae"]; // bei Flurstck. gebraucht
446pg_free_result($resg);
447
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>";
450
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
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
456AND st_intersects(g.wkb_geometry,f.wkb_geometry) = true ORDER BY schnittflae DESC;";
457
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>";
463        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".$sqlf."<br>$1 = gml_id = '".$gmlid."'</p>";}
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:
485        if ($drin === "t") { // Geb. komplett in FS
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";
494                } else { // Teile des Geb. auf dem FS
495                        $gstyle="gtl";
496                        $f1=number_format($schni,2,",",".") . " m&#178;";
497                        $f2="teilweise";
498                }
499        }
500        echo "\n<tr>"
501                ."\n\t<td class='fla'>".$f1."</td>"
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>";
506
507        echo "\n\t<td class='nwlink noprint'>" // Link FS
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>"
510                ."\n\t</td>"
511        ."\n</tr>";
512}
513
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>";
516echo "\n</table>";
517
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>";
522
523footer($gmlid, selbstverlinkung()."?", "");
524?>
525</body>
526</html>
Note: See TracBrowser for help on using the repository browser.