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

Revision 389, 43.0 KB checked in by frank.jaeger, 7 years ago (diff)

ALKIS Buchauskunft überarbeitet: Bodenschätzung im FS-Nachweis. Filter auf "endet IS NULL".

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