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

Revision 394, 44.4 KB checked in by frank.jaeger, 6 years ago (diff)

ALKIS-Buchauskunft, im Flurstücksnachweis, Abschnitt Bodenschätzung: Ausgabe Enststehungsart, Klimastufe + Wasserverhältnisse (Arrays)

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