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

Line 
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:
6        2016-02-24 Version fÃŒr norGIS-ALKIS-Import
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 (===)
12        2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÀche). Gemeinde in Adresse
13
14ToDo:
15        - Template im WMS auf Ebene GebÀude hierhin verknÃŒpfen.
16*/
17ini_set("session.cookie_httponly", 1);
18session_start();
19$allfld = "n"; $showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren
20$cntget = extract($_GET); // Parameter in Variable umwandeln
21
22// strikte Validierung aller Parameter
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}
33if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
34if ($showkey === "j") {$showkey=true;} else {$showkey=false;}
35if (!preg_match('#^[j|n]{0,1}$#', $allfld)) {die ("Eingabefehler allfld");}
36if ($allfld === "j") {$allefelder=true;} else {$allefelder=false;}
37if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");}
38
39include "alkis_conf_location.php";
40include "alkisfkt.php";
41
42echo <<<END
43<!doctype html>
44<html lang="de">
45<head>
46        <meta charset="utf-8">
47        <meta name="viewport" content="width=device-width, initial-scale=1.0">
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">
51        <style type='text/css' media='print'> td.mittelspalte {width: 190px;} </style>
52</head>
53<body>
54END;
55
56$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); }
57$dbg=$debug; // CONF in Arbeits-Variable
58
59// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten.
60// Wirkt temporÀr und wird nicht in Links weiter gereicht.
61if ($nodebug === "j") {$dbg=0;}
62
63$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkishaus.php'");
64if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
65
66// G e b a e u d e
67// ... g.qualitaetsangaben,
68$sqlg ="SELECT g.gml_id, g.name, g.bauweise, g.gebaeudefunktion, g.anzahlderoberirdischengeschosse AS aog, g.anzahlderunterirdischengeschosse AS aug,
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,
73round(st_area(g.wkb_geometry)::numeric,2) AS gebflae
74FROM ax_gebaeude g
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
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) {
87        echo "\n<p class='err'>Fehler bei Geb&auml;ude.<br>".pg_last_error()."</p>";
88        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqlg."<br>$1 = gml_id = '".$gmlid."'</p>";}
89}
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}
97
98// Balken
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>";
101
102echo "<p class='nwlink noprint'>"; // Umschalter: auch leere Felder
103echo "Umschalten: <a class='nwlink' href='".selbstverlinkung()."?gkz=".$gkz."&amp;gmlid=".$gmlid;
104        if ($showkey) {echo "&amp;showkey=j";} else {echo "&amp;showkey=n";}
105        if ($allefelder) {
106                echo "&amp;allfld=n'>nur Felder mit Inhalt";
107        } else {
108                echo "&amp;allfld=j'>auch leere Felder";
109        }
110echo "</a></p>";
111
112if (!($rowg = pg_fetch_assoc($resg))) {
113        echo "\n<p class='err'><br>Kein Geb&auml;ude gefunden</p>";
114        die ("Abbruch");
115}
116
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>";
126
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"];
135
136$baw=$rowg["bauweise"];
137$bbauw=$rowg["bbauw"];
138$dbauw=$rowg["dbauw"];
139
140$ofl=$rowg["lagezurerdoberflaeche"];
141$oflv=$rowg["oflv"];
142$ofld=$rowg["ofld"];
143
144$dga=$rowg["dachgeschossausbau"]; // Key
145$dgav=$rowg["dgaus"];           // Value
146
147$zus=$rowg["zustand"];          // Key
148$zusv=$rowg["zustandv"];        // Value
149$zusd=$rowg["zustandd"];        // Description
150
151$wgf=$rowg["wgf"];                      // Array-> kommagetr. Liste
152
153$daf=$rowg["dachform"];         // Key
154$dach=$rowg["bdach"];           // Value
155
156$hho=$rowg["objekthoehe"];
157$gfl=$rowg["geschossflaeche"];
158$grf=$rowg["grundflaeche"];
159$ura=$rowg["umbauterraum"];
160$bja=$rowg["baujahr"];
161$daa=$rowg["dachart"];
162
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
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
178JOIN ax_lagebezeichnungmithausnummer lh ON lh.gml_id=ANY(gh.zeigtauf)
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
183// oder NEBENgebÀude
184$sqll.=" UNION
185SELECT 'p' AS ltyp, ln.gml_id AS gmllag, sn.lage, sn.bezeichnung, ln.pseudonummer AS hausnummer, ln.laufendenummer, pn.bezeichnung AS gemeinde
186FROM ax_gebaeude gn
187JOIN ax_lagebezeichnungmitpseudonummer ln ON ln.gml_id=gn.hat
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 ";
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>";
199        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqll."<br>$1 = gml_id = '".$gmlid."'</p>";}
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"];
209        $gemeinde=$rowl["gemeinde"];
210        $gmllag=$rowl["gmllag"];
211
212        if ($zhsnr === 1) {
213                echo "\n<tr>"
214                        ."\n\t<td class='li' title='Lage mit Hausnummer oder Pseudonummer'>Adresse</td>"
215                        ."\n\t<td class='fett'>";
216        }
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;}
223        echo "</a>, ".$gemeinde."<br>";
224} // Ende Loop Lagezeilen m.H.
225if ($zhsnr > 0) {echo "\n\t</td>\n\t<td>&nbsp;</td>\n</tr>";}
226pg_free_result($resl);
227
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>";
239
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}
253
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}
264
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}
275
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}
286
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}
300
301// Dachgeschossausbau, Spalte dokumentation ist immer leer
302if ($dga != "" OR $allefelder) {
303        echo "\n<tr>"
304                ."\n\t<td class='li'>Dachgeschossausbau</td>"
305                ."\n\t<td class='fett'>";
306                if ($showkey and $dga != '') {echo "<span class='key'>(".$dga.")</span>&nbsp;";}
307                echo $dgav."</td>"
308                ."\n\t<td>"
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>"
311        ."\n</tr>";
312}
313
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}
327
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>";
341                                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqlw."<br>$1 = Werteliste = '".$wgf."'</p>";}
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}
358
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}
371
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}
382
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}
395
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}
407
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}
418
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}
429
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}
440
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>";
450        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqle."<br>$1 = gml_id = '".$gmlid."'</p>";}
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                }
460        }
461        if ($erheb != "" OR $allefelder) {
462                echo "\n<tr>"
463                        ."\n\t<td class='li'>Datenerhebung</td>"
464                        ."\n\t<td class='fett'>";
465                        if ($showkey) {echo "<span class='key'>(".$erheb.")</span>&nbsp;";}
466                        echo $berheb."</td>"
467                        ."\n\t<td>"
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>"
471                ."\n</tr>";
472        }
473}
474echo "\n</table>";
475pg_free_result($rese);
476
477$gfla=$rowg["gebflae"]; // bei Flurstck. gebraucht
478pg_free_result($resg);
479
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>";
482
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
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
488AND st_intersects(g.wkb_geometry,f.wkb_geometry) = true ORDER BY schnittflae DESC;";
489
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>";
495        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".$sqlf."<br>$1 = gml_id = '".$gmlid."'</p>";}
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                }
531        }
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>";
540
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>";
547}
548
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
552
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>";
557
558footer($gmlid, selbstverlinkung()."?", "");
559?>
560</body>
561</html>
Note: See TracBrowser for help on using the repository browser.