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

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:
6        2016-02-24 Version fuer 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 (===)
12ToDo:
[362]13        - Template im WMS auf Ebene GebÀude hierhin verknÃŒpfen.
14*/
[422]15ini_set("session.cookie_httponly", 1);
[362]16session_start();
[402]17$allfld = "n"; $showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren
[387]18$cntget = extract($_GET); // Parameter in Variable umwandeln
19
20// strikte Validierung aller Parameter
[422]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}
[387]31if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
[422]32if ($showkey === "j") {$showkey=true;} else {$showkey=false;}
[387]33if (!preg_match('#^[j|n]{0,1}$#', $allfld)) {die ("Eingabefehler allfld");}
[422]34if ($allfld === "j") {$allefelder=true;} else {$allefelder=false;}
[402]35if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");}
[387]36
[422]37include "alkis_conf_location.php";
38include "alkisfkt.php";
39
[402]40echo <<<END
[377]41<!doctype html>
42<html lang="de">
[362]43<head>
[377]44        <meta charset="utf-8">
[387]45        <meta name="viewport" content="width=device-width, initial-scale=1.0">
[362]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">
[387]49        <style type='text/css' media='print'> td.mittelspalte {width: 190px;} </style>
[362]50</head>
51<body>
[402]52END;
[422]53
54$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); }
55
[402]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.
[422]58if ($nodebug === "j") {$debug=0;}
[362]59
[377]60$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkishaus.php'");
[387]61if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
[362]62
63// G e b a e u d e
[412]64// ... g.qualitaetsangaben,
[362]65$sqlg ="SELECT g.gml_id, g.name, g.bauweise, g.gebaeudefunktion, g.anzahlderoberirdischengeschosse AS aog, g.anzahlderunterirdischengeschosse AS aug,
[412]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,
[377]70round(st_area(g.wkb_geometry)::numeric,2) AS gebflae
71FROM ax_gebaeude g
[412]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
[362]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) {
[387]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>";}
[362]86}
87
88// Balken
[422]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>";
[362]91
[422]92echo "<p class='nwlink noprint'>"; // Umschalter: auch leere Felder
93echo "Umschalten: <a class='nwlink' href='".selbstverlinkung()."?gkz=".$gkz."&amp;gmlid=".$gmlid;
[362]94        if ($showkey) {echo "&amp;showkey=j";} else {echo "&amp;showkey=n";}
[377]95        if ($allefelder) {
96                echo "&amp;allfld=n'>nur Felder mit Inhalt";
97        } else {
98                echo "&amp;allfld=j'>auch leere Felder";
99        }
[362]100echo "</a></p>";
101
[422]102if (!($rowg = pg_fetch_assoc($resg))) {
103        echo "\n<p class='err'><br>Kein Geb&auml;ude gefunden</p>";
104        die ("Abbruch");
105}
[373]106
[422]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>";
[362]116
[422]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"];
[362]125
[422]126$baw=$rowg["bauweise"];
127$bbauw=$rowg["bbauw"];
128$dbauw=$rowg["dbauw"];
[362]129
[422]130$ofl=$rowg["lagezurerdoberflaeche"];
131$oflv=$rowg["oflv"];
132$ofld=$rowg["ofld"];
[362]133
[422]134$dga=$rowg["dachgeschossausbau"]; // Key
135$dgav=$rowg["dgaus"];           // Value
[362]136
[422]137$zus=$rowg["zustand"];          // Key
138$zusv=$rowg["zustandv"];        // Value
139$zusd=$rowg["zustandd"];        // Description
[362]140
[422]141$wgf=$rowg["wgf"];                      // Array-> kommagetr. Liste
[362]142
[422]143$daf=$rowg["dachform"];         // Key
144$dach=$rowg["bdach"];           // Value
[362]145
[422]146$hho=$rowg["objekthoehe"];
147$gfl=$rowg["geschossflaeche"];
148$grf=$rowg["grundflaeche"];
149$ura=$rowg["umbauterraum"];
150$bja=$rowg["baujahr"];
151$daa=$rowg["dachart"];
[362]152
[422]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) {
[362]198                echo "\n<tr>"
[422]199                        ."\n\t<td class='li' title='Lage mit Hausnummer oder Pseudonummer'>Adresse</td>"
200                        ."\n\t<td class='fett'>";
[362]201        }
[422]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);
[362]212
[422]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>";
[362]224
[422]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}
[362]238
[422]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}
[362]249
[422]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}
[362]260
[422]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}
[362]271
[422]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}
[388]285
[422]286// Dachgeschossausbau, Spalte dokumentation ist immer leer
287if ($dga != "" OR $allefelder) {
[362]288        echo "\n<tr>"
[422]289                ."\n\t<td class='li'>Dachgeschossausbau</td>"
[377]290                ."\n\t<td class='fett'>";
[422]291                if ($showkey and $dga != '') {echo "<span class='key'>(".$dga.")</span>&nbsp;";}
292                echo $dgav."</td>"
[388]293                ."\n\t<td>"
[422]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>"
[362]296        ."\n</tr>";
[422]297}
[377]298
[422]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}
[377]312
[422]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}
[377]343
[422]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}
[377]356
[422]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}
[377]367
[422]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}
[377]380
[422]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}
[377]392
[422]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}
[377]403
[422]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}
[377]414
[422]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}
[377]425
[422]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                }
[362]445        }
[422]446        if ($erheb != "" OR $allefelder) {
[362]447                echo "\n<tr>"
[422]448                        ."\n\t<td class='li'>Datenerhebung</td>"
[377]449                        ."\n\t<td class='fett'>";
[422]450                        if ($showkey) {echo "<span class='key'>(".$erheb.")</span>&nbsp;";}
451                        echo $berheb."</td>"
[388]452                        ."\n\t<td>"
[422]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>"
[362]456                ."\n</tr>";
457        }
[422]458}
459echo "\n</table>";
460pg_free_result($rese);
[377]461
[422]462$gfla=$rowg["gebflae"]; // bei Flurstck. gebraucht
463pg_free_result($resg);
[377]464
[422]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>";
[377]467
[422]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;";
[377]474
[422]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                }
[362]516        }
[422]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>";
[377]525
[422]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>";
[362]532}
533
[422]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
[362]537?>
538
[377]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>
[362]544
[422]545<?php footer($gmlid, selbstverlinkung()."?", ""); ?>
[362]546
547</body>
548</html>
Note: See TracBrowser for help on using the repository browser.