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

Revision 417, 32.8 KB checked in by frank.jaeger, 5 years ago (diff)

Korrektur der Auskunft: Vorgängerflurstücke und Fortführungen bei Flurstücks-Historie.

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        2017-10-11 Nachbesserung Formatierung der SchÀtzungs-Zeilen
16        2017-10-17 Zeitpunkt der Entstehung in deutschen Datumsformat
17        2017-11-03 Wertelisten fÃŒr Arrays in BodenschÀtzung ausgeben.
18        2017-12-08 Planung (Kommentare) der Erweiterung fÃŒr Berechtigte GrundbÃŒcher
19        2017-12-20 Links auf Lagebezeichnung verbessert.
20        2018-04-11 Variable "gmlid" an Function "ALKISexport" ÃŒbergeben. Ist beim Schreiben des Headers noch unbekannt, wenn mit "&fskennz=" aufgerufen.
21        2018-04-23 Umfangreiche Überarbeitung der "Buchungsstellen"
22        2018-05-03 Anpassung fÃŒr GrundstÃŒcksnachweis
23        2018-11-09 Umstellung Full-Schema
24        2018-11-19 EntschlÃŒsseln "zeigtaufexternes_art" mit function fortfuehrungen().
25
26++ToDo:
27        - Buchung auf "fiktives Blatt" ist nur mit debug zu sehen: die <tr> in .css grau hinterlegen
28        - Umschalter (gleiches Modul) anders darstellen als Links zu anderen Nachweisen
29        - Parameter zum Umschalten mit/ohne BodenschÀtzung?
30        - Bessere Differenzierung bei den Nutzungsarten (Tabelle dafÃŒr aufbauen)
31*/
32session_start();
33$eig="n"; $showkey="n"; $nodebug=""; // Var. initalisieren
34$cntget = extract($_GET); // alle Parameter in Variable umwandeln
35
36// strikte Validierung aller Parameter
37if (isset($gmlid)) {
38        if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");}
39        $fskennz='';
40} else { // Alternativ
41        $gmlid='';
42        if (isset($fskennz)) { // llgggg-fff-11111/222 oder z.B.'052647002001910013__' oder '05264700200012______'
43                if (!preg_match('#^[0-9\-_/]{8,20}$#', $fskennz)) {die ("Eingabefehler fskennz");}
44        } else {
45                $fskennz='';
46        }
47}
48if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
49if (!preg_match('#^[j|n]{0,1}$#', $eig)) {die("Eingabefehler eig");}
50if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
51if ($showkey == "j") {$showkey=true;} else {$showkey=false;} // "j"/"n" als boolean umwandeln, ist praktischer abzufragen, wird oft gebraucht
52if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");}
53
54require_once("alkis_conf_location.php");
55if ($auth == "mapbender") {require_once($mapbender);}
56include("alkisfkt.php");
57?>
58<!doctype html>
59<html lang="de">
60<head>
61        <meta charset="utf-8">
62        <meta name="viewport" content="width=device-width, initial-scale=1.0">
63        <title>ALKIS Flurst&uuml;cksnachweis</title>
64        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
65        <link rel="shortcut icon" type="image/x-icon" href="ico/Flurstueck.ico">
66        <script>
67                function ALKISexport(gmlid) {
68                        window.open('alkisexport.php?gkz=<?php echo $gkz;?>&tabtyp=flurstueck&gmlid=' + gmlid);
69                }
70        </script>
71</head>
72<body>
73<?php
74// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. Blendet z.B. "fiktives Blatt" aus.
75// Manuell an die URL anfÌgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht.
76if ($nodebug == "j") {$debug=0;}
77
78$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisfsnw.php'");
79if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
80
81// Ein FlurstÃŒcks-Kennzeichen wurde alternativ zur gml_id ÃŒbermittelt
82if ($fskennz != '') {
83        $arr=explode("-", $fskennz, 4); // zerlegen
84        $zgemkg=trim($arr[0]);
85        if (strlen($zgemkg) == 20 and !isset($arr[1])) {
86                $fskzdb=$zgemkg; // Datenbank-Feldformat
87        } else { // Format "llgggg-fff-nnnn/zz.nn" oder "gggg-ff-nnn/zz"
88                // Das Kennzeichen auseinander nehmen.
89                if (strlen($zgemkg) == 6) {
90                        $land=substr($zgemkg, 0, 2);
91                        $zgemkg=substr($zgemkg, 2, 4);
92                } else { // kein schöner Land ..
93                        $land=$defland; // Default-Land aus config
94                }
95                $zflur=str_pad($arr[1], 3 , "0", STR_PAD_LEFT); // Flur-Nr
96                $zfsnr=trim($arr[2]); // FlurstÃŒcke-Nr
97                $zn=explode("/", $zfsnr, 2); // Bruch?
98                $zzaehler=str_pad(trim($zn[0]), 5 , "0", STR_PAD_LEFT);
99                if (isset($zn[1])) {
100                        $znenner=trim($zn[1]);
101                } else {
102                        $znenner="";
103                }
104                if (trim($znenner, " 0.") == "") { // kein Bruch oder nur Nullen
105                        $znenner="____"; // in DB-Spalte mit Tiefstrich aufgefÃŒllt
106                } else {
107                        $zn=explode(".", $znenner, 2); // .00 wegwerfen
108                        $znenner=str_pad($zn[0], 4 , "0", STR_PAD_LEFT);
109                }
110                // nun die Teile stellengerecht wieder zusammen setzen         
111                $fskzdb=$land.$zgemkg.$zflur.$zzaehler.$znenner.'__'; // FS-Kennz. Format Datenbank
112        }
113        // Spalte "flurstueckskennzeichen" ist in DB indiziert
114        // Format z.B.'052647002001910013__' oder '05264700200012______'
115        $sql ="SELECT gml_id FROM ax_flurstueck WHERE flurstueckskennzeichen= $1 AND endet IS NULL ;";
116
117        $v = array($fskzdb);
118        $res = pg_prepare("", $sql);
119        $res = pg_execute("", $v);
120        if ($row = pg_fetch_assoc($res)) {
121                $gmlid=$row["gml_id"];
122        } else {
123                echo "\n<p class='err'>Fehler! Kein Treffer f&uuml;r Flurst&uuml;ckskennzeichen='".$fskennz."' (".$fskzdb.")</p>";
124                echo "<p>Kennzeichen veraltet? <a href='./alkisfshist.php?gkz=".$gkz."&fskennz=".$fskennz."'>Suche in der Flurst&uuml;cks-Historie</a></p>";
125                echo "\n</body>\n</html>";
126                return;
127        }
128        pg_free_result($res);
129}
130
131// F L U R S T U E C K  m. Gebiet
132$sql ="SELECT f.zeigtaufexternes_art, f.zeigtaufexternes_name, f.flurnummer, f.zaehler, f.nenner, f.gemeindezugehoerigkeit_regierungsbezirk, f.gemeindezugehoerigkeit_kreis, f.gemeindezugehoerigkeit_gemeinde, f.amtlicheflaeche, st_area(f.wkb_geometry) AS fsgeomflae,
133to_char(cast(f.zeitpunktderentstehung AS date),'DD.MM.YYYY') AS zeitpunktderentstehung, f.istgebucht, g.gemarkungsnummer, g.bezeichnung, r.bezeichnung AS rbez, k.bezeichnung AS kbez, m.bezeichnung AS mbez
134FROM ax_flurstueck f
135LEFT JOIN ax_gemarkung g ON f.gemeindezugehoerigkeit_land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer
136LEFT JOIN ax_regierungsbezirk r ON f.gemeindezugehoerigkeit_regierungsbezirk=r.regierungsbezirk
137LEFT JOIN ax_kreisregion k ON f.gemeindezugehoerigkeit_regierungsbezirk=k.regierungsbezirk AND f.gemeindezugehoerigkeit_kreis=k.kreis
138LEFT JOIN ax_gemeinde m ON m.regierungsbezirk=f.gemeindezugehoerigkeit_regierungsbezirk AND m.kreis=f.gemeindezugehoerigkeit_kreis AND m.gemeinde=f.gemeindezugehoerigkeit_gemeinde
139WHERE f.gml_id= $1 AND f.endet IS NULL AND g.endet IS NULL AND m.endet IS NULL AND k.endet IS NULL AND r.endet IS NULL;";
140
141$v = array($gmlid); // mit gml_id suchen
142$res = pg_prepare("", $sql);
143$res = pg_execute("", $v);
144if (!$res) {
145        echo "\n<p class='err'>Fehler bei Flurstuecksdaten</p>";
146        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
147}
148if ($row = pg_fetch_assoc($res)) {
149        $gemkname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
150        $gmkgnr=$row["gemarkungsnummer"];
151        $bezirk=$row["gemeindezugehoerigkeit_regierungsbezirk"];
152        $rbez=htmlentities($row["rbez"], ENT_QUOTES, "UTF-8");
153        $kreis=$row["gemeindezugehoerigkeit_kreis"];
154        $kbez=htmlentities($row["kbez"], ENT_QUOTES, "UTF-8");
155        $gemeinde=$row["gemeindezugehoerigkeit_gemeinde"];
156        $mbez=htmlentities($row["mbez"], ENT_QUOTES, "UTF-8");
157        $flurnummer=$row["flurnummer"];
158        $zaehler=$row["zaehler"];
159        $nenner=$row["nenner"];
160        $flstnummer=$zaehler;
161        if ($nenner > 0) {$flstnummer.="/".$nenner;} // BruchNr
162        $fsbuchflae=$row["amtlicheflaeche"]; // amtliche Fl. aus DB-Feld
163        $fsgeomflae=$row["fsgeomflae"]; // aus Geometrie ermittelte FlÀche
164        $the_Xfactor = $fsbuchflae / $fsgeomflae; // Multiplikator zur Umrechnung geometrische AbschnittsflÀchen in BuchflÀche
165        $fsbuchflaed=number_format($fsbuchflae,0,",",".") . " m&#178;"; // Display-Format dazu
166        $fsgeomflaed=number_format($fsgeomflae,0,",",".") . " m&#178;";
167        $gml_buchungsstelle=$row["istgebucht"]; // wird erst im GB-Teil benötigt
168        $entsteh=$row["zeitpunktderentstehung"];
169        $zeart=$row["zeigtaufexternes_art"];
170        $zename=$row["zeigtaufexternes_name"];
171} else {
172        echo "\n<p class='err'>Fehler! Kein Treffer f&uuml;r Flurst&uuml;ck mit gml_id=".$gmlid."</p>";
173        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
174        echo "\n</body>\n</html>";
175        return;
176}
177pg_free_result($res);
178
179if ($eig=="j") { // Balken
180        echo "<p class='fsei'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>"
181        ."\n\n<h2>Flurst&uuml;ck mit Eigent&uuml;mer</h2>";
182} else {
183        echo "<p class='fskennz'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>"
184        ."\n\n<h2>Flurst&uuml;ck</h2>";
185}
186
187// PrÃŒfung der Gebiets-Berechtigung bei gemeinsam genutzten Datenbanken (Kreis und Gemeinde)
188// FÃŒr das gkz (z.B. aus dem Mapfile-Namen) wird in der Konfiguration ein Filter gesetzt.
189if ( ($filtkreis != '' and $filtkreis != $kreis) or ($filtgem != '' and $filtgem != $gemeinde) ) {
190        // Einer der gesetzten Filter passt nicht
191        if ($debug > 2) { //++ Schönes Bild? Stop-Zeichen?
192                echo "\n<p class='err'>Filter Kreis='".$filtkreis."', Gemeinde='".$filtgem."'</p>"
193                ."\n<p class='err'>Flstk. Kreis='".$fskrs."', Gemeinde='".$fsgem."'</p>";
194        }
195        echo "\n<br><p class='stop1'>Zugriff nicht erlaubt</p>"
196        ."\n<br><p class='stop2'>Dies Flurst&uuml;ck liegt ausserhalb der zust&auml;ndigen Stadt oder Gemeinde.</p>\n</body>\n</html>";
197        exit;
198}
199
200echo "\n<table class='outer'>"
201        ."\n\t<tr>\n\t\t<td class='ll'><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Kennzeichen:</td>" // Links
202        ."\n\t\t<td>" // Mitte
203        ."\n\t\t\t<table class='kennzfs' title='Flurst&uuml;ckskennzeichen'>\n\t\t\t\t<tr>" // darin Tabelle Kennzeichen
204                ."\n\t\t\t\t\t<td class='head'>Gemarkung</td>\n\t\t\t\t\t<td class='head'>Flur</td>\n\t\t\t\t\t<td class='head'>Flurst-Nr.</td>\n\t\t\t\t</tr>"
205                ."\n\t\t\t\t<tr>\n\t\t\t\t\t<td title='Gemarkung'>";
206                        if ($showkey) {echo "<span class='key'>".$gmkgnr."</span><br>";}
207                        echo $gemkname."&nbsp;</td>"
208                ."\n\t\t\t\t\t<td title='Flurnummer'>".$flurnummer."</td>"
209                ."\n\t\t\t\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>\n\t\t\t\t</tr>"
210        ."\n\t\t\t</table>"
211        ."\n\t\t</td>\n\t\t<td>"; // Rechts
212        fortfuehrungen($entsteh, $zeart, $zename);
213echo "\n\t\t</td>\n\t</tr>\n</table>";
214
215echo "\n<hr>\n<table class='fs'>"; // FS-Teil 6 Spalten
216echo "\n<tr>\n\t\t<td></td>\n\t\t<td></td>\n\t\t<td></td>\n\t\t<td></td>\n\t\t<td></td>" // 1-5 in erster Zeile kein "colspan" verwenden
217        ."\n\t\t<td>\n\t\t<p class='nwlink noprint'>weitere Auskunft:</p></td>" // 6
218."\n</tr>";
219
220echo "\n<tr>" // Zeile: G e b i e t s z u g e h o e r i g k e i t  Gemeinde / Kreis / Regierungsbezirk
221        ."\n\t<td class='ll'><img title='Im Gebiet von' src='ico/Gemeinde.png' width='16' height='16' alt=''> Gebiet:</td>" // 1
222        ."\n\t<td>Gemeinde<br>Kreis<br>Regierungsbezirk</td>" // 2
223        ."\n\t<td class='lr' colspan='3'>"; // 3-5
224                if ($showkey) {echo "<span class='key'>(".$gemeinde.")</span> ";}
225                echo $mbez."<br>";
226                if ($showkey) {echo "<span class='key'>(".$kreis.")</span> ";}
227                echo $kbez."<br>";
228                if ($showkey) {echo "<span class='key'>(".$bezirk.")</span> ";}
229                echo $rbez
230        ."</td>"
231        ."\n\t<td class='nwlink'>" // 5
232                ."\n\t\t<p class='nwlink noprint'>"
233                ."\n\t\t\t<a href='alkisfshist.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
234                if ($showkey) {echo "&amp;showkey=j";}
235                echo "' title='Vorg&auml;nger-Flurst&uuml;cke'>Historie "
236                ."<img src='ico/Flurstueck_Historisch.png' width='16' height='16' alt=''>"
237                ."</a>"
238                ."\n\t\t</p>"
239        ."\n\t</td>" // 6
240."\n</tr>";
241
242// ** L a g e b e z e i c h n u n g **
243
244// Lagebezeichnung  M I T  Hausnummer
245// ax_flurstueck  >weistAuf>  AX_LagebezeichnungMitHausnummer
246$sql="SELECT DISTINCT l.gml_id, l.gemeinde, l.lage, l.hausnummer, s.bezeichnung, s.gml_id AS kgml
247FROM ax_flurstueck f JOIN ax_lagebezeichnungmithausnummer l ON l.gml_id=ANY(f.weistauf) 
248JOIN 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
249WHERE f.gml_id= $1 AND f.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL   
250ORDER BY l.gemeinde, l.lage, l.hausnummer;";
251
252$v = array($gmlid);
253$res = pg_prepare("", $sql);
254$res = pg_execute("", $v);
255
256if (!$res) {
257        echo "\n<p class='err'>Fehler bei Lagebezeichnung mit Hausnummer</p>";
258        if ($debug > 1) {
259                echo "\n<p class='dbg'>Fehler:".pg_last_error()."</p>";
260                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
261        }
262} else {
263        $j=0;
264        $kgmlalt="";
265        while($row = pg_fetch_assoc($res)) {
266                $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name
267                if (substr($sname, strlen($sname) -3, 3) == 'weg') { // Versuch fuer korrekten Satzbau
268                        $slink=" am ".$sname;
269                } else {
270                        $slink=" an der ".$sname;
271                }
272                $hsnr=$row["hausnummer"];
273                echo "\n<tr>";
274                        if ($j == 0) { // 1
275                                echo "\n\t<td class='ll'><img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''> Adresse:</td>";
276                        } else {
277                                echo "\n\t<td>&nbsp;</td>";
278                        }
279                        echo "\n\t<td>&nbsp;</td>" // 2
280                        ."\n\t<td class='lr' colspan='3'>"; // 3-5
281                                if ($showkey) {echo "<span class='key' title='Straßenschl&uuml;ssel'>(".$row["lage"].")</span>&nbsp;";}
282                                echo $sname."&nbsp;".$hsnr."</td>";
283                        echo "\n\t<td>\n\t\t<p class='nwlink noprint'>"; // 6
284
285                        // +++ davor auch Link "Straße"
286                        $kgml=$row["kgml"]; // Wiederholung vermeiden
287                        if ($kgml != $kgmlalt) { // NEUE Strasse vor Lage
288                                $kgmlalt=$kgml; // Katalog GML-ID
289                                echo "\n\t\t\t<a title='Flurst&uuml;cke mit oder ohne Hausnummer".$slink."' "
290                                ."href='alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$kgml."'>Stra&szlig;e "
291                                ."<img src='ico/Strassen.png' width='16' height='16' alt='STRA'></a> ";
292                        }
293
294                        echo "\n\t\t\t<a title='Flurst&uuml;cke und Geb&auml;ude mit Hausnummer ".$hsnr."' href='alkislage.php?gkz=".$gkz."&amp;ltyp=m&amp;gmlid=".$row["gml_id"];
295                                if ($showkey) {echo "&amp;showkey=j";}
296                                echo "'>Lage <img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''></a>"
297                        ."\n\t\t</p>\n\t</td>"  // 6
298                ."\n</tr>";
299                $j++;
300        }
301        $cnt_adressen=$j;
302        pg_free_result($res);
303}
304
305// Lagebezeichnung  O H N E  Hausnummer  (Gewanne oder nur Strasse)
306// ax_flurstueck  >zeigtAuf>  AX_LagebezeichnungOhneHausnummer
307$sql ="SELECT l.gml_id, l.unverschluesselt, l.gemeinde, l.lage, s.bezeichnung
308FROM ax_flurstueck f JOIN ax_lagebezeichnungohnehausnummer l ON l.gml_id=ANY(f.zeigtauf)
309LEFT 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
310WHERE f.gml_id = $1 AND f.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL;";
311
312$v = array($gmlid);
313$res = pg_prepare("", $sql);
314$res = pg_execute("", $v);
315if (!$res) {
316        echo "\n<p class='err'>Fehler bei Lagebezeichnung ohne Hausnummer</p>";
317        //if ($debug > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($res)."</p>";}
318        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
319}
320$j=0;
321while($row = pg_fetch_assoc($res)) {
322        $skey=$row["lage"]; // Strassenschl.
323        $lgml=$row["gml_id"]; // key der Lage
324        $gewann = htmlentities($row["unverschluesselt"], ENT_QUOTES, "UTF-8");
325        if ($gewann != "") {
326                echo "\n<tr>"
327                        ."\n\t<td class='ll' title='unverschl&uuml;sselte Lagebezeichnung'><img src='ico/Lage_Gewanne.png' width='16' height='16' alt=''> Gewanne:</td>" // 1
328                        ."\n\t<td></td>" // 2
329                        ."\n\t<td class='lr' colspan='3'>".$gewann."</td>" // 3-5
330                        ."\n\t<td>\n\t\t<p class='nwlink noprint'>" // 6
331                                ."\n\t\t\t<a title='Flurst&uuml;cke mit der Gewanne ".$gewann."' href='alkislage.php?gkz=".$gkz."&amp;ltyp=o&amp;gmlid=".$lgml;
332                                if ($showkey) {echo "&amp;showkey=j";}                         
333                                echo "'>\n\t\t\tLage <img src='ico/Lage_Gewanne.png' width='16' height='16' alt=''></a>"
334                        ."\n\t\t</p>\n\t</td>" // 6
335                ."\n</tr>";
336        } elseif ($skey > 0) {
337                $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name
338                if (substr($sname, strlen($sname) -3, 3) == 'weg') { // Versuch fuer korrekten Satzbau
339                        $slink=" am ".$sname;
340                } else {
341                        $slink=" an der ".$sname;
342                }
343                echo "\n<tr>"
344                        ."\n\t<td class='ll'><img src='ico/Lage_an_Strasse.png' width='16' height='16' alt=''> Stra&szlig;e:</td>" // 1
345                        ."\n\t<td></td>" // 2
346                        ."\n\t<td class='lr' colspan='3'>"; // 3-5
347                                if ($showkey) {echo "<span class='key'>(".$skey.")</span>&nbsp;";}
348                                echo $sname."</td>";
349                        echo "\n\t<td>\n\t\t<p class='nwlink noprint'>" // 6
350                                ."\n\t\t\t<a title='FlurstÃŒcke ".$slink."' href='alkislage.php?gkz=".$gkz."&amp;ltyp=o&amp;gmlid=".$lgml;
351                                if ($showkey) {echo "&amp;showkey=j";}                         
352                                echo "'>\n\t\t\tLage <img src='ico/Lage_an_Strasse.png' width='16' height='16' alt=''>\n\t\t\t</a>"
353                        ."\n\t\t</p>\n\t</td>" // 6
354                ."\n</tr>";
355        }
356        $j++;
357}
358pg_free_result($res);
359
360/* Status "N u t z u n g":
361Die Classic-Tabelle "nutzung" ist eine Zusammenfassung aller Tabellen mit Nutzungs-FlÀchen
362Die Classic-Tabelle "nutzung_meta" zeigt die Kategorie und Gruppe des Nutzungs-Abschnitts an.
363
364Aus der norGIS-Struktur wird ersatzweise VORLÄUFIG die Tabelle "nutz_21" verwendet,
365die das alte ALB-Format der Nutzungs-Abschnitte von FlurstÃŒcken simuliert.
366Hier finden sich bereits verschnittene FlÀchen, aber die gml_id fehlt.
367
368Die EntschlÃŒsselung der Nutzungsart in den verschiedenen ALKIS-Varianten ist darin unterentwickelt.
369Diese ist eigentlich fÃŒr jede der getrennten Tabellen der Gruppe Nutzungsart individuell.
370Die Classic-Lösung mit 2 Zusatzfeldern war schon sehr pauschalisiert, aber
371durch die RÃŒck-Konvertierung in ALB-Strukturen in der norGIS-Version ist das zu stark vereinfacht.
372z.B. wird "WohnbauflÀche" mit der Zusatzeigenschaft "Art der Bebauung": 'Offen'
373nun zur Nutzungsart "Offen".
374Durch JOIN auf die "alkis_elemente" mit einem Teil des SchlÌssels wird das zur "WohnbauflÀche, Offen".
375Es sollte eine Tabellen-Struktur bereit gestellt werden, die auch aussagt, dass der Wert "Offen" zur
376Zusatz-Eigenschaft "Art der Bebauung" gehört. Dazu muss das PostProcessing erweitert werden. */
377
378$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
379 FROM nutz_21 n JOIN nutz_shl s ON n.nutzsl = s.nutzshl
380 JOIN alkis_elemente e ON e.kennung = substring(n.nutzsl from 1 for 5)
381WHERE n.flsnr = $1 ORDER BY cast(n.fl AS integer) DESC;";
382// Flurstueckskennzeichen mit Trennzeichen im ALB-Format wie 'llgggg-fff-zzzzz/nnn'
383$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);
384$v = array($fskennzalb);
385$res = pg_prepare("", $sql);
386$res = pg_execute("", $v);
387if (!$res) {
388        echo "\n<p class='err'>Fehler bei Suche tats. Nutzung</p>";
389        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = FS-Kennz = '".$fskennzalb."'</p>";}
390}
391$j=0;
392while($row = pg_fetch_assoc($res)) {
393        $flae=$row["fl"]; // BuchflÀche
394        $nutzsl=$row["nutzsl"]; // SchlÃŒssel
395        $nutzung=$row["nutzung"]; // Bezeichnung aus ALB-Tabelle, "fein"
396        $defi=$row["definition"]; // Langer Text mit Beschreibung
397        $title=htmlentities($defi, ENT_QUOTES, "UTF-8"); // .. fÃŒr Anzeige aufbereitet
398        echo "\n<tr>\n\t";
399                if ($j == 0) { // 1
400                        echo "<td class='ll' title='Abschnitt der tats&auml;chlichen Nutzung'><img src='ico/Abschnitt.png' width='16' height='16' alt=''> Nutzung:</td>";
401                } else {
402                        echo "<td>&nbsp;</td>";
403                }
404                $absflaebuch = number_format($flae,0,",",".") . " m&#178;"; // Formatierte Abschnitts-Buch-FlÀche
405                echo "\n\t<td></td>"; // 2
406                echo "\n\t<td class='fla' title='Buchfl&auml;che des Abschnitts'>".$absflaebuch."</td>"; // 3 - gleiche Spalte wie Fl. in BodenschÀtzg.
407                echo "\n\t<td></td>"; // 4
408                echo "\n\t<td class='lr' title='".$title."'>"; // 5 - gleiche Sp. wie Zustandsstufe usw.
409                        if ($showkey) {echo "<span class='key'>(".$nutzsl.")</span> ";}
410                        echo $nutzung
411                ."</td>"
412                ."\n\t<td>"; // 6
413/*              // Derzeit ist keine Gruppe zugeordnet
414                        switch ($grupp) { // Icon nach 4 Objektartengruppen
415                                case "Siedlung":   $ico = "Abschnitt.png"; break;
416                                case "Verkehr":    $ico = "Strassen_Klassifikation.png"; break;
417                                case "Vegetation": $ico = "Wald.png"; break;
418                                case "GewÀsser":   $ico = "Wasser.png";        break;
419                                default:        $ico = "Abschnitt.png"; break;
420                        }
421                        // Icon ist auch im Druck sichtbar, class='noprint' ?           
422                        echo "<p class='nwlink'><img title='".$title."' src='ico/".$ico."' width='16' height='16' alt='NUA'></p>"; */
423                echo "</td>" // 6
424        ."\n</tr>";
425        $j++;
426}
427pg_free_result($res);
428
429echo "\n<tr>" // FlÀchen-Summenzeile
430        ."\n\t<td class='re' title='amtliche Fl&auml;che (Buchfl&auml;che)'>Fl&auml;che:</td>" // 1
431        ."\n\t<td>&nbsp;</td>" // 2
432        ."\n\t<td class='fla sum'>" // 3 Flaeche
433                ."<span title='geometrisch berechnete Fl&auml;che = ".$fsgeomflaed."' class='flae'>".$fsbuchflaed."</span></td>"
434        ."\n\t<td>&nbsp;</td>" // 4
435        ."\n\t<td>&nbsp;</td>" // 5
436        ."\n\t<td>" // 6 Link auf GebÀude-Auswertung
437                ."\n\t\t<p class='nwlink noprint'>" // Gebaeude-Verschneidung
438                ."\n\t\t\t<a href='alkisgebaeudenw.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
439                if ($showkey) {echo "&amp;showkey=j";}
440                if ($cnt_adressen > 0) { // wenn Adresse vorgekommen ist
441                        echo "' title='Geb&auml;ude auf oder an dem Flurst&uuml;ck'>Geb&auml;ude ";
442                } else { // GebÀude mit Adresse gibt es NICHT, das ist klar
443                        echo "' title='Suche Geb&auml;ude ohne Adresse auf dem Flurst&uuml;ck oder angrenzende Geb&auml;ude'>Suche ";
444                }
445                echo "<img src='ico/Haus.png' width='16' height='16' alt=''></a>"
446                ."\n\t\t</p>"
447        ."\n\t</td>" // 6
448        ."\n</tr>";
449
450// B o d e n s c h À t z u n g
451// ---------------------------
452// Tabelle "klas_3x" (norbit-ALB): Dort fehlen Bodenart und Zustandsstufe, es ist aber bereits auf BuchflÀche umgerechnet.
453
454// BodenschÀtzungs-Abschnitte mit FlurstÌcken verschneiden, Spalten entschlÌsseln
455$sql="SELECT b.kulturart AS kulturartk, kulturart.beschreibung AS kulturartv,
456 b.bodenart AS bodenartk, bodenart.beschreibung AS bodenartv, zustbod.beschreibung AS zustbodv,
457 b.entstehungsartoderklimastufewasserverhaeltnisse AS entsteh, b.sonstigeangaben,
458 b.bodenzahlodergruenlandgrundzahl as bodenzahl, b.ackerzahlodergruenlandzahl AS ackerzahl,
459 b.jahreszahl, st_area(st_intersection(b.wkb_geometry, f.wkb_geometry)) AS schnittflae
460FROM ax_flurstueck f
461JOIN 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
462LEFT JOIN ax_bodenart_bodenschaetzung bodenart ON b.bodenart = bodenart.wert
463LEFT JOIN ax_kulturart_bodenschaetzung kulturart ON b.kulturart = kulturart.wert
464LEFT JOIN ax_zustandsstufeoderbodenstufe_bodenschaetzung zustbod ON b.zustandsstufeoderbodenstufe = zustbod.wert
465WHERE f.gml_id = $1 AND f.endet IS NULL AND b.endet IS NULL ORDER BY schnittflae DESC";
466
467$v = array($gmlid);
468$res = pg_prepare("", $sql);
469$res = pg_execute("", $v);
470if (!$res) {echo "\n<p class='err'>Fehler bei DB-Abfrage zur Klassifizierung Boden</p>\n";}
471$gesertragsmz = 0; // Gesamt-ErtragsMesszahl
472$klasflae = 0; // Summe klassifizierte FlÀche
473$j=0;
474if(!empty($res) && pg_num_rows($res) > 0) {
475        while ($row = pg_fetch_assoc($res)) {
476                $kulturartk=$row['kulturartk']; // Key  -
477                $kulturartv=$row['kulturartv']; //              - Value
478                // 1000="Ackerland (A)", 2000="Acker-GrÃŒnland (AGr)", 3000="GrÃŒnland (Gr)", 4000="GrÃŒnland-Acker (GrA)"             
479                if (substr($kulturartv, 0, 3) == 'Ack') { // A
480                        $kbez1="Bodenzahl";
481                        $kbez2="Ackerzahl";
482                } else { // Gr
483                        $kbez1="Gr&uuml;nlandgrundzahl";
484                        $kbez2="Gr&uuml;nlandzahl";
485                }
486                $absflae = $row['schnittflae'];
487                $absbuchflae = $absflae * $the_Xfactor;
488                $klasflae+=$absbuchflae;
489                $ertragszahl = intval($absbuchflae * $row['ackerzahl'] / 100);
490                $gesertragsmz+=$ertragszahl;
491        //      $absflaedis = number_format($absflae,0,",",".")." m&#178;";  // als Tool-Tip ?
492                $absbuchflaedis = number_format($absbuchflae,0,",",".")." m&#178;";
493                $boedenzahl=ltrim($row['bodenzahl'], '0');
494                $ackerzahl=ltrim($row['ackerzahl'], '0');
495                $jahr=$row['jahreszahl'];
496
497                // 2x Array mit SchlÃŒsseln. PostNAS fÃŒllt es nicht, wenn als "integer[]" definiert.
498                $entsteh=$row['entsteh'];
499                $sonst=$row['sonstigeangaben'];
500                if ($j == 0) { // 1
501                        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>";
502                } else {
503                        echo "\n<tr>\n\t<td>&nbsp;</td>";
504                }
505                echo "\n\t<td class='fla' title='Ertragsmesszahl: Produkt von ".$kbez2."/100 und Fl&auml;che.'>EMZ ".$ertragszahl."</td>"; // 2
506                echo "\n\t<td class='re' title='Fl&auml;che des Sch&auml;tzungsabschnitts'>".$absbuchflaedis."</td>"; // 3
507                echo "\n\t<td class='lr'><span title='".$kbez1."'>".$boedenzahl."</span>/<span title='".$kbez2."'>".$ackerzahl."</span></td>"; // 4
508                echo "\n\t<td class='lr'>"; // 5
509
510                        if ($showkey) {echo "\n\t\t<span class='key'>(".$kulturartk.")</span> ";}
511                        echo "\n\t\t<span title='Kulturart'>".$kulturartv."</span> ";
512
513                        if ($showkey) {echo "\n\t\t<span class='key'>(".$row['bodenartk'].")</span> ";}
514                        echo "\n\t\t<span title='Bodenart'>".$row['bodenartv']."</span> ";
515
516                        echo "\n\t\t<span title='Zustandsstufe'>".$row['zustbodv']."</span> ";
517
518                        // ARRAYs auflösen ohne den SchÀtzungs-Abschnitt mehrfach aufzulisten
519                        if ($entsteh <> '') {
520                                $ent="'".str_replace(",", "','", trim($entsteh, "{}"))."'"; // als Liste fÃŒr SQL "WHERE IN ()"
521                                echo "\n\t\t <span title='Enststehungsart oder Klimastufe, Wasserverh&auml;ltnisse'>";
522                                        if ($showkey) {echo "\n\t\t <span class='key'>(".$ent.")</span> ";}
523                                        werteliste ('ax_bodenschaetzung', 'entstehungsartoderklimastufewasserverhaeltnisse', $ent);
524                                echo "</span>";
525                        }
526                        if ($sonst <> '') {
527                                $son="'".str_replace(",", "','", trim($sonst, "{}"))."'";
528                                echo "\n\t\t <span title='Sonstige Angaben'>";
529                                        if ($showkey) {echo "\n\t\t <span class='key'>(".$son.")</span> ";}
530                                        werteliste ('ax_bodenschaetzung', 'sonstigeangaben', $son);
531                                echo "</span>";
532                        }
533
534                        if ($jahr <> '') {
535                                echo "\n\t\t<span title='Jahreszahl'>".$jahr."</span>";
536                        }
537                echo "\n\t</td>"; // 5
538                echo "\n\t<td>&nbsp;</td>\n</tr>"; // 6
539                $j++;
540        }
541        // Summenzeile
542        $klasflaedis = number_format($klasflae,0,",",".")." m&#178;";
543        echo "\n<tr>\n\t<td class='re'>Ertragsmesszahl:</td>" // 1
544        ."\n\t<td class='fla sum' title='Summe der Ertragsmesszahlen f&uuml;r dies Flurst&uuml;ck'>".$gesertragsmz."</td>" // 2
545        ."\n\t<td class='re'>".$klasflaedis."</td>" // 3
546        ."\n\t<td colspan='3'>&nbsp;</td>\n</tr>"; // 4-6
547}
548
549// H i n w e i s  auf Bodenneuordnung oder eine strittige Grenze
550$sql_boden ="SELECT b.artderfestlegung AS wert, a.beschreibung AS art_verf, b.gml_id AS verf_gml, b.bezeichnung AS verf_bez,
551b.name AS verf_name, d.bezeichnung AS stelle_bez, d.stelle AS stelle_key
552FROM ax_bauraumoderbodenordnungsrecht b
553LEFT JOIN ax_artderfestlegung_bauraumoderbodenordnungsrecht a ON b.artderfestlegung = a.wert
554LEFT JOIN ax_dienststelle d ON b.stelle=d.stelle
555WHERE b.endet IS NULL AND d.endet IS NULL 
556AND (ST_Within((SELECT wkb_geometry FROM ax_flurstueck WHERE gml_id = $1 AND endet IS NULL ), wkb_geometry)
557 OR ST_Overlaps((SELECT wkb_geometry FROM ax_flurstueck WHERE gml_id = $1 AND endet IS NULL), wkb_geometry));";
558
559pg_prepare($con, "bodeneuordnung", $sql_boden);
560$res_bodeneuordnung = pg_execute($con, "bodeneuordnung", array($gmlid));
561if (!$res_bodeneuordnung) {
562        echo "\n<p class='err'>Fehler bei Bau-, Raum- oder Bodenordnungsrecht</p>";
563        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sql_boden."<br>$1 = gml_id = '".$gmlid."'</p>";}
564}
565$sql_str="SELECT gml_id FROM ax_besondereflurstuecksgrenze WHERE endet IS NULL AND 1000 = ANY(artderflurstuecksgrenze)
566AND ST_touches((SELECT wkb_geometry FROM ax_flurstueck WHERE gml_id = $1 AND endet IS NULL),wkb_geometry);";
567
568pg_prepare($con, "strittigeGrenze", $sql_str);
569$res_strittigeGrenze = pg_execute($con, "strittigeGrenze", array($gmlid));
570if (!$res_strittigeGrenze) {
571        echo "\n<p class='err'>Fehler bei strittige Grenze</p>";
572        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sql_str."<br>$1 = gml_id = '".$gmlid."'</p>";}
573}
574if (pg_num_rows($res_bodeneuordnung) > 0 OR pg_num_rows($res_strittigeGrenze) > 0) {
575        echo "\n<tr>"
576        ."\n\t<td title='Hinweise zum Flurst&uuml;ck'><h6><img src='ico/Hinweis.png' width='16' height='16' alt=''> " // 1
577        ."Hinweise:</h6></td>\n\t<td colspan='5'>&nbsp;</td>\n</tr>";// 2-6
578        if (pg_num_rows($res_bodeneuordnung) > 0) {
579                while ($row = pg_fetch_assoc($res_bodeneuordnung)) { // 3 Zeilen je Verfahren
580                        echo "\n<tr title='Bau-, Raum- oder Bodenordnungsrecht'>" // Zeile 1 - kommt immer, darum hier den Link
581                                ."\n\t<td>Bodenrecht</td>" // 1
582                                ."\n\t<td class='re'>Festlegung: </td>" // 2 "Art der Festlegung" zu lang
583                                ."\n\t<td colspan='3'>"; // 3-5
584                                        if ($showkey) {echo "<span class='key'>(".$row['wert'].")</span> ";}
585                                        echo $row['art_verf']
586                                ."</td>";
587                                echo "\n\t<td>" // 6 LINK:
588                                        ."\n\t\t<p class='nwlink noprint'>"
589                                        ."\n\t\t\t<a href='alkisbaurecht.php?gkz=".$gkz."&amp;gmlid=".$row['verf_gml'];
590                                        if ($showkey) {echo "&amp;showkey=j";}
591                                        echo "' title='Bau-, Raum- oder Bodenordnungsrecht'>Recht <img src='ico/Gericht.png' width='16' height='16' alt=''></a>"
592                                        ."\n\t\t</p>"           
593                                ."\n\t</td>"
594                        ."\n</tr>";
595                        $dstell=$row['stelle_key']; // Zeile 2
596                        if ($dstell != "") { // Kann auch leer sein
597                                echo "\n<tr title='Flurbereinigungsbeh&ouml;rde'>"
598                                        ."\n\t<td>&nbsp;</td>" // 1
599                                        ."\n\t<td class='re'>Dienststelle: </td>" // 2
600                                        ."\n\t<td colspan='3'>"; // 3-5
601                                                if ($showkey) {echo "<span class='key'>(".$dstell.")</span> ";}
602                                                echo $row['stelle_bez']
603                                        ."</td>"
604                                        ."\n\t<td>&nbsp;</td>" // 6
605                                ."\n</tr>";
606                        }
607                        $vbez=$row['verf_bez']; // Zeile 3, ist nicht immer gefÃŒllt
608                        $vnam=$row['verf_name']; // noch seltener
609                        if ($vbez != "") {
610                                echo "\n<tr title='Verfahrensbezeichnung'>"
611                                        ."\n\t<td>&nbsp;</td>"
612                                        ."\n\t<td class='re'>Verfahren: </td>"
613                                        ."\n\t<td colspan='3'>";
614                                                if ($vnam == "") {
615                                                        echo $vbez; // nur die Nummer
616                                                } else {        // Name oder beides
617                                                        if ($showkey) {echo "<span class='key'>(".$vbez.")</span> ";}
618                                                        echo $vnam;
619                                                }
620                                        echo "</td>"
621                                        ."\n\t<td>&nbsp;</td>"
622                                ."\n</tr>";
623                        }
624                }
625        }
626        if (pg_num_rows($res_strittigeGrenze) > 0) { // 1 Zeile
627                echo "\n<tr>\n<td>Strittige Grenze:</td>"
628                ."<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>"
629                ."\n<td>&nbsp;</td>\n</tr>";
630        }
631}
632echo "\n</table>";
633
634// B U C H U N G S S T E L L E N  zum FS
635$bartgrp="";    // Buchungsart
636$barttypgrp=""; // Buchungsart Typ
637if ($gml_buchungsstelle == '') {echo "\n<p class='err'>Keine Buchungstelle zum Flurst&uuml;ck gefunden.</p>";}
638echo "\n<table class='outer'>"; // ALLE Buchungen und EigentÃŒmer in 4 Spalten EINER Tabelle ausgeben
639        $stufe=1; // SchleifenzÀhler Tiefe
640        $gezeigt=buchung_anzg($gml_buchungsstelle, $eig, false, $gmlid, 1); // die ("dienende") Buchung anzeigen, wenn nicht fiktiv. Liefert true/false
641
642        $anzber=ber_bs_zaehl($gml_buchungsstelle); // Anzahl berechtigte Buchungen (nÀchste Stufe) zu dieser Buchung ermitteln
643        $verf_next = array($gml_buchungsstelle); // Start Recursion mit einem Element
644        //if ($debug > 2) {echo "<p class='dbg'>Nach Stufe ".$stufe.", Anzahl: ". $anzber ."</p>";}
645
646        while ($anzber > 0 ) { // Stufe - recursiv in die Tiefe, solange es was zu verfolgen gibt
647                $verf_akt=$verf_next; // die nÀchste Stufe als aktuell ÃŒbernehmen ..
648                $verf_next=array(); // .. und zum AuffÃŒllen leeren
649                $stufe++;
650                $i=0; // SchleifenzÀhler Elemente
651                foreach($verf_akt as $gml_ber_bs) {
652                        $i++;
653                        if (ber_bs_zaehl($gml_ber_bs) > 0) {
654                                $verf_neu=ber_bs_anzg($gml_ber_bs, $eig, false, $gmlid, ""); // Anzeige ber. Buchungst., ggf. mit EigentÃŒmer.
655                                $anz_neu=count($verf_neu); // Das Ergebnis zÀhlen
656                        //      if ($debug > 2) {echo "<p class='dbg'>Weiter zu verfolgen: Stufe ".$stufe.", Element ".$i.", Anzahl: ".$anz_neu."</p>";}
657                                if ($anz_neu > 0) { // wenn neue geliefert
658                                        $verf_next=array_merge($verf_next, $verf_neu); // die neuen an die Sammlung heften
659                                }
660                        }
661                } // Ende Buchungs-Array in der Stufe
662                $anzber=count($verf_next); // Sammlung auf Stufe zÀhlen, Steuert die Schleife.
663                //if ($debug > 2) {echo "<p class='dbg'>Nach Stufe ".$stufe.", Anzahl: ". $anzber ."</p>";}
664        } // Ende Stufe
665echo "\n</table>\n\n";
666
667pg_close($con);
668echo <<<END
669<div class='buttonbereich noprint'>
670<hr>
671        <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp;
672        <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a>&nbsp;
673END;
674echo "\n\t<a title='Export als CSV' href='javascript:ALKISexport(\"" . $gmlid . "\")'><img src='ico/download_fs.png' width='32' height='16' alt='Export'></a>&nbsp;\n</div>";
675
676footer($gmlid, $_SERVER['PHP_SELF']."?", "&amp;eig=".$eig);
677?>
678</body>
679</html>
Note: See TracBrowser for help on using the repository browser.