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

Revision 422, 19.9 KB checked in by frank.jaeger, 3 years ago (diff)

Aktualisierungen der ALKIS-Buchauskunft, neues Modul für Bauwerke, Härtung

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