source: trunk/info/info/alkisn/alkisfsnw.php @ 387

Revision 387, 37.0 KB checked in by frank.jaeger, 7 years ago (diff)

Überarbeitung der Buchauskunft: FS-Nachweis enthält optional die berechtigten Buchungen, Input-Validation, Styling, kleinere Korrekturen, HTML-Profilierung

RevLine 
[362]1<?php
2/*      Modul: alkisfsnw.php
3
4        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
5        FlurstÃŒcksnachweis fuer ein FlurstÃŒckskennzeichen aus ALKIS PostNAS
6
7        Version:
8        2016-02-24 Version fuer norGIS-ALKIS-Import
[375]9        2016-03-14 Korrekturen
[377]10        2016-12-01 HTML5, Gemeinsam genutzte Datenbanken ermöglichen
11        2016-12-05 Nutzungsart-Kategorie ist nun in Text enthalten, nicht mehr aus der Definition ausschneiden
[387]12        2017-06-08 optional "berechtigte Buchungen" anzeigen, Function "eigentuemer" ohne Parameter $con,
13                                Validierung Eingabeparameter, Feinkorrekturen
[362]14
15        ToDo:
[387]16        - BodenschÀtzung anzeigen (siehe Mail Frau Weyand ITEBO vom 15.05.17)
[362]17        - Bessere Differenzierung bei den Nutzungsarten (Tabelle dafÃŒr aufbauen)
18*/
19session_start();
[387]20
21// Var. aus Parameter initalisieren
[375]22$eig="n";
[387]23$berbu="n";
24$showkey="n";
25
26// alle Parameter in Variable umwandeln
[362]27$cntget = extract($_GET);
[387]28
29// strikte Validierung aller Parameter
30if (isset($gmlid)) {
31        if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");}
32        $fskennz='';
33} else { // Alternativ
34        $gmlid='';
35        if (isset($fskennz)) { // llgggg-fff-11111/222 oder z.B.'052647002001910013__' oder '05264700200012______'
36                if (!preg_match('#^[0-9\-_/]{8,20}$#', $fskennz)) {die ("Eingabefehler fskennz");}
37        } else {
38                $fskennz='';
39        }
40}
41if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
42if (!preg_match('#^[j|n]{0,1}$#', $eig)) {die("Eingabefehler eig");}
43if (!preg_match('#^[j|n]{0,1}$#', $berbu)) {die ("Eingabefehler berbu");}
44if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
45if ($showkey == "j") {$showkey=true;} else {$showkey=false;} // "j"/"n" als boolean umwandeln, ist praktischer abzufragen, wird oft gebraucht
46
[362]47require_once("alkis_conf_location.php");
48if ($auth == "mapbender") {require_once($mapbender);}
49include("alkisfkt.php");
50?>
[377]51<!doctype html>
52<html lang="de">
[362]53<head>
[377]54        <meta charset="utf-8">
[387]55        <meta name="viewport" content="width=device-width, initial-scale=1.0">
[362]56        <title>ALKIS Flurst&uuml;cksnachweis</title>
57        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
58        <link rel="shortcut icon" type="image/x-icon" href="ico/Flurstueck.ico">
59        <script type="text/javascript">
60                function ALKISexport() {
61                        window.open(<?php echo "'alkisexport.php?gkz=".$gkz."&tabtyp=flurstueck&gmlid=".$gmlid."'"; ?>);
62                }
63        </script>
64</head>
65<body>
66<?php
67// S t a r t
[377]68$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisfsnw.php'");
[387]69if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
[362]70
71// Ein (ALB- ?) FlurstÃŒcks-Kennzeichen wurde alternativ zur gml_id ÃŒbermittelt
[387]72if ($fskennz != '') {
[362]73        // Übergabe Format z.B. "llgggg-fff-nnnn/zz.nn" oder "gggg-ff-nnn/zz"
74        $arr=explode("-", $fskennz, 4);
75        $zgemkg=trim($arr[0]);
[387]76        if (strlen($zgemkg) == 20 and !isset($arr[1])) { // Oh, ist wohl schon das Datenbank-Feldformat
[362]77                $fskzdb=$zgemkg;
78        } else { // Nö, ist wohl eher ALB-Format
79                // Das Kennzeichen auseinander nehmen.
80                if (strlen($zgemkg) == 6) {
81                        $land=substr($zgemkg, 0, 2);
82                        $zgemkg=substr($zgemkg, 2, 4);
83                } else { // kein schöner Land ..
84                        $land=$defland; // Default-Land aus config
85                }
86                $zflur=str_pad($arr[1], 3 , "0", STR_PAD_LEFT); // Flur-Nr
87                $zfsnr=trim($arr[2]); // FlurstÃŒcke-Nr
88                $zn=explode("/", $zfsnr, 2); // Bruch?
[387]89                $zzaehler=str_pad(trim($zn[0]), 5 , "0", STR_PAD_LEFT);
90                if (isset($zn[1])) {
91                        $znenner=trim($zn[1]);
92                } else {
93                        $znenner="";
94                }
[362]95                if (trim($znenner, " 0.") == "") { // kein Bruch oder nur Nullen
96                        $znenner="____"; // in DB-Spalte mit Tiefstrich aufgefÃŒllt
97                } else {
98                        $zn=explode(".", $znenner, 2); // .00 wegwerfen
99                        $znenner=str_pad($zn[0], 4 , "0", STR_PAD_LEFT);
100                }
101                // nun die Teile stellengerecht wieder zusammen setzen         
102                $fskzdb=$land.$zgemkg.$zflur.$zzaehler.$znenner.'__'; // FS-Kennz. Format Datenbank
103        }
104        // Spalte "flurstueckskennzeichen" ist in DB indiziert
105        // Format z.B.'052647002001910013__' oder '05264700200012______'
106        $sql ="SELECT gml_id FROM ax_flurstueck WHERE flurstueckskennzeichen= $1 AND endet IS NULL ;";
107
108        $v = array($fskzdb);
109        $res = pg_prepare("", $sql);
110        $res = pg_execute("", $v);
111        if ($row = pg_fetch_array($res)) {
112                $gmlid=$row["gml_id"];
113        } else {
[387]114                echo "\n<p class='err'>Fehler! Kein Treffer f&uuml;r Flurst&uuml;ckskennzeichen='".$fskennz."' (".$fskzdb.")</p>";
115                echo "<p>Kennzeichen veraltet? <a href='./alkisfshist.php?gkz=".$gkz."&fskennz=".$fskennz."'>Suche in der Flurst&uuml;cks-Historie</a></p>";
116                echo "\n</body>\n</html>";
117                return;
[362]118        }
119        pg_free_result($res);
120}
121
122// F L U R S T U E C K
123$sql ="SELECT f.name, f.flurnummer, f.zaehler, f.nenner, f.regierungsbezirk, f.kreis, f.gemeinde, f.amtlicheflaeche, st_area(f.wkb_geometry) AS fsgeomflae, f.zeitpunktderentstehung, g.gemarkungsnummer, g.bezeichnung
124FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer
125WHERE f.gml_id= $1 AND f.endet IS NULL;";
126
127$v = array($gmlid); // mit gml_id suchen
128$res = pg_prepare("", $sql);
129$res = pg_execute("", $v);
130
131if (!$res) {
[387]132        echo "\n<p class='err'>Fehler bei Flurstuecksdaten</p>";
133        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
[362]134}
135if ($row = pg_fetch_array($res)) {
136        $gemkname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
137        $gmkgnr=$row["gemarkungsnummer"];
138        $bezirk=$row["regierungsbezirk"];
139        $kreis=$row["kreis"];
140        $gemeinde=$row["gemeinde"];
141        $flurnummer=$row["flurnummer"];
142        $zaehler=$row["zaehler"];
143        $nenner=$row["nenner"];
144        $flstnummer=$zaehler;
145        if ($nenner > 0) {$flstnummer.="/".$nenner;} // BruchNr
146        $fsbuchflae=$row["amtlicheflaeche"]; // amtliche Fl. aus DB-Feld
147        $fsgeomflae=$row["fsgeomflae"]; // aus Geometrie ermittelte FlÀche
148        $fsbuchflaed=number_format($fsbuchflae,0,",",".") . " m&#178;"; // Display-Format dazu
149        $fsgeomflaed=number_format($fsgeomflae,0,",",".") . " m&#178;";
150        $entsteh=$row["zeitpunktderentstehung"];
151        $name=$row["name"]; // Fortfuehrungsnummer(n)
152        $arrn = explode(",", trim($name, "{}") ); // PHP-Array
153} else {
[387]154        echo "\n<p class='err'>Fehler! Kein Treffer f&uuml;r Flurst&uuml;ck mit gml_id=".$gmlid."</p>";
155        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
156        echo "\n</body>\n</html>";
[362]157        return;
158}
159pg_free_result($res);
[377]160
[362]161// Balken
162if ($eig=="j") {
[387]163        echo "<p class='fsei'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>"
164        ."\n<h2><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;ck mit Eigent&uuml;mer</h2>";
[362]165} else {
[387]166        echo "<p class='fskennz'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>"
167        ."\n<h2><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;ck</h2>";
[362]168}
[377]169
170// PrÃŒfung der Gebiets-Berechtigung bei gemeinsam genutzten Datenbanken (Kreis und Gemeinde)
171// FÃŒr das gkz (z.B. aus dem Mapfile-Namen) wird in der Konfiguration ein Filter gesetzt.
172if ( ($filtkreis != '' and $filtkreis != $kreis) or ($filtgem != '' and $filtgem != $gemeinde) ) {
173        // Einer der gesetzten Filter passt nicht
174        if ($debug > 2) {
175        //++ Schönes Bild? Stop-Zeichen?
[387]176                echo "\n<p class='err'>Filter Kreis='".$filtkreis."', Gemeinde='".$filtgem."'</p>"
177                ."\n<p class='err'>Flstk. Kreis='".$fskrs."', Gemeinde='".$fsgem."'</p>";
[377]178        }
179        echo "\n<br><p class='stop1'>Zugriff nicht erlaubt</p>"
180        ."\n<br><p class='stop2'>Dies Flurst&uuml;ck liegt ausserhalb der zust&auml;ndigen Stadt oder Gemeinde.</p>\n</body>\n</html>";
181        exit;
182}
183
184echo "\n<table class='outer'>\n<tr>\n\t<td>" // linke Seite
[387]185        ."\n\t\t<table class='kennzfs' title='Flurst&uuml;ckskennzeichen'>\n\t\t<tr>" // darin Tabelle Kennzeichen
186                ."\n\t\t\t<td class='head'>Gmkg</td>\n\t\t\t<td class='head'>Flur</td>\n\t\t\t<td class='head'>Flurst-Nr.</td>\n\t\t</tr>"
187                ."\n\t\t<tr>\n\t\t\t<td title='Gemarkung'>";
[362]188                if ($showkey) {
189                        echo "<span class='key'>".$gmkgnr."</span><br>";
190                }
[377]191                echo $gemkname."&nbsp;</td>"
[387]192                ."\n\t\t\t<td title='Flurnummer'>".$flurnummer."</td>"
193                ."\n\t\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>\n\t\t</tr>"
194        ."\n\t\t</table>"
[377]195."\n\t</td>\n\t<td>" // rechte Seite
[387]196        ."\n\t\t<table class='fsd'>" // FS-Daten 2 Spalten
197                ."\n\t\t<tr>\n\t\t\t<td>Entstehung</td>"
198                ."\n\t\t\t<td>".$entsteh."</td>\n\t\t</tr>"
199                ."\n\t\t<tr>"
200                        ."\n\t\t\t<td>letz. Fortf</td>"
201                        ."\n\t\t\t<td title='Jahrgang / Fortf&uuml;hrungsnummer - Fortf&uuml;hrungsart'>";
[362]202                                foreach($arrn AS $val) { // Zeile f. jedes Element des Array
203                                        echo trim($val, '"')."<br>";
204                                }
[377]205                        echo "</td>"
[387]206                ."\n\t\t</tr>"
207        ."\n\t\t</table>"
[377]208."\n\t</td>\n</tr>\n</table>";
[362]209//      echo "\n<tr>\n\t<td>Finanzamt</td>\n\t<td>".$finanzamt." ".$finame  . "</td>\n</tr>";
210// Ende Seitenkopf
211
[377]212echo "\n<hr>"
213."\n<p class='nwlink noprint'>weitere Auskunft:</p>" // oben rechts von der Tabelle
214."\n<table class='fs'>";
[362]215
216// ** G e b i e t s z u g e h o e r i g k e i t **
217// eine Tabellenzeile mit der Gebietszugehoerigkeit eines Flurstuecks wird ausgegeben
218// Schluessel "land" wird nicht verwendet, gibt es Bestaende wo das nicht einheitlich ist?
219echo "\n<tr>\n\t<td class='ll'><img title='Im Gebiet von' src='ico/Gemeinde.png' width='16' height='16' alt=''> Gebiet:</td>";
220
221// G e m e i n d e
222$sql="SELECT bezeichnung FROM ax_gemeinde WHERE regierungsbezirk= $1 AND kreis= $2 AND gemeinde= $3 AND endet IS NULL;";
223
224$v = array($bezirk,$kreis,$gemeinde);
225$res = pg_prepare("", $sql);
226$res = pg_execute("", $v);
227if (!$res) {
[387]228        echo "\n<p class='err'>Fehler bei Gemeinde</p>";
229        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";}
[362]230}
231$row = pg_fetch_array($res);
232$gnam = htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
[387]233echo "\n\t<td class='lr'>Gemeinde</td>\n\t<td class='lr'>";
234if ($showkey) {echo "<span class='key'>(".$gemeinde.")</span> ";}
[377]235// Link zur FS-Historie (passt nicht ganz in die Zeile "Gemeinde", aber gut unter "weitere Auskunft")
[387]236echo $gnam."</td>\n\t<td class='nwlink'>"
237        ."\n\t\t<p class='nwlink noprint'>"
238                ."\n\t\t\t<a href='alkisfshist.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
239                        if ($showkey) {echo "&amp;showkey=j";}
[377]240                        echo "' title='Vorg&auml;nger-Flurst&uuml;cke'>Historie "
241                        ."<img src='ico/Flurstueck_Historisch.png' width='16' height='16' alt=''>"
242                ."</a>"
[387]243        ."\n\t\t</p>"
244. "\n\t</td>\n</tr>";
[362]245pg_free_result($res);
246
247// K r e i s
248$sql="SELECT bezeichnung FROM ax_kreisregion WHERE regierungsbezirk= $1 AND kreis= $2 AND endet IS NULL;";
249$v = array($bezirk,$kreis);
250$res = pg_prepare("", $sql);
251$res = pg_execute("", $v);
252if (!$res) {
[387]253        echo "\n<p class='err'>Fehler bei Kreis</p>";
254        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";}
[362]255}
256$row = pg_fetch_array($res);
257$knam = htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
[387]258echo "\n<tr>\n\t<td>&nbsp;</td>\n\t<td>Kreis</td>\n\t<td>";
259if ($showkey) {echo "<span class='key'>(".$kreis.")</span> ";}
260echo $knam."</td>\n\t<td>&nbsp;</td>\n</tr>";
[362]261pg_free_result($res);
262
263// R e g - B e z
264$sql="SELECT bezeichnung FROM ax_regierungsbezirk WHERE regierungsbezirk= $1 AND endet IS NULL;";
265$v = array($bezirk);
266$res = pg_prepare("", $sql);
267$res = pg_execute("", $v);
268if (!$res) {
[387]269        echo "\n<p class='err'>Fehler bei Regierungsbezirk</p>";
270        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";}
[362]271}
272$row=pg_fetch_array($res);
273$bnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
[387]274echo "\n<tr>\n\t<td>&nbsp;</td>\n\t<td>Regierungsbezirk</td>\n\t<td>";
275if ($showkey) {echo "<span class='key'>(".$bezirk.")</span> ";}
276echo $bnam."</td>\n\t<td>&nbsp;</td>\n</tr>";
[362]277pg_free_result($res);
278// ENDE G e b i e t s z u g e h o e r i g k e i t
279
280// ** L a g e b e z e i c h n u n g **
281
282// Lagebezeichnung MIT Hausnummer
283// ax_flurstueck  >weistAuf>  AX_LagebezeichnungMitHausnummer
284$sql="SELECT DISTINCT l.gml_id, l.gemeinde, l.lage, l.hausnummer, s.bezeichnung
285FROM ax_flurstueck f JOIN ax_lagebezeichnungmithausnummer l ON l.gml_id=ANY(f.weistauf) 
286JOIN ax_lagebezeichnungkatalogeintrag s ON l.land=s.land AND l.regierungsbezirk=s.regierungsbezirk AND l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage
287WHERE f.gml_id= $1 AND f.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL   
288ORDER BY l.gemeinde, l.lage, l.hausnummer;";
289
290$v = array($gmlid);
291$res = pg_prepare("", $sql);
292$res = pg_execute("", $v);
293
294if (!$res) {
[387]295        echo "\n<p class='err'>Fehler bei Lagebezeichnung mit Hausnummer</p>";
[362]296        if ($debug > 1) {
[387]297                echo "\n<p class='dbg'>Fehler:".pg_last_error()."</p>";
298                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
[362]299        }
300} else {
301        $j=0;
302        while($row = pg_fetch_array($res)) {
303                $sname = htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name
304                echo "\n<tr>\n\t";
305                        if ($j == 0) {
[387]306                                echo "\n\t<td class='ll'><img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''> Adresse:</td>";
[362]307                        } else {
[387]308                                echo "\n\t<td>&nbsp;</td>";
[362]309                        }
[377]310                        echo "\n\t<td>&nbsp;</td>"
311                        ."\n\t<td class='lr'>";
[362]312                        if ($showkey) {
313                                echo "<span class='key' title='Straßenschl&uuml;ssel'>(".$row["lage"].")</span>&nbsp;";
314                        }
[377]315                        echo $sname."&nbsp;".$row["hausnummer"]."</td>"
316                        ."\n\t<td>\n\t\t<p class='nwlink noprint'>"
317                                ."\n\t\t\t<a title='Lagebezeichnung mit Hausnummer' href='alkislage.php?gkz=".$gkz."&amp;ltyp=m&amp;gmlid=".$row["gml_id"];
[362]318                                if ($showkey) {echo "&amp;showkey=j";}
[377]319                                echo "'>Lage <img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''></a>"
320                        ."\n\t\t</p>\n\t</td>"
321                ."\n</tr>";
[362]322                $j++;
323        }
324        $cnt_adressen=$j;
325        pg_free_result($res);
326}
327// +++ Verbesserung: mehrere HsNr zur gleichen Straße als Liste?
328
329// Lagebezeichnung OHNE Hausnummer  (Gewanne oder nur Strasse)
330// ax_flurstueck  >zeigtAuf>  AX_LagebezeichnungOhneHausnummer
331$sql ="SELECT l.gml_id, l.unverschluesselt, l.gemeinde, l.lage, s.bezeichnung
332FROM ax_flurstueck f JOIN ax_lagebezeichnungohnehausnummer l ON l.gml_id=ANY(f.zeigtauf)
333LEFT JOIN ax_lagebezeichnungkatalogeintrag s ON l.land=s.land AND l.regierungsbezirk=s.regierungsbezirk AND l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage
334WHERE f.gml_id = $1 AND f.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL;";
335
336$v = array($gmlid);
337$res = pg_prepare("", $sql);
338$res = pg_execute("", $v);
339if (!$res) {
[387]340        echo "\n<p class='err'>Fehler bei Lagebezeichnung ohne Hausnummer</p>";
[362]341        //if ($debug > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($res)."</p>";}
[387]342        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
[362]343}
344$j=0;
345// Es wird auch eine Zeile ausgegeben, wenn kein Eintrag gefunden!
346while($row = pg_fetch_array($res)) {
347        $gewann = htmlentities($row["unverschluesselt"], ENT_QUOTES, "UTF-8");
348        $skey=$row["lage"]; // Strassenschl.
349        $lgml=$row["gml_id"]; // key der Lage
350        if (!$gewann == "") {
[377]351                echo "\n<tr>"
352                        ."\n\t<td class='ll' title='Lagebezeichnung'><img src='ico/Lage_Gewanne.png' width='16' height='16' alt=''> Gewanne:</td>"
353                        ."\n\t<td></td>"
354                        ."\n\t<td class='lr'>".$gewann."</td>"
355                        ."\n\t<td>\n\t\t<p class='nwlink noprint'>"
356                                ."\n\t\t\t<a title='Lagebezeichnung Ohne Hausnummer' href='alkislage.php?gkz=".$gkz."&amp;ltyp=o&amp;gmlid=".$lgml;
[362]357                                if ($showkey) {echo "&amp;showkey=j";}                         
[377]358                                echo "'>\n\t\t\tLage <img src='ico/Lage_Gewanne.png' width='16' height='16' alt=''></a>"
359                        ."\n\t\t</p>\n\t</td>"
360                ."\n</tr>";
[362]361        }
362        // Gleicher DB-Eintrag in zwei HTML-Zeilen, besser nur ein Link
363        if ($skey > 0) {
[377]364                echo "\n<tr>"
365                        ."\n\t<td class='ll'><img src='ico/Lage_an_Strasse.png' width='16' height='16' alt=''> Stra&szlig;e:</td>"
366                        ."\n\t<td></td>"
367                        ."\n\t<td class='lr'>";
[362]368                        if ($showkey) {
369                                echo "<span class='key'>(".$skey.")</span>&nbsp;";
370                        }
[377]371                        echo $row["bezeichnung"]."</td>"
372                        ."\n\t<td>\n\t\t<p class='nwlink noprint'>"
373                                ."\n\t\t\t<a title='Lagebezeichnung Ohne Hausnummer' href='alkislage.php?gkz=".$gkz."&amp;ltyp=o&amp;gmlid=".$lgml;
[362]374                                if ($showkey) {echo "&amp;showkey=j";}                         
[377]375                                echo "'>\n\t\t\tLage <img src='ico/Lage_an_Strasse.png' width='16' height='16' alt=''>\n\t\t\t</a>"
376                        ."\n\t\t</p>\n\t</td>"
377                ."\n</tr>";
[362]378        }
379        $j++;
380}
381pg_free_result($res);
382// ENDE  L a g e b e z e i c h n u n g
383
384// ** N U T Z U N G ** Gemeinsame FlÀche von NUA und FS
385// Tabellenzeilen (3 Spalten) mit tats. Nutzung zu einem FS ausgeben
386
387/* N U T Z U N G   C l a s s i c (alt)
388$sql ="SELECT m.title, m.fldclass, m.fldinfo, n.gml_id, n.nutz_id, n.class, n.info, n.zustand, n.name, n.bezeichnung, m.gruppe,
389st_area(st_intersection(n.wkb_geometry,f.wkb_geometry)) AS schnittflae, c.label, c.blabla
390FROM ax_flurstueck f, nutzung n JOIN nutzung_meta m ON m.nutz_id=n.nutz_id
391LEFT JOIN nutzung_class c ON c.nutz_id=n.nutz_id AND c.class=n.class
392WHERE f.gml_id= $1 AND st_intersects(n.wkb_geometry,f.wkb_geometry) = true
393AND st_area(st_intersection(n.wkb_geometry,f.wkb_geometry)) > 0.05
394AND f.endet IS NULL ORDER BY schnittflae DESC;";
395
396$v = array($gmlid);
397$res = pg_prepare("", $sql);
398$res = pg_execute("", $v);
399if (!$res) {
[387]400        echo "\n<p class='err'>Fehler bei Suche tats. Nutzung</p>";
401        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
[362]402}
403$the_Xfactor=$fsbuchflae / $fsgeomflae; // geom. ermittelte FlÀche auf amtl. BuchflÀche angleichen
404$j=0;
405while($row = pg_fetch_array($res)) {
406        $grupp=$row["gruppe"]; // 4 Gruppen
407        $nutzid=$row["nutz_id"]; // 27 Tabellen, num. Key
408        $title=htmlentities($row["title"], ENT_QUOTES, "UTF-8"); // Titel der 27 Tabellen
409        $fldclass=$row["fldclass"]; // Name 1. Zusatzfeld
410        $fldinfo= $row["fldinfo"];  // Name 2. Zus.
411        $gml=$row["gml_id"];
412        $class=$row["class"]; // 1. Zusatzfeld verschlÃŒsselt -> nutzung_class
413        $info=$row["info"]; // 2. Zus. verschlÃŒsselt (noch keine Info zum entschl.)
414        $schnittflae=$row["schnittflae"];
415        $label=$row["label"]; // Nutzungsart entschlÃŒsselt
416        $zus=$row["zustand"]; // im Bau
417        $nam=$row["name"]; // Eigenname
418        $bez=$row["bezeichnung"]; // weiterer Name (unverschl.)
419        $blabla=htmlentities($row["blabla"], ENT_QUOTES, "UTF-8");
420        $label=str_replace("/", "<br>", $label); // Ersetzt "/" durch html-Zeilenwechsel
421
422        echo "\n<tr>\n\t";
423                if ($j == 0) {
424                        echo "<td class='ll' title='Abschnitt der tats&auml;chlichen Nutzung'><img src='ico/Abschnitt.png' width='16' height='16' alt=''> Nutzung:</td>";
425                } else {
426                        echo "<td>&nbsp;</td>";
427                }
428                $absflaebuch = $schnittflae * $the_Xfactor; // angleichen geometrisch an amtliche FlÀche
429                $schnittflae = number_format($schnittflae,1,",",".") . " m&#178;"; // geometrisch
430                $absflaebuch = number_format($absflaebuch,0,",",".") . " m&#178;"; // Abschnitt an BuchflÀche angeglichen
431                echo "\n\t<td class='fla' title='geometrisch berechnet: ".$schnittflae."'>".$absflaebuch."</td>";
432
433                echo "\n\t<td class='lr'>";
434                        if ($class == 0) {
435                                if ($showkey) {echo "<span class='key'>(".$nutzid.")</span> ";}
436                                echo $title; // Name der Tabelle
437                        } elseif ( ($fldclass == "Funktion" OR $fldclass == "Vegetationsmerkmal") AND $label != "") { // Kurze Anzeige
438                                if ($showkey) {echo "<span class='key' title='".$fldclass."'>(".$nutzid."-".$class.")</span> ";}
439                                if ($blabla = "") {
440                                        echo $label;
441                                } else {
442                                        echo "<span title='".$blabla."'>".$label."</span>";
443                                }
444                        } else { // ausfuehrlichere Anzeige
445                                echo $title; // NUA-Tabelle
446                                if ($class != "") { // NUA-SchlÃŒssel
447                                        echo ", ".$fldclass.": "; // Feldname
448                                        if ($showkey) {echo "<span class='key' title='".$fldclass."'>(".$nutzid."-".$class.")</span> ";}
449                                        if ($label != "") { // Bedeutung dazu wurde erfasst
450                                                if ($blabla = "") {
451                                                        echo $label;
452                                                } else {
453                                                        echo "<span title='".$blabla."'>".$label."</span>";
454                                                }
455                                        } else { // muss noch erfasst werden
456                                                echo $class." "; // SchlÃŒssel als Ersatz fÃŒr Bedeutung
457                                        }
458                                }
459                        }
460                        if ($info != "") { // manchmal ein zweites Zusatzfeld (wie entschlÃŒsseln?)
461                                echo ", ".$fldinfo."=".$info;
462                        }
463                        if ($zus != "") { // Zustand
464                                echo "\n\t\t<br>";
465                                if ($showkey) {echo "<span class='key'>(".$zus.")</span> ";}
466                                echo "<span title='Zustand'>";                         
467                                switch ($zus) {
468                                        case 2100: echo "Außer Betrieb, stillgelegt, verlassen"; break;
469                                        case 4000: echo "Im Bau"; break;
470                                        case 8000: echo "Erweiterung, Neuansiedlung"; break;
471                                        default: echo "Zustand: ".$zus; break;
472                                }
473                                echo "</span>";
474                        }
475                        if ($nam != "") {echo "<br>Name: ".$nam;}
476                        if ($bez != "") {echo "<br>Bezeichnung: ".$bez;}
477
478                echo "</td>";
479                echo "\n\t<td>";
480                        switch ($grupp) { // Icon nach 4 Objektartengruppen
481                                case "Siedlung":   $ico = "Abschnitt.png"; break;
482                                case "Verkehr":    $ico = "Strassen_Klassifikation.png"; break;
483                                case "Vegetation": $ico = "Wald.png"; break;
484                                case "GewÀsser":   $ico = "Wasser.png";        break;
485                                default:        $ico = "Abschnitt.png"; break;
486                        }
487                        // Icon ist auch im Druck sichtbar, class='noprint' ?           
488                        echo "<p class='nwlink'><img title='".$title."' src='ico/".$ico."' width='16' height='16' alt='NUA'></p>";
489                echo "</td>";
490        echo "\n</tr>";
491        $j++;
492}
493  E N D E   N U T Z U N G   C l a s s i c  */
494
495/* Status "Nutzung":
496
497 Die Classic-Tabelle "nutzung" ist eine Zusammenfassung aller Tabellen mit Nutzungs-FlÀchen
498 Die Classic-Tabelle "nutzung_meta" zeigt die Kategorie und Gruppe des Nutzungs-Abschnitts an.
499
500 Aus der norGIS-Struktur wird ersatzweise VORLÄUFIG die Tabelle "nutz_21" verwendet,
501 die das alte ALB-Format der Nutzungs-Abschnitte von FlurstÃŒcken simuliert.
502 Hier finden sich bereits verschnittene FlÀchen, aber die gml_id fehlt.
503
504 Die EntschlÃŒsselung der Nutzungsart in den verschiedenen ALKIS-Varianten ist darin unterentwickelt.
[387]505 Diese ist eigentlich fÃŒr jede der getrennten Tabellen der Gruppe Nutzungsart individuell.
[362]506 Die Classic-Lösung mit 2 Zusatzfeldern war schon sehr pauschalisiert, aber
507 durch die RÃŒck-Konvertierung in ALB-Strukturen in der norGIS-Version ist das zu stark vereinfacht.
508 z.B. wird "WohnbauflÀche" mit der Zusatzeigenschaft "Art der Bebauung": 'Offen'
509 nun zur Nutzungsart "Offen".
510 Durch JOIN auf die "alkis_elemente" mit einem Teil des SchlÃŒssels wird das zur "WohnbauflÀche, Offen".
511 Es sollte eine Tabellen-Struktur bereit gestellt werden, die auch aussagt, dass der Wert "Offen" zur
512 Zusatz-Eigenschaft "Art der Bebauung" gehört. Dazu muss das PostProcessing erweitert werden. */
513
[375]514
[362]515$sql="SELECT e.definition, trim(both FROM n.nutzsl) AS nutzsl, trim(both FROM n.fl) AS fl, trim(both FROM s.nutzung) AS nutzung
516 FROM nutz_21 n JOIN nutz_shl s ON n.nutzsl = s.nutzshl
517 JOIN alkis_elemente e ON e.kennung = substring(n.nutzsl from 1 for 5)
518WHERE n.flsnr = $1 ORDER BY cast(n.fl AS integer) DESC;";
519// Flurstueckskennzeichen mit Trennzeichen im ALB-Format wie 'llgggg-fff-zzzzz/nnn'
[375]520// Alternativ könnte auch der VIEW "ax_tatsaechlichenutzungsschluessel" fÌr den Text zur Nutzungsart verwendet werden.
[362]521
522$fskennzalb=$defland.$gmkgnr."-".str_pad($flurnummer,3,"0",STR_PAD_LEFT)."-".str_pad($zaehler,5,"0",STR_PAD_LEFT)."/".str_pad($nenner,3,"0",STR_PAD_LEFT);
[387]523// echo "\n<p class='err'>Kennz ALB='".$fskennzalb."'</p>";
[362]524
525$v = array($fskennzalb);
526$res = pg_prepare("", $sql);
527$res = pg_execute("", $v);
528if (!$res) {
[387]529        echo "\n<p class='err'>Fehler bei Suche tats. Nutzung</p>";
530        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = FS-Kennz = '".$fskennzalb."'</p>";}
[362]531}
532
533$j=0;
534while($row = pg_fetch_array($res)) {
535        $flae=$row["fl"]; // BuchflÀche
536        $nutzsl=$row["nutzsl"]; // SchlÃŒssel
537        $nutzung=$row["nutzung"]; // Bezeichnung aus ALB-Tabelle, "fein"
538        $defi=$row["definition"]; // Langer Text mit Beschreibung
539        $title=htmlentities($defi, ENT_QUOTES, "UTF-8"); // .. fÃŒr Anzeige aufbereitet
540
541        echo "\n<tr>\n\t";
542                if ($j == 0) {
543                        echo "<td class='ll' title='Abschnitt der tats&auml;chlichen Nutzung'><img src='ico/Abschnitt.png' width='16' height='16' alt=''> Nutzung:</td>";
544                } else {
545                        echo "<td>&nbsp;</td>";
546                }
547                $absflaebuch = number_format($flae,0,",",".") . " m&#178;"; // Formatierte Abschnitts-Buch-FlÀche
548                echo "\n\t<td class='fla' title='Buchfl&auml;che des Abschnitts'>".$absflaebuch."</td>";
549
550                echo "\n\t<td class='lr' title='".$title."'>";
551                        if ($showkey) {echo "<span class='key'>(".$nutzsl.")</span> ";}
[377]552                        echo $nutzung
553                ."</td>"
554                ."\n\t<td>";
[362]555/*              //      Derzeit ist keine Gruppe zugeordnet
556                        switch ($grupp) { // Icon nach 4 Objektartengruppen
557                                case "Siedlung":   $ico = "Abschnitt.png"; break;
558                                case "Verkehr":    $ico = "Strassen_Klassifikation.png"; break;
559                                case "Vegetation": $ico = "Wald.png"; break;
560                                case "GewÀsser":   $ico = "Wasser.png";        break;
561                                default:        $ico = "Abschnitt.png"; break;
562                        }
563                        // Icon ist auch im Druck sichtbar, class='noprint' ?           
564                        echo "<p class='nwlink'><img title='".$title."' src='ico/".$ico."' width='16' height='16' alt='NUA'></p>";
565*/
[377]566                echo "</td>"
567        ."\n</tr>";
[362]568        $j++;
569}
570pg_free_result($res);
571// ENDE  N U T Z U N G
572
[377]573echo "\n<tr>" // Summenzeile
574        ."\n\t<td class='ll' title='amtliche Fl&auml;che (Buchfl&auml;che)'>Fl&auml;che:</td>"
575        ."\n\t<td class='fla sum'>"
576        ."<span title='geometrisch berechnete Fl&auml;che = ".$fsgeomflaed."' class='flae'>".$fsbuchflaed."</span></td>";
[362]577
578        // Flaeche und Link auf GebÀude-Auswertung
[377]579        echo "\n\t<td>&nbsp;</td>\n\t<td>"
580                ."\n\t\t<p class='nwlink noprint'>" // Gebaeude-Verschneidung
581                        ."\n\t\t\t<a href='alkisgebaeudenw.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
[362]582                        if ($showkey) {echo "&amp;showkey=j";}
583                        if ($cnt_adressen > 0) { // wenn Adresse vorgekommen ist
584                                echo "' title='Geb&auml;udenachweis'>Geb&auml;ude ";
585                        } else { // GebÀude mit Adresse gibt es NICHT, das ist klar
586                                echo "' title='Suche Geb&auml;ude ohne Adresse auf dem Flurst&uuml;ck oder angrenzende Geb&auml;ude'>Suche ";
587                        }
[377]588                        echo "<img src='ico/Haus.png' width='16' height='16' alt=''></a>"
589                ."\n\t\t</p>"
590        ."\n\t</td>"
591."\n</tr>";
[362]592
593// H i n w e i s  auf Bodenneuordnung oder eine strittige Grenze
594// b.name, b.artderfestlegung,
595
596$sql_boden ="SELECT a.k AS wert, a.v AS art_verf, b.gml_id AS verf_gml, b.bezeichnung AS verf_bez,
597b.name AS verf_name, d.bezeichnung AS stelle_bez, d.stelle AS stelle_key
598FROM ax_bauraumoderbodenordnungsrecht b
599LEFT JOIN alkis_wertearten a ON cast(b.artderfestlegung AS character varying)=a.k AND a.element='ax_bauraumoderbodenordnungsrecht' AND a.bezeichnung='artderfestlegung'
600LEFT JOIN ax_dienststelle d ON b.stelle=d.stelle
601WHERE b.endet IS NULL AND d.endet IS NULL 
602AND (ST_Within((SELECT wkb_geometry FROM ax_flurstueck WHERE gml_id = $1 AND endet IS NULL ), wkb_geometry)
603 OR ST_Overlaps((SELECT wkb_geometry FROM ax_flurstueck WHERE gml_id = $1 AND endet IS NULL), wkb_geometry));";
604
605pg_prepare($con, "bodeneuordnung", $sql_boden);
606$res_bodeneuordnung = pg_execute($con, "bodeneuordnung", array($gmlid));
607if (!$res_bodeneuordnung) {
[387]608        echo "\n<p class='err'>Fehler bei Bau-, Raum- oder Bodenordnungsrecht</p>";
609        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sql_boden."<br>$1 = gml_id = '".$gmlid."'</p>";}
[362]610}
611
612$sql_str="SELECT gml_id FROM ax_besondereflurstuecksgrenze WHERE endet IS NULL AND 1000 = ANY(artderflurstuecksgrenze)
613AND ST_touches((SELECT wkb_geometry FROM ax_flurstueck WHERE gml_id = $1 AND endet IS NULL),wkb_geometry);";
614
615pg_prepare($con, "strittigeGrenze", $sql_str);
616$res_strittigeGrenze = pg_execute($con, "strittigeGrenze", array($gmlid));
617if (!$res_strittigeGrenze) {
[387]618        echo "\n<p class='err'>Fehler bei strittige Grenze</p>";
619        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sql_str."<br>$1 = gml_id = '".$gmlid."'</p>";}
[362]620}
621
622if (pg_num_rows($res_bodeneuordnung) > 0 OR pg_num_rows($res_strittigeGrenze) > 0) {
[377]623        echo "\n<tr>"
624        ."\n\t<td title='Hinweise zum Flurst&uuml;ck'><h6><img src='ico/Hinweis.png' width='16' height='16' alt=''> "
625        ."Hinweise:</h6></td>\n\t<td colspan=3>&nbsp;</td>"
626        ."\n</tr>";
[362]627
628        if (pg_num_rows($res_bodeneuordnung) > 0) {
629
630                while ($row = pg_fetch_array($res_bodeneuordnung)) { // 3 Zeilen je Verfahren
631
632                        // Zeile 1 - kommt immer, darum hier den Link
633                        echo "\n<tr title='Bau-, Raum- oder Bodenordnungsrecht'>"
634                                ."\n\t<td>Bodenrecht:</td>"
[377]635                                ."\n\t<td>Festlegung</td>" // "Art der Festlegung" zu lang
636                                ."\n\t<td>";
[362]637                                        if ($showkey) {echo "<span class='key'>(".$row['wert'].")</span> ";}
638                                        echo $row['art_verf']
639                                ."</td>\n\t<td>";
640                                // LINK:
[377]641                                echo "\n\t\t<p class='nwlink noprint'>"
642                                        ."\n\t\t\t<a href='alkisbaurecht.php?gkz=".$gkz."&amp;gmlid=".$row['verf_gml'];
[362]643                                        if ($showkey) {echo "&amp;showkey=j";}
[377]644                                        echo "' title='Bau-, Raum- oder Bodenordnungsrecht'>Recht <img src='ico/Gericht.png' width='16' height='16' alt=''></a>"
645                                ."\n\t\t</p>"           
[362]646                                ."</td>"
647                        ."\n</tr>";
648
649                        // Zeile 2
650                        $dstell=$row['stelle_key'];
651                        if ($dstell != "") { // Kann auch leer sein
[377]652                                echo "\n<tr title='Flurbereinigungsbeh&ouml;rde'>"
653                                        ."\n\t<td>&nbsp;</td>"
[362]654                                        ."\n\t<td>Dienststelle</td>"
655                                        ."\n\t<td>";
656                                                if ($showkey) {echo "<span class='key'>(".$dstell.")</span> ";}
[377]657                                                echo $row['stelle_bez']
658                                        ."</td>"
[362]659                                        ."\n\t<td>&nbsp;</td>"
660                                ."\n</tr>";
661                        }
662
663                        // Zeile 3
664                        $vbez=$row['verf_bez']; // ist nicht immer gefÃŒllt
665                        $vnam=$row['verf_name']; // noch seltener
666                        if ($vbez != "") {
[377]667                                echo "\n<tr title='Verfahrensbezeichnung'>"
668                                        ."\n\t<td>&nbsp;</td>\n\t<td>Verfahren</td>"
669                                        ."\n\t<td>";
[362]670                                                if ($vnam == "") {
671                                                        echo $vbez; // nur die Nummer
672                                                } else {        // Name oder beides
673                                                        if ($showkey) {echo "<span class='key'>(".$vbez.")</span> ";}
674                                                        echo $vnam;
675                                                }
[377]676                                        echo "</td>"
677                                        ."\n\t<td>&nbsp;</td>"
678                                ."\n</tr>";
[362]679                        }
680                }
681        }
682        if (pg_num_rows($res_strittigeGrenze) > 0) { // 1 Zeile
683                echo "\n<tr>\n<td>Strittige Grenze:</td>"
684                ."<td colspan=2>Mindestens eine Flurst&uuml;cksgrenze ist als <b>strittig</b> zu bezeichnen. Sie kann nicht festgestellt werden, weil die Beteiligten sich nicht &uuml;ber den Verlauf einigen. Nach sachverst&auml;ndigem Ermessen der Katasterbeh&ouml;rde ist anzunehmen, dass das Liegenschaftskataster nicht die rechtm&auml;&szlig;ige Grenze nachweist.</td>"
685                ."\n<td>&nbsp;</td>\n</tr>";
686        }
687}
688echo "\n</table>";
689
690// G R U N D B U C H
[387]691echo "\n\n<table class='outer'>"
[362]692        ."\n<tr>"
693                ."\n\t<td>"
[387]694                        ."\n\t\t<h3 id='gb'><img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''> Grundb&uuml;cher</h3>"
[362]695                ."\n\t</td>"
696                ."\n\t<td>"
697                        ."\n\t\t<p class='nwlink noprint'>"
[387]698                                ."\n\t\t\t<a href='".$_SERVER['PHP_SELF']. "?gkz=".$gkz."&amp;gmlid=".$gmlid."&amp;berbu=".$berbu;
[362]699                                if ($showkey) {echo "&amp;showkey=j";}
700
[387]701                                // Umschalter: FS-Nachweis ruft sich selbst mit geaendertem Parameter auf. Positionierung auf Marke "#gb"
[362]702                                if ($eig=="j") {
703                                        echo "&amp;eig=n#gb' title='Flurst&uuml;cksnachweis'>ohne Eigent&uuml;mer</a>";
[387]704                                } else {
[362]705                                        echo "&amp;eig=j#gb' title='Flurst&uuml;cks- und Eigent&uuml;mernachweis'>mit Eigent&uuml;mer "
706                                        ."<img src='ico/EigentuemerGBzeile.png' width='16' height='16' alt=''></a>";
707                                }
708                        echo "\n\t\t</p>"
709                ."\n\t</td>"
710        ."\n</tr>"
[387]711."\n</table>";
[362]712
713// B U C H U N G S S T E L L E N  zum FS (istGebucht)
714$sql ="SELECT s.gml_id, s.buchungsart, s.laufendenummer as lfd, s.zaehler, s.nenner, s.nummerimaufteilungsplan as nrpl, s.beschreibungdessondereigentums as sond, b.v AS bart, b.d AS barttitle
715FROM ax_flurstueck f JOIN ax_buchungsstelle s ON s.gml_id=f.istgebucht
716LEFT JOIN alkis_wertearten b ON cast(s.buchungsart AS character varying)=b.k AND b.element='ax_buchungsstelle' AND b.bezeichnung='buchungsart'
717WHERE f.gml_id= $1 AND f.endet IS NULL AND s.endet IS NULL ORDER BY s.laufendenummer;";
718
719$v = array($gmlid);
720$ress = pg_prepare("", $sql);
721$ress = pg_execute("", $v);
722if (!$ress) {
[387]723        echo "\n<p class='err'>Keine Buchungsstelle.</p>";
[362]724        if ($debug > 1) {
725                echo "<p class='dbg'>Fehler:".pg_result_error($ress)."</p>";
[387]726                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
[362]727        }
728}
729$bs=0; // Z.BuchungsStelle
[387]730while($rows = pg_fetch_array($ress)) {  // Schleife Buchungs-Stelle
[362]731        $gmls=$rows["gml_id"]; // gml b-Stelle
732        $lfd=$rows["lfd"]; // BVNR
733        $barttitle=htmlentities($rows["barttitle"], ENT_QUOTES, "UTF-8"); // .. fÃŒr Anzeige aufbereitet
734
735        // B U C H U N G S B L A T T  zur Buchungsstelle (istBestandteilVon)
736        $sql="SELECT b.gml_id, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, wb.v AS blattartv, wb.d AS blattartd, z.bezeichnung
737        FROM ax_buchungsstelle s JOIN ax_buchungsblatt b ON b.gml_id=s.istbestandteilvon
738        LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk
739        LEFT JOIN alkis_wertearten wb ON cast(b.blattart AS character varying)=wb.k AND wb.element='ax_buchungsblatt' AND wb.bezeichnung='blattart'
740        WHERE s.gml_id = $1 AND s.endet IS NULL AND b.endet IS NULL AND z.endet IS NULL
741        ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung ;";
742
743        $v=array($gmls);
744        $resg=pg_prepare("", $sql);
745        $resg=pg_execute("", $v);
746        if (!$resg) {
[387]747                echo "\n<p class='err'>Kein Buchungsblatt.</p>";
748                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmls."'</p>";}
[362]749        }
750        $bl=0; // Z.Blatt
751        while($rowg = pg_fetch_array($resg)) {
752                $gmlg=$rowg["gml_id"];
753                $beznam=$rowg["bezeichnung"];
754                $blattkeyg=$rowg["blattart"]; // Key
755                $blattartg=$rowg["blattartv"]; // Value
[387]756                $blatt=$rowg["blatt"];
[362]757                echo "\n<hr>"
758                ."\n<table class='outer'>"
759                ."\n<tr>"; // 1 row only
760                        echo "\n\t<td>"; // Outer linke Spalte:
761
762                                // Rahmen mit GB-Kennz
763                                if ($blattkeyg == 1000) {
[387]764                                        echo "\n\t\t<table class='kennzgb' title='Bestandskennzeichen'>";
[362]765                                }else {
[387]766                                        echo "\n\t\t<table class='kennzgbf' title='Bestandskennzeichen'>"; // GB fiktiv = Rahmen dotted
[362]767                                }
[387]768                                        echo "\n\t\t<tr>\n\t\t\t<td class='head'>Bezirk</td>"
769                                                ."\n\t\t\t<td class='head' title='".$rowg["blattartd"]."'>";
[362]770                                                if ($showkey) {echo "<span class='key'>".$blattkeyg."</span>&nbsp;";}
771                                                echo $blattartg."</td>"
[387]772                                                ."\n\t\t\t<td class='head'>Lfd-Nr.</td>"
773                                                ."\n\t\t\t<td class='head'>Buchungsart</td>"
774                                        ."\n\t\t</tr>"
775                                        ."\n\t\t<tr>"
776                                                ."\n\t\t\t<td title='Grundbuchbezirk'>";
777                                                if ($showkey) {echo "<span class='key'>".$rowg["bezirk"]."</span><br>";}
[377]778                                                echo $beznam."&nbsp;</td>"
[387]779                                                ."\n\t\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$blatt."</span></td>"
780                                                ."\n\t\t\t<td title='Bestandsverzeichnis-Nummer (BVNR, Grundst&uuml;ck)'>".$lfd."</td>"
781                                                ."\n\t\t\t<td title='".$barttitle."'>";
[362]782                                                if ($showkey) {echo "<span class='key'>".$rows["buchungsart"]."</span><br>";}
[377]783                                                echo $rows["bart"]."</td>"
[387]784                                        ."\n\t\t</tr>"
785                                ."\n\t\t</table>";
[362]786
787                                // Miteigentumsanteil
788                                if ($rows["zaehler"] <> "") {
789                                        echo "\n<p class='ant'>".$rows["zaehler"]."/".$rows["nenner"]."&nbsp;Anteil am Flurst&uuml;ck</p>";
790                                }
[387]791                        echo "\n\t</td>\n\t<td>"; // Outer rechte Spalte: NW-Links
792
793                                echo "\n\t\t<p class='nwlink noprint'>weitere Auskunft:<br>";
794                                        if ($showkey) {echo "<span class='key'>".$blattkeyg."</span> ";}
795                                        echo "\n\t\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gmlg;
796                                                if ($showkey) {echo "&amp;showkey=j";}
797                                                echo "#bvnr".$lfd; // Die # hinter die &-Paramter
[362]798                                                if ($blattkeyg == 1000) {
799                                                        echo "' title='Grundbuchnachweis mit kompletter Eigent&uuml;merangabe'>";
800                                                } else {
801                                                        echo "' title='Grundbuchnachweis'>";
802                                                }
803                                                echo $blattartg." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''>"
804                                        ."</a>"
[387]805                                ."\n\t\t</p>";
[362]806
[387]807                                // berechtigte Buchungstellen (im rechten Teil der Àußeren Tab.
808                                $cnt_ber = ber_bs_hinw($gmls, $gmlid); // Hinweis ausgeben, zÀhlen
[362]809
[387]810                        echo "\n\t</td>" // ende aussen rechts
[362]811                ."\n</tr>"
812                ."\n</table>";
813
814                // +++ Weitere Felder ausgeben? BeschreibungDesUmfangsDerBuchung
815                if ($rows["sond"] != "") {
[387]816                        echo "\n<p class='sond' title='Sondereigentum'>Verbunden mit dem Sondereigentum<br>".$rows["sond"]."</p>";
[362]817                }
818                if ($rows["nrpl"] != "") {
[387]819                        echo "\n<p class='nrap' title='Nummer im Aufteilungsplan'>Nummer <span class='wichtig'>".$rows["nrpl"]."</span> im Aufteilungsplan.</p>";
[362]820                }
821
822                // E I G E N T U E M E R, zum GB
823                // Person <-benennt< AX_Namensnummer  >istBestandteilVon-> AX_Buchungsblatt
824                if ($eig=="j") { // Wahlweise mit/ohne EigentÃŒmer
[387]825                        $n = eigentuemer($gmlg, false, ""); // ohne Adresse
[362]826                        if ($n == 0) {
827                                if ($blattkeyg == 1000) {
828                                        echo "\n<p class='err'>Keine Namensnummer gefunden.</p>";
829                                } else {
830                                        echo "\n<p>ohne Eigent&uuml;mer.</p>";
831                                }
832                        }
833                }
[387]834
835                // B e r e c h t i g t e   B u c h u n g e n  ... zu dieser Buchungs-Stelle. Optional.
836                if ($berbu=="j") { // Wahlweise anzeigen
837                        echo "\n<hr>\n<h3 id='berbu'><img src='ico/Grundbuch.png' width='16' height='16' alt=''> Berechtigte Buchungen</h3>"
838                        ."\n<p>".$cnt_ber." Buchungen mit Rechten an der Buchung ".$lfd." auf ".$blattartg." ".$blatt." von ".$beznam.":</p>";
839                        ber_bs_anz($gmls, $eig); // berechtigte Buchungstellen und GB-BlÀtter Anzeigen, und ggf. auch mit EigentÃŒmer
840                }
841                $bl++; // ZÀhl Blatt
[362]842        }
[387]843        if ($bl == 0) {echo "\n<p class='err'>Kein Buchungsblatt zur Buchungstelle gefunden.</p>";}
844        $bs++; // ZÀhl Buchungs-Stelle
[362]845}
[387]846
[362]847pg_free_result($resg);
[387]848if ($bs == 0) {echo "\n<p class='err'>Keine Buchungstelle zum Flurst&uuml;ck gefunden.</p>";}
[362]849pg_close($con);
850echo <<<END
851
[377]852<div class='buttonbereich noprint'>
853<hr>
854        <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp;
855        <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a>&nbsp;
856        <a title="Export als CSV" href='javascript:ALKISexport()'><img src="ico/download_fs.png" width="32" height="16" alt="Export"></a>&nbsp;
857</div>
[362]858END;
[387]859footer($gmlid, $_SERVER['PHP_SELF']."?", "&amp;eig=".$eig."&amp;berbu=".$berbu);
[362]860?>
861</body>
862</html>
Note: See TracBrowser for help on using the repository browser.