source: trunk/info/info/alkisn/alkislage.php @ 431

Revision 430, 18.7 KB checked in by frank.jaeger, 22 months ago (diff)

ALKIS-Auskunft angepasst an PHP 8

RevLine 
[362]1<?php
2/*      alkislage.php
3
[427]4        ALKIS-Auskunft
5        Author: Frank JÀger, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo)
6
[362]7        Kann die 3 Arten von Lagebezeichnung anzeigen und verbundene Objekte verlinken
8
9        Version:
[425]10        2016-02-24 Version fÃŒr norGIS-ALKIS-Import
[422]11        ....
12        2020-02-20 Authentifizierung ausgelagert in Function darf_ich()
13        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF']
14        2020-12-15 Input-Validation und Strict Comparisation (===)
[425]15        2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÀche)
16               Gemarkung und Flur bei Gruppenwechsel FETT anzeigen
[427]17        2022-01-12 Neue Functions LnkStf(), DsKy()
[430]18        2022-07-05 PHP 8.1: Connection verwenden bei "pg_prepare" und "pg_execute", keine NULL-Werte in String-Functions verwenden
19       
[427]20ToDo:
[362]21        - Balken-Kennzeichen kompatibel machen mit der Eingabe der Navigation fÃŒr Adresse
22        - das Modul "alkisgebaeudenw" (alle Geb. auf einem FS) verschneidet die FlÀchen und findet damit auch
[427]23        Grenz-Überbauungen und angrenzende GebÀude. Diese fehlen hier, weil nur VerknÃŒpfungen verarbeitet werden.
[387]24        Mit FlÀchen-Verschneidung auch weitere FS anzeigen?
[362]25*/
[422]26ini_set("session.cookie_httponly", 1);
[362]27session_start();
[402]28$showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren
[387]29$cntget = extract($_GET); // Parameter in Variable umwandeln
30
31// strikte Validierung aller Parameter
[422]32if (isset($gmlid)) {
33        if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");}
34} else {
35        die("Fehlender Parameter");
36}
37if (isset($gkz)) {
38        if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
39} else {
40        die("Fehlender Parameter");
41}
[387]42if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
[422]43if ($showkey === "j") {$showkey=true;} else {$showkey=false;}
[387]44if (!preg_match('#^[m|p|o]{1}$#', $ltyp)) {die ("Eingabefehler ltyp");}
[402]45if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");}
[387]46
[422]47include "alkis_conf_location.php";
48include "alkisfkt.php";
[362]49
50switch ($ltyp) {
[427]51        case "m": // "Mit HsNr" = HauptgebÀude
[362]52                $tnam = "ax_lagebezeichnungmithausnummer"; break;
[427]53        case "p": // "mit PseudoNr" = NebengebÀude
54                $tnam = "ax_lagebezeichnungmitpseudonummer"; break;
55        case "o": //"Ohne HsNr" = Gewanne oder Straße
[362]56                $tnam = "ax_lagebezeichnungohnehausnummer"; break;
57        default:
58                $ltyp = "m";
59                $tnam = "ax_lagebezeichnungmithausnummer"; break;
60}
[402]61echo <<<END
[377]62<!doctype html>
63<html lang="de">
[362]64<head>
[377]65        <meta charset="utf-8">
[387]66        <meta name="viewport" content="width=device-width, initial-scale=1.0">
[362]67        <title>ALKIS Lagebezeichnung</title>
68        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
69        <link rel="shortcut icon" type="image/x-icon" href="ico/Lage_mit_Haus.ico">
70</head>
71<body>
[402]72END;
[422]73
74$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); }
[427]75$dbg=$debug;
[425]76if ($nodebug === "j") {$dbg=0;}
[402]77
[377]78$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkislage.php'");
[387]79if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
[362]80
81// L a g e b e z e i c h n u n g
82$sql ="SELECT s.gml_id AS strgml, s.bezeichnung AS snam, b.bezeichnung AS bnam, r.bezeichnung AS rnam, k.bezeichnung AS knam, g.bezeichnung AS gnam, l.land, l.regierungsbezirk, l.kreis, l.gemeinde, l.lage, ";
83switch ($ltyp) {
84        case "m": // "Mit HsNr"
85                $sql.="l.hausnummer ";
86        break;
87        case "p": // "mit PseudoNr"
88                $sql.="l.pseudonummer, l.laufendenummer ";
89        break;
90        case "o": //"Ohne HsNr"
91                $sql.="l.unverschluesselt ";
92        break;
93}
94// "Left" weil: Bei sub-Typ "Gewanne" von Typ "o" sind keine SchlÃŒsselfelder gefÃŒllt!
95$sql.="FROM ".$tnam." l
[425]96LEFT JOIN ax_gemeinde g ON l.land=g.land AND l.regierungsbezirk=g.regierungsbezirk AND l.kreis=g.kreis AND l.gemeinde=g.gemeinde ".UnqKatAmt("l","g")
97."LEFT JOIN ax_kreisregion k ON l.land=k.land AND l.regierungsbezirk=k.regierungsbezirk AND l.kreis=k.kreis ".UnqKatAmt("l","k")
98."LEFT JOIN ax_regierungsbezirk r ON l.land=r.land AND l.regierungsbezirk=r.regierungsbezirk ".UnqKatAmt("l","r")
99."LEFT JOIN ax_bundesland b ON l.land=b.land ".UnqKatAmt("l","b")
100."LEFT JOIN ax_lagebezeichnungkatalogeintrag s
[362]101ON l.land=s.land AND l.regierungsbezirk=s.regierungsbezirk AND l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage
[389]102WHERE l.gml_id= $1 AND l.endet IS NULL AND g.endet IS NULL AND k.endet IS NULL AND r.endet IS NULL AND b.endet IS NULL AND s.endet IS NULL;";
[362]103
104$v = array($gmlid);
[430]105$res = pg_prepare($con, "", $sql);
106$res = pg_execute($con, "", $v);
[362]107if (!$res) {
[387]108        echo "\n<p class='err'>Fehler bei Lagebezeichnung.</p>";
[425]109        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";}
[362]110}
[425]111if ($dbg > 0) {
112        $zeianz=pg_num_rows($res);
113        if ($zeianz > 1){
114                echo "\n<p class='err'>Die Abfrage liefert mehr als ein (".$zeianz.") Lage-Objekt!</p>";
115                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";}
116        }
117}
[402]118if ($row = pg_fetch_assoc($res)) {
[362]119        $strgml=$row["strgml"]; // gml_id des Katalogeintrag Straße
120        $land =$row["land"];
121        $regbez=$row["regierungsbezirk"];
122        $kreis=$row["kreis"];
123        $knam=$row["knam"];
124        $rnam=$row["rnam"];
125        $bnam=$row["bnam"];
126        $gem=$row["gemeinde"];
127        $gnam=$row["gnam"];
128        $lage=$row["lage"]; // Strassenschluessel
129        $snam=$row["snam"]; //Strassennamen
[425]130//      $kennz=$land."-".$regbez."-".$kreis. ..
[362]131        $kennz=$gem."-".$lage."-"; // ToDo: Kompatibel machen als Eingabe in Navigation/Adresse
[425]132
[362]133        switch ($ltyp) {
134                case "m": // "Mit HsNr"
135                        $hsnr=$row["hausnummer"];
136                        $kennz.=$hsnr;
137                        $untertitel="Hauptgeb&auml;ude mit Hausnummer";
[422]138                        echo "\n<p class='balken lage'>ALKIS Lagebezeichnung mit Hausnummer ".$kennz."&nbsp;</p>"; // Balken
[362]139                        $osub="";
140                break;
141                case "p": // "mit PseudoNr"
142                        $pseu=$row["pseudonummer"];
143                        $lfd=$row["laufendenummer"];
144                        $kennz.=$pseu."-".$lfd;
145                        $untertitel="NebengebÀude mit laufender Nummer (Lagebezeichnung mit Pseudonummer)";
[422]146                        echo "\n<p class='balken lage'>ALKIS Lagebezeichnung NebengebÀude ".$kennz."&nbsp;</p>"; // Balken
[362]147                        $osub="";
148                break;
149                case "o": // "Ohne HsNr"
150                        $unver=$row["unverschluesselt"]; // Gewanne
151                        // 2 Unterarten bzw. Zeilen-Typen in der Tabelle
152                        if ($lage == "") {
153                                $osub="g"; // Sub-Typ Gewanne
154                                $kennz=" - ".$unver;
155                                $untertitel="Gewanne (unverschl&uuml;sselte Lage)";
[422]156                                echo "\n<p class='balken lage'>ALKIS Lagebezeichnung Ohne Hausnummer ".$kennz."&nbsp;</p>"; // Balken
[362]157                        } else {
158                                $osub="s"; // Sub-Typ Strasse (ohne HsNr)
159                                $kennz.=$unver;
160                                $untertitel="Stra&szlig;e ohne Hausnummer";
[422]161                                echo "\n<p class='balken lage'>ALKIS Lagebezeichnung Ohne Hausnummer ".$kennz."&nbsp;</p>"; // Balken
[362]162                        }
163                break;
164        }
165} else {
[387]166        echo "\n<p class='err'>Fehler! Kein Treffer fuer Lagebezeichnung mit gml_id='".$gmlid."'</p>";
[425]167        if ($dbg > 2) {
[422]168                echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";
[377]169        }
[387]170        echo "\n</body>\n</html>";
[377]171        exit;
[362]172}
173
[402]174echo "\n<h2>Lagebezeichnung</h2>\n<p>Typ: ".$untertitel."</p>";
[362]175echo "\n<table class='outer'>\n<tr>\n\t<td>";   // Tab. Kennz.
[427]176        // ToDo: kleiner, wenn ltyp=0 und die SchlÃŒsselfelder leer sind
[387]177        echo "\n\t\t<table class='kennzla' title='Lage'>"
178                ."\n\t\t<tr>";
[362]179                        if ($osub != "g") { // nicht bei Gewanne
[387]180                                echo "\n\t\t\t<td class='head'>Land</td>"
181                                ."\n\t\t\t<td class='head'>Reg.-Bez.</td>"
182                                ."\n\t\t\t<td class='head'>Kreis</td>"
183                                ."\n\t\t\t<td class='head'>Gemeinde</td>"
184                                ."\n\t\t\t<td class='head'>Stra&szlig;e</td>";
[362]185                        }
186                        switch ($ltyp) {
187                                case "m": // "Mit HsNr"
[387]188                                        echo "\n\t\t\t<td class='head'>Haus-Nr</td>";
[362]189                                break;
190                                case "p": // "mit PseudoNr"
[387]191                                        echo "\n\t\t\t<td class='head'>Haus-Nr</td>"
192                                        ."\n\t\t\t<td class='head'>lfd.-Nr</td>";
[362]193                                break;
194                                case "o": //"Ohne HsNr"
[422]195                                        if ($osub === "g") {
[387]196                                                echo "\n\t\t\t<td class='head'>unverschl&uuml;sselte Lage</td>";
[362]197                                        }
198                                break;
199                        }
[387]200                echo "\n\t\t</tr>\n\t\t<tr>";
[362]201                        if ($osub != "g") { // nicht bei Gewanne
[427]202                                echo "\n\t\t\t<td title='Bundesland'>".DsKy($land, 'Bundesland-*').$bnam."&nbsp;</td>"
203                                ."\n\t\t\t<td title='Regierungsbezirk'>".DsKy($regbez, 'Regierungsbezirk-*').$rnam."&nbsp;</td>"
204                                ."\n\t\t\t<td title='Kreis'>".DsKy($kreis, 'Kreis-*').$knam."&nbsp;</td>"
205                                ."\n\t\t\t<td title='Gemeinde'>".DsKy($gem, 'Gemeinde-*').$gnam."&nbsp;</td>"
206                                ."\n\t\t\t<td title='Stra&szlig;e'>".DsKy($lage, 'Stra&szlig;en-*');
[422]207                                if ($ltyp === "o") {
[362]208                                        echo "<span class='wichtig'>".$snam."</span>";
209                                } else {
210                                        echo $snam;
211                                }       
212                                echo "&nbsp;</td>";
213                        }
214
215                        switch ($ltyp) {
216                                case "m":
[387]217                                        echo "\n\t\t\t<td title='Hausnummer und Zusatz'><span class='wichtig'>".$hsnr."</span></td>";
[362]218                                break;
219                                case "p":
[387]220                                        echo "\n\t\t\t<td title='Pseudonummer - Nebengeb&auml;ude zu dieser Hausnummer'>".$pseu."</td>"
221                                        ."\n\t\t\t<td title='Laufende Nummer Nebengeb&auml;ude'><span class='wichtig'>".$lfd."</span></td>";
[362]222                                break;
223                                case "o":
[422]224                                        if ($osub === "g") {
[387]225                                                echo "\n\t\t\t<td title='Gewanne'><span class='wichtig'>".$unver."</span></td>";
[362]226                                        }
227                                break;
228                        }
[387]229                echo "\n\t\t</tr>"
230        ."\n\t\t</table>";
[362]231
232        echo "\n\t</td>\n\t<td>";
233
234        // Kopf Rechts: weitere Daten?
235        if ($osub != "g") { // Link zu Strasse
236                echo "\n\t\t<p class='nwlink noprint'>"
[427]237                        ."\n\t\t\t<a href='alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$strgml.LnkStf()
238                        ."' title='Stra&szlig;e'>Stra&szlig;e <img src='ico/Strassen.png' width='16' height='16' alt=''></a>"
[362]239                ."\n\t\t</p>";
240        }
241
242echo "\n\t</td>\n</tr>\n</table>";
243
[427]244// F L U R S T Ü C K E
[362]245// ax_Flurstueck  >weistAuf>  ax_LagebezeichnungMitHausnummer
246// ax_Flurstueck  >zeigtAuf>  ax_LagebezeichnungOhneHausnummer
247// ++ auch FlÀchenverschneidung?
[422]248if ($ltyp != "p") { // Pseudonummer linkt nur GebÀude
[387]249        echo "\n\n<a id='fs'></a>\n<h3><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;cke</h3>"
[362]250        ."\n<p>mit dieser Lagebezeichnung.</p>";
251        switch ($ltyp) {
252                case "m": $bezart="weistauf"; break;
253                case "o": $bezart="zeigtauf"; break;
254        }
255
[425]256        $sql ="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche
257        FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ".UnqKatAmt("f","g")
258        ."WHERE $1 = ANY(f.".$bezart.") AND f.endet IS NULL AND g.endet IS NULL
[362]259        ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
260
261        $v = array($gmlid);
[430]262        $resf = pg_prepare($con, "", $sql);
263        $resf = pg_execute($con, "", $v);
[362]264        if (!$resf) {
[387]265                echo "\n<p class='err'>Fehler bei Flurst&uuml;ck.</p>";
[425]266                if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";}     
[362]267        }
268        echo "\n<table class='fs'>"
269        ."\n<tr>"
[377]270                ."\n\t<td class='heads'>Gemarkung<img src='ico/sort.png' width='10' height='10' alt='' title='Sortierung'></td>"
271                ."\n\t<td class='heads'>Flur<img src='ico/sort.png' width='10' height='10' alt='' title='Sortierung'></td>"
272                ."\n\t<td class='heads fsnr' title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><img src='ico/sort.png' width='10' height='10' alt='' title='Sortierung'>Flurst.</td>"
[362]273                ."\n\t<td class='head fla'>Fl&auml;che</td>"
[387]274                ."\n\t<td class='head nwlink noprint' title='Verlinkung zu anderen Nachweis-Arten und verbundenen Objekten'>weitere Auskunft</td>"
[362]275        ."\n</tr>";
276        $j=0;
[387]277        $zpaar=false;
[425]278        $gwgmkg=""; // Gruppenwechsel
279        $gwflur="";
[402]280        while($rowf = pg_fetch_assoc($resf)) {
[425]281                $gmkg=$rowf["bezeichnung"];
[362]282                $flur=str_pad($rowf["flurnummer"], 3, "0", STR_PAD_LEFT);
283                $fskenn=$rowf["zaehler"]; // Bruchnummer
284                if ($rowf["nenner"] != "") {$fskenn.="/".$rowf["nenner"];}
285                $flae=number_format($rowf["amtlicheflaeche"],0,",",".") . " m&#178;";
[387]286
287                if ($zpaar) {$trclass='paa';} else {$trclass='unp';}
288                $zpaar=!$zpaar;
289
290                echo "\n<tr class='".$trclass."'>"
[427]291                        ."\n\t<td>".DsKy($rowf["gemarkungsnummer"], 'Gemarkungsnummer');
[425]292                        if ($gwgmkg != $gmkg) {
293                                echo "<b>".$gmkg."</b></td>";
294                                $gwgmkg=$gmkg;
295                                $gwflur="";
296                        } else {
297                                echo $gmkg."</td>";
298                        }
299                        if ($gwflur != $flur) {
300                                echo "\n\t<td><b>".$flur."</b></td>";
301                                $gwflur=$flur;
302                        } else {
303                                echo "\n\t<td>".$flur."</td>";
304                        }
305                        echo "\n\t<td class='fsnr'><span class='wichtig'>".$fskenn."</span></td>"
[362]306                        ."\n\t<td class='fla'>".$flae."</td>"
307                        ."\n\t<td>\n\t\t<p class='nwlink noprint'>"
[427]308                                ."\n\t\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$rowf["gml_id"].LnkStf()."&amp;eig=n"
309                                ."' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck <img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''></a>"
[362]310                        ."\n\t\t</p>\n\t</td>"
311                ."\n</tr>";
312                $j++;
313        }
314        echo "\n</table>";
315        if ($j > 6) {echo "<p class='cnt'>".$j." Flurst&uuml;cke</p>";}
316}
317
318// L A G E
319// andere Lage mit gleicher Hausnummer suchen
[422]320if ($ltyp != "o") { // nicht bei Gewanne (Ohne HsNr)
[387]321        echo "\n\n<a id='lage'></a>\n<h3><img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''> Lage</h3>"
322        ."\n<p>Andere Lagebezeichnungen zur gleichen Hausnummer.</p>";
[362]323        $whereclaus="WHERE land= $1 AND regierungsbezirk= $2 AND kreis= $3 AND gemeinde= $4 AND lage= $5 ";
[427]324        $url=selbstverlinkung()."?gkz=".$gkz.LnkStf()."&amp;gmlid="; // Basis
[362]325
326        switch ($ltyp) {
[387]327                case "m": // aktuell: Hausnummer gefunden (HauptgebÀude)
[362]328                        // dazu alle NebengebÀude suchen
329                        echo "\n<p>Nebengeb&auml;ude:&nbsp;";
330                        $sql ="SELECT l.gml_id, l.laufendenummer FROM ax_lagebezeichnungmitpseudonummer l "
331                        .$whereclaus."AND lage= $6 AND pseudonummer= $7 AND l.endet IS NULL ORDER BY laufendenummer;";
332
333                        $v = array($land,$regbez,$kreis,$gem,$lage,$lage,$hsnr);
[430]334                        $res = pg_prepare($con, "", $sql);
335                        $res = pg_execute($con, "", $v);
[362]336                        if (!$res) {
[422]337                                echo "\n<p class='err'>Fehler bei Nebengeb&auml;ude.</p>";
[425]338                                if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} // 7 $-Parameter
[362]339                        }
340                        $neb=0;
[402]341                        while($row = pg_fetch_assoc($res)) {
[427]342                                echo "\n\t<a href='".$url.$row["gml_id"].LnkStf()."&amp;ltyp=p'>lfd.-Nr ".$row["laufendenummer"]."</a>&nbsp;&nbsp;";
[362]343                                $neb++;
344                        }
[422]345                        if ($neb === 0) {echo "keine";}
[362]346                        echo "</p>";
347                break;
348
[387]349                case "p": // aktuell NebengebÀude: Haupt- und (andere) NebengebÀude suchen
[362]350                        echo "\n<p>Hauptgeb&auml;ude: ";
[387]351                        $sql ="SELECT l.gml_id FROM ax_lagebezeichnungmithausnummer l ".$whereclaus."AND hausnummer= $6 AND l.endet IS NULL ;";
[362]352
353                        $v = array($land,$regbez,$kreis,$gem,$lage,$pseu);
[430]354                        $res = pg_prepare($con, "", $sql);
355                        $res = pg_execute($con, "", $v);
[362]356
[387]357                        if (!$res) {echo "\n<p class='err'>Fehler bei Hauptgeb&auml;ude.<br>".$sql."</p>";}
[362]358                        $hg=0;
[402]359                        while($row = pg_fetch_assoc($res)) {
[427]360                                echo "\n\t<a href='".$url.$row["gml_id"].LnkStf()."&amp;ltyp=m'>Haus-Nr ".$pseu."</a>&nbsp;&nbsp;";
[362]361                                $hg++;
362                        }
[422]363                        if ($hg === 0) {echo "&nbsp;Kein Hauptgeb&auml;ude gefunden.";}
[362]364                        echo "</p>";
365
366                        echo "\n<p>Weitere Nebengeb&auml;ude:&nbsp;";
367                        $sql ="SELECT l.gml_id, l.laufendenummer FROM ax_lagebezeichnungmitpseudonummer l "
368                        .$whereclaus."AND pseudonummer= $6 AND laufendenummer <> $7 AND l.endet IS NULL ORDER BY laufendenummer;";
369                        $v=array($land,$regbez,$kreis,$gem,$lage,$pseu,$lfd);
[430]370                        $res = pg_prepare($con, "", $sql);
371                        $res = pg_execute($con, "", $v);
[362]372                        if (!$res) {
[387]373                                echo "\n<p class='err'>Fehler bei Nebengeb&auml;ude.</p>";
[425]374                                if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} // 7 $-Parameter               
[362]375                        }
376                        $neb=0;
[402]377                        while($row = pg_fetch_assoc($res)) {
[427]378                                echo "\n\t<a href='".$url.$row["gml_id"].LnkStf()."&amp;ltyp=p'>lfd.-Nr ".$row["laufendenummer"]."</a>&nbsp;&nbsp;";
[362]379                                $neb++;
380                        }
[422]381                        if ($neb === 0) {echo "keine";}
[362]382                        echo "</p>";
383                break;
384        }
385}
386
[427]387// G E B Ä U D E
[422]388if ($ltyp != "o") { // OhneHsNr linkt nur Flurst.
[387]389        echo "\n\n<a id='geb'></a>\n<h3><img src='ico/Haus.png' width='16' height='16' alt=''> Geb&auml;ude</h3>"
[362]390        ."\n<p>mit dieser Lagebezeichnung.</p>";
391        switch ($ltyp) {
392                case "p": $bezart="g.hat"; break;
393                case "m": $bezart="ANY(g.zeigtauf)"; break; // array
394        }
395
396        $sql ="SELECT g.gml_id, g.gebaeudefunktion, array_to_string(g.name, ',') AS name, g.bauweise, g.grundflaeche, g.zustand, round(st_area(g.wkb_geometry)::numeric,2) AS flaeche,
[430]397        h.beschreibung AS hv, coalesce(h.dokumentation, '') AS hd, u.beschreibung AS uv, coalesce(u.dokumentation, '') AS ud, z.beschreibung AS zv, coalesce(z.dokumentation, '') AS zd FROM ax_gebaeude g
[412]398        LEFT JOIN ax_bauweise_gebaeude h ON g.bauweise = h.wert
399        LEFT JOIN ax_gebaeudefunktion u ON g.gebaeudefunktion = u.wert
400        LEFT JOIN ax_zustand_gebaeude z ON g.zustand = z.wert
[362]401        WHERE $1 = ".$bezart." AND g.endet IS NULL;";
[377]402        // Keine Sortierung (ORDER BY) notwendig weil i.d.R. nur ein (Haupt-)GebÀude diese Hausnummer hat.
[412]403        // FÃŒr weiter Eigenschaften dem Link "Haus" folgen.
[362]404
405        $v = array($gmlid);
[430]406        $res = pg_prepare($con, "", $sql);
407        $res = pg_execute($con, "", $v);
[362]408        if (!$res) {
[387]409                echo "\n<p class='err'>Fehler bei Geb&auml;ude.</p>";
[425]410                if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";}
[362]411        }
412        echo "\n<table class='geb'>"
413        ."\n<tr>"
414                ."\n\t<td class='head' title='Name ist der Eigenname oder die Bezeichnung des Geb&auml;udes.'>Name</td>"
415                ."\n\t<td class='head fla' title='Fl&auml;che'>Fl&auml;che</td>"
416                ."\n\t<td class='head' title='Geb&auml;udefunktion ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des Geb&auml;udes'>Funktion</td>"
417                ."\n\t<td class='head' title='Bauweise ist die Beschreibung der Art der Bauweise'>Bauweise</td>"
418                ."\n\t<td class='head' title='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.'>Zustand</td>"
[377]419                ."\n\t<td class='head nwlink' title='Komplette Hausdaten'>Hausdaten</td>"
[362]420        ."\n</tr>";
421        $i=0;
[402]422        while($row = pg_fetch_assoc($res)) {
[362]423                $ggml=$row["gml_id"];
424                $gfla=$row["flaeche"];
[430]425                $ud=htmlentities($row["ud"], ENT_QUOTES, "UTF-8");
426                $hd=htmlentities($row["hd"], ENT_QUOTES, "UTF-8");
427                $zd=htmlentities($row["zd"], ENT_QUOTES, "UTF-8");
[387]428                echo "\n<tr>"
[427]429                ."\n\t<td>".$row["name"]."</td>"
430                ."\n\t<td class='fla'>".$gfla." m&#178;</td>"
[430]431                ."\n\t<td title='".$ud."'>".DsKy($row["gebaeudefunktion"], 'Geb&auml;udefunktion-*').$row["uv"]."</td>"
432                ."\n\t<td title='".$hd."'>".DsKy($row["bauweise"], 'Bauweise-*').$row["hv"]."</td>"
433                ."\n\t<td title='".$zd."'>".DsKy($row["zustand"], 'Zustand-*').$row["zv"]."</td>"
[427]434                ."\n\t<td class='nwlink noprint'>"
435                        ."\n\t\t<a title='komplette Hausdaten' href='alkishaus.php?gkz=".$gkz."&amp;gmlid=".$ggml.LnkStf()
436                        ."'>Haus <img src='ico/Haus.png' width='16' height='16' alt=''></a>"
437                ."\n\t</td>\n</tr>";
[362]438        }
439        echo "\n</table>";
440}
441
[425]442echo "<div class='buttonbereich noprint'>\n<hr>"
443        ."\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;";
444if ($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;";}
445echo "\n</div>";
[362]446
[425]447footer($gmlid, selbstverlinkung()."?", "&amp;ltyp=".$ltyp);
448?>
[362]449
450</body>
451</html>
Note: See TracBrowser for help on using the repository browser.