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

Revision 387, 12.3 KB checked in by frank.jaeger, 3 years ago (diff)

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

Line 
1<?php
2/*      alkisinlayausk.php
3
4        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
5        Dies Programm wird in einen iFrame im Mapserver-Template (FeatureInfo) geladen.
6        Parameter: &gkz, &gml_id
7        Dies Programm gibt einen kurzen Ueberblick zum Flurstueck, z.B. Eigentuemer ohne Adresse.
8        FÃŒr detaillierte Angaben wird zum GB- oder FS-Nachweis verlinkt.
9        Dies ist eine Variante von alkisausk.php welches als vollstaendige Seite aufgerufen wird.
10
11        Version:
12        2016-02-24 Version fuer norGIS-ALKIS-Import
13        2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermöglichen (Berechtigung fÃŒr Gemeinde prÃŒfen)
14        2017-06-01 Function "eigentuemer" ohne Parameter $con
15        2017-06-08 Validierung Eingabeparameter, Feinkorrekturen
16*/
17session_start();
18
19$cntget = extract($_GET); // Parameter in Variable umwandeln
20
21// strikte Validierung aller Parameter
22if (!isset($gmlid) or !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");}
23if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
24
25require_once("alkis_conf_location.php");
26if ($auth == "mapbender") {require_once($mapbender);}
27include("alkisfkt.php");
28
29echo <<<END
30<!doctype html>
31<html lang="de">
32<head>
33        <meta charset="utf-8">
34        <meta name="viewport" content="width=device-width, initial-scale=1.0">
35        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
36        <link rel="shortcut icon" type="image/x-icon" href="ico/Flurstueck.ico">
37        <title>ALKIS-Auskunft</title>
38        <script type="text/javascript">
39        function imFenster(dieURL) {
40                var link = encodeURI(dieURL);
41                window.open(link,'','left=10,top=10,width=680,height=800,resizable=yes,menubar=no,toolbar=no,location=no,status=no,scrollbars=yes');
42        }
43        </script>
44</head>
45<body>
46END;
47$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisinlayausk.php'");
48if (!$con) {echo "<br>Fehler beim Verbinden der DB.\n<br>";}
49
50// *** F L U R S T U E C K ***
51$sql ="SELECT f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, g.gemarkungsnummer, g.bezeichnung, f.regierungsbezirk, f.kreis, f.gemeinde
52FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer
53WHERE f.gml_id= $1 AND f.endet IS NULL ;";
54// Weiter joinen: g.stelle -> ax_dienststelle "Katasteramt"
55$v = array($gmlid);
56$res = pg_prepare("", $sql);
57$res = pg_execute("", $v);
58if (!$res) {
59        echo "\n<p class='err'>Fehler bei Flurstuecksdaten.</p>";
60        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
61}
62
63if ($row = pg_fetch_array($res)) {
64        $gemkname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
65        $gmkgnr=$row["gemarkungsnummer"];
66        $flurnummer=$row["flurnummer"];
67        $flstnummer=$row["zaehler"];
68        $nenner=$row["nenner"];
69        if ($nenner > 0) $flstnummer.="/".$nenner; // BruchNr
70        $flae=$row["amtlicheflaeche"];
71        $flae=number_format($flae,0,",",".") . " m&#178;";
72        $fsreg=$row["regierungsbezirk"]; // Filter ZustÀndigkeit
73        $fskrs=$row["kreis"];
74        $fsgem=$row["gemeinde"];
75} else {
76        echo "\n<p class='err'>Kein Treffer fuer gml_id=".$gmlid."</p>";
77}
78
79// PrÃŒfung der Gebiets-Berechtigung bei gemeinsam genutzten Datenbanken (Kreis und Gemeinde)
80// FÃŒr das gkz (z.B. aus dem Mapfile-Namen) wird in der Konfiguration ein Filter gesetzt.
81if ( ($filtkreis != '' and $filtkreis != $fskrs) or ($filtgem != '' and $filtgem != $fsgem) ) {
82        // Einer der gesetzten Filter passt nicht
83        if ($debug > 2) {
84                echo "\n<p class='err'>Filter Kreis='".$filtkreis."', Gemeinde='".$filtgem."'</p>";
85                echo "\n<p class='err'>Flstk. Kreis='".$fskrs."', Gemeinde='".$fsgem."'</p>";
86        }
87        echo "\n<br><p class='stop1'>Zugriff nicht erlaubt</p>
88        \n<br><p class='stop2'>Dies Flurst&uuml;ck liegt ausserhalb der zust&auml;ndigen Stadt oder Gemeinde.</p>\n</body>\n</html>";
89        pg_free_result($res);
90        exit;
91}
92
93echo "\n<h2><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;ck - &Uuml;bersicht</h2>";
94
95echo "\n<table class='outer'>\n<tr>\n<td>"
96        ."\n\t<table class='kennzfs' title='Flurst&uuml;ckskennzeichen'>\n\t<tr>"
97        ."\n\t\t<td class='head'>Gmkg</td>\n\t\t<td class='head'>Flur</td>\n\t\t<td class='head'>Flurst-Nr.</td>\n\t</tr>"
98        ."\n\t<tr>\n\t\t<td title='Gemarkung'>".$gemkname."</td>"
99        ."\n\t\t<td title='Flurnummer'>".$flurnummer."</td>"
100        ."\n\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>\n\t</tr>"
101        ."\n\t</table>"
102."\n</td>\n<td>"
103."\n\t<p class='nwlink'>weitere Auskunft:<br>";
104
105// FlurstÃŒcksnachweis (mit EigentÃŒmer)
106echo "\n\t\t<a href='javascript:imFenster(\"alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$gmlid."&amp;eig=j\")' "
107        ."title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck&nbsp;"
108        ."<img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''>"
109."</a><br>";
110
111// FS-Historie
112echo "\n\t\t<a href='javascript:imFenster(\"alkisfshist.php?gkz=".$gkz."&amp;gmlid=".$gmlid."\")' "
113        ."title='Vorg&auml;nger des Flurst&uuml;cks'>Historie&nbsp;"
114        ."<img src='ico/Flurstueck_Historisch.png' width='16' height='16' alt=''>"
115."</a><br>";
116
117// Gebaeude-NW zum FS
118echo "\n\t\t<a href='javascript:imFenster(\"alkisgebaeudenw.php?gkz=".$gkz."&amp;gmlid=".$gmlid."\")' "
119        ."title='Geb&auml;udenachweis'>Geb&auml;ude&nbsp;"
120        ."<img src='ico/Haus.png' width='16' height='16' alt=''>"
121."</a>";
122
123echo "\n\t</p>\n</td>";
124pg_free_result($res);
125
126// Lage MIT HausNr (Adresse)
127$sql ="SELECT DISTINCT s.gml_id AS kgml, l.gml_id, s.bezeichnung, l.hausnummer
128FROM ax_flurstueck f JOIN ax_lagebezeichnungmithausnummer l ON l.gml_id=ANY(f.weistauf)
129JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage
130WHERE f.gml_id= $1 AND f.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL
131ORDER BY s.bezeichnung, l.hausnummer;";
132
133$v=array($gmlid); // id FS
134$res=pg_prepare("", $sql);
135$res=pg_execute("", $v);
136if (!$res) {
137        echo "\n<p class='err'>Fehler bei Lagebezeichnung mit Hausnummer.</p>";
138        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
139}
140$j=0;
141$kgmlalt='';
142while($row = pg_fetch_array($res)) {
143        $sname = htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name
144        echo "\n<tr>\n\t\n\t<td class='lr'>".$sname."&nbsp;".$row["hausnummer"]."</td>"
145        ."\n\t<td>\n\t\t<p class='nwlink noprint'>";
146        $kgml=$row["kgml"]; // Wiederholung vermeiden
147        if ($kgml != $kgmlalt) { // NEUE Strasse vor Lage
148                $kgmlalt=$kgml; // Katalog GML-ID
149                echo "\n\t\t\t<a title='Flurst&uuml;cke an der Stra&szlig;e' "
150                ."href='javascript:imFenster(\"alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$row["kgml"]."\")'>Stra&szlig;e "
151                ."<img src='ico/Strassen.png' width='16' height='16' alt='STRA'></a>";
152        }
153                echo "\n\t\t\t<a title='Lagebezeichnung mit Hausnummer' "
154                ."href='javascript:imFenster(\"alkislage.php?gkz=".$gkz."&amp;ltyp=m&amp;gmlid=".$row["gml_id"]."\")'>Lage "
155                ."<img src='ico/Lage_mit_Haus.png' width='16' height='16' alt='HAUS'></a>&nbsp;"
156        ."\n\t\t</p>\n\t</td>\n</tr>";
157        $j++;
158}
159pg_free_result($res);
160if ($j == 0) { // keine HsNr gefunden
161        // Lage OHNE HausNr
162        $sql="SELECT DISTINCT s.gml_id AS kgml, l.gml_id, s.bezeichnung, l.unverschluesselt "
163        ."FROM ax_flurstueck f JOIN ax_lagebezeichnungohnehausnummer l ON l.gml_id=ANY(f.zeigtauf) "
164        ."LEFT JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage "
165        ."WHERE f.gml_id= $1 AND f.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL ORDER BY s.bezeichnung;";
166
167        $v=array($gmlid);
168        $res=pg_prepare("", $sql);
169        $res=pg_execute("", $v);
170        if (!$res) {
171                echo "\n<p class='err'>Fehler bei Lagebezeichnung ohne Hausnummer.</p>";
172                if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
173        }
174        while($row = pg_fetch_array($res)) {
175                $sname =htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name
176                $gewann=htmlentities($row["unverschluesselt"], ENT_QUOTES, "UTF-8");
177                echo "\n<tr>";
178                if ($sname != "") { // Typ=Strasse
179                        echo "\n\t<td class='lr' title='An Stra&szlig;e aber ohne Hausnummer'>".$sname."&nbsp;</td>";
180                        $ico="Lage_an_Strasse.png";
181                } else {
182                        echo "\n\t<td class='lr' title='Gewanne'>".$gewann."&nbsp;</td>";
183                        $ico="Lage_Gewanne.png";
184                }
185                echo "\n\t<td>\n\t\t<p class='nwlink noprint'>";
186                $kgml=$row["kgml"]; // Wiederholung vermeiden
187                if ($kgml != $kgmlalt) { // NEUE Strasse vor Lage-O
188                        $kgmlalt=$kgml; // Katalog GML-ID
189                        echo "\n\t\t\t<a title='Flurst&uuml;cke an der Stra&szlig;e' "
190                        ."href='javascript:imFenster(\"alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$row["kgml"]."\")'>Stra&szlig;e "
191                        ."<img src='ico/Strassen.png' width='16' height='16' alt='STRA'></a>";
192                }
193                echo "\n\t\t\t<a title='Lagebezeichnung ohne Hausnummer' "
194                ."href='javascript:imFenster(\"alkislage.php?gkz=".$gkz."&amp;ltyp=o&amp;gmlid=".$row["gml_id"]."\")'>Lage "
195                ."<img src='ico/".$ico."' width='16' height='16' alt='OHNE'></a>&nbsp;"
196                ."\n\t\t</p>\n\t</td>\n</tr>";
197        }
198        pg_free_result($res);
199}
200echo "\n</table>";
201
202// Flurstuecksflaeche
203echo "\n<p class='fsd'>Flurst&uuml;cksfl&auml;che: <b>".$flae."</b></p>";
204
205// *** G R U N D B U C H ***
206echo "\n<h2><img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''> Grundbuch</h2>";
207
208// FS >istgebucht> GS >istbestandteilvon> GB.
209$sql ="SELECT b.gml_id, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart,
210s.gml_id AS s_gml, s.buchungsart, s.laufendenummer, s.zaehler, s.nenner, z.bezeichnung, wa.v AS blattartv, wb.v AS bart
211FROM ax_flurstueck f
212JOIN ax_buchungsstelle s ON f.istgebucht=s.gml_id
213JOIN ax_buchungsblatt b ON s.istbestandteilvon=b.gml_id
214LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk
215LEFT JOIN alkis_wertearten wa ON cast(b.blattart AS character varying)=wa.k AND wa.element='ax_buchungsblatt' AND wa.bezeichnung='blattart'
216LEFT JOIN alkis_wertearten wb ON cast(s.buchungsart AS character varying)=wb.k AND wb.element='ax_buchungsstelle' AND wb.bezeichnung='buchungsart'
217WHERE f.gml_id= $1 AND f.endet IS NULL AND s.endet IS NULL AND b.endet IS NULL AND z.endet IS NULL
218ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung, s.laufendenummer;";
219
220$v=array($gmlid);
221$resg=pg_prepare("", $sql);
222$resg=pg_execute("", $v);
223if (!$resg) {
224        echo "\n<p class='err'>Keine Buchungen.</p>";
225        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
226}
227while($rowg = pg_fetch_array($resg)) {
228        $beznam=$rowg["bezeichnung"];
229        echo "\n<hr>\n<table class='outer'>\n<tr>\n<td>";
230                $blattkey=$rowg["blattart"]; // Key
231                $blattart=$rowg["blattartv"]; // Value
232
233                if ($blattkey == 1000) {
234                        echo "\n\t<table class='kennzgb' title='Bestandskennzeichen'>";
235                } else {
236                        echo "\n\t<table class='kennzgbf' title='Bestandskennzeichen'>"; // dotted
237                }
238                        echo "\n\t<tr>"
239                                ."\n\t\t<td class='head'>Bezirk</td>"
240                                ."\n\t\t<td class='head'>".$blattart."</td>"
241                                ."\n\t\t<td class='head'>Lfd-Nr,</td>"
242                                ."\n\t\t<td class='head'>Buchungsart</td>"
243                        ."\n\t</tr>\n\t<tr>"
244                                ."\n\t\t<td title='Grundbuchbezirk'>".$beznam."</td>"
245                                ."\n\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$rowg["blatt"]."</span></td>"
246                                ."\n\t\t<td title='Bestandsverzeichnis-Nummer (BVNR, Grundst&uuml;ck)'>".$rowg["laufendenummer"]."</td>"
247                                ."\n\t\t<td title='Buchungsart'>".$rowg["bart"]."</td>"
248                        ."\n\t</tr>"
249                ."\n\t</table>";
250
251                if ($rowg["zaehler"] <> "") {
252                        echo "\n<p class='ant'>".$rowg["zaehler"]."/".$rowg["nenner"]."&nbsp;Anteil am Flurst&uuml;ck</p>";
253                }
254                echo "\n</td>\n<td>"
255                ."\n\t<p class='nwlink'>weitere Auskunft:<br>"
256                        ."\n\t\t<a href='javascript:imFenster(\"alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$rowg[0]."\")' "
257                                ."title='Grundbuchnachweis'>".$blattart." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''>"
258                        ."</a>"
259                ."\n\t</p>"
260        ."\n</td>\n</tr>\n</table>";
261
262        // E I G E N T U E M E R
263        if ($blattkey == 5000) { // kein Eigent. bei fiktiv. Blatt
264                echo "\n<p>Keine Angaben zum Eigentum bei fiktivem Blatt</p>\n"
265                ."\n<p>Siehe weitere Grundbuchbl&auml;tter mit Rechten an dem fiktiven Blatt.</p>";
266        } else { // Ausgabe Name in Function
267                $n = eigentuemer($rowg["gml_id"], false, "imFenster"); // ohne Adressen
268                if ($n == 0) { // keine NamensNr, kein Eigentuemer
269                        echo "\n<p class='err'>Keine Eigent&uuml;mer gefunden.</p>"
270                        ."\n<p class='err'>Bezirk ".$rowg["bezirk"]." Blatt ".$rowg["blatt"]." Blattart ".$blattkey." (".$blattart.")</p>";
271                }
272        }
273}
274pg_free_result($resg);
275
276?>
277</body>
278</html>
Note: See TracBrowser for help on using the repository browser.