source: trunk/info/info/alkisn/alkisbaurecht.php @ 412

Revision 412, 7.8 KB checked in by frank.jaeger, 5 years ago (diff)

Anpassung der ALKIS-Auskunft (PHP) an die Full-Schema-Version des ALKIS-Importers 3.0

Line 
1<?php
2/*      alkisbaurecht.php - Baurecht
3        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
4
5        Version:
6        2016-02-24 Version fuer norGIS-ALKIS-Import
7        2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermöglichen
8        2017-06-08 Validierung Eingabeparameter, Feinkorrekturen
9        2017-10-09 Sauber filtern auf endet IS NULL
10        2018-04-23 &nodebug
11        2018-11-09 Umstellung Full-Schema
12*/
13session_start();
14$showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren
15$cntget = extract($_GET); // Parameter in Variable umwandeln
16
17// strikte Validierung aller Parameter
18if (!isset($gmlid) or !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");}
19if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
20if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
21if ($showkey == "j") {$showkey=true;} else {$showkey=false;}
22if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");}
23
24require_once("alkis_conf_location.php");
25if ($auth == "mapbender") {require_once($mapbender);}
26include("alkisfkt.php"); // f. Footer
27echo <<<END
28<!doctype html>
29<html lang="de">
30<head>
31        <meta charset="utf-8">
32        <meta name="viewport" content="width=device-width, initial-scale=1.0">
33        <title>ALKIS Bau-, Raum- oder Bodenordnungsrecht</title>
34        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
35        <link rel="shortcut icon" type="image/x-icon" href="ico/Gericht.ico">
36</head>
37<body>
38END;
39
40// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten.
41// Manuell an die URL anfügen, wirkt nur temporär und wird nicht in Links weiter gereicht.
42if ($nodebug == "j") {$debug=0;}
43
44$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisbaurecht.php'");
45if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
46
47// Spalte "a.dokumentation" ist immer leer
48$sql ="SELECT r.ogc_fid, r.artderfestlegung as adfkey, r.name, r.stelle, r.bezeichnung AS rechtbez,
49a.beschreibung AS adfbez, d.bezeichnung AS stellbez, d.stellenart, wd.beschreibung, wd.dokumentation, round(st_area(r.wkb_geometry)::numeric,0) AS flae
50FROM ax_bauraumoderbodenordnungsrecht r
51LEFT JOIN ax_artderfestlegung_bauraumoderbodenordnungsrecht a ON r.artderfestlegung = a.wert
52LEFT JOIN ax_dienststelle d ON r.land=d.land AND r.stelle=d.stelle
53LEFT JOIN ax_behoerde wd ON d.stellenart = wd.wert
54WHERE r.gml_id= $1 AND r.endet IS NULL AND d.endet IS NULL;";
55
56$v = array($gmlid);
57$res = pg_prepare("", $sql);
58$res = pg_execute("", $v);
59if (!$res) {
60        echo "\n<p class='err'>Fehler bei Baurecht.</p>";
61        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = ".$gmlid."</p>";}
62}
63if ($row = pg_fetch_assoc($res)) {
64        $artfest=$row["adfkey"];  // Art der Festlegung, Key
65        $verfnr=$row["rechtbez"]; // Verfahrens-Nummer
66        $enam=$row["name"];
67        $stellb=$row["stellbez"];
68        $stella=$row["stellenart"];
69
70        // Balken
71        echo "<p class='recht'>ALKIS Bau-, Raum- oder Bodenordnungsrecht ".$artfest."-".$verfnr."&nbsp;</p>";
72
73        echo "\n<h2><img src='ico/Gericht.png' width='16' height='16' alt=''> Bau-, Raum- oder Bodenordnungsrecht</h2>";
74
75        echo "\n<table>"
76                ."\n<tr>"
77                        ."\n\t<td class='li'>Art der Festlegung:</td>\n\t<td>";
78                        if ($showkey) {echo "<span class='key'>(".$artfest.")</span> ";}
79                        echo "<span class='wichtig'>".$row["adfbez"]."</span></td>"
80                ."\n</tr>";
81                if ($enam != "") {
82                        echo "\n<tr>"
83                                ."\n\t<td class='li'>Eigenname des Gebietes:</td>"
84                                ."\n\t<td>".$enam."</td>"
85                        . "\n</tr>";
86                }
87                if ($verfnr != "") {
88                        echo "\n<tr>"
89                                ."\n\t<td class='li'>Verfahrensnummer:</td>"
90                                ."\n\t<td>".$verfnr."</td>"
91                        ."\n</tr>";
92                }
93                if ($stellb != "") { // z.B. Umlegung *mit* und Baulast *ohne* Dienststelle, darum bezirk testen
94                        echo "\n<tr>"
95                                ."\n\t<td class='li'>Dienststelle:</td>\n\t<td>";
96                                        if ($showkey) {echo "<span class='key'>(".$row["stelle"].")</span> ";}
97                                        echo $stellb
98                                ."</td>"
99                        ."\n</tr>";
100                        if ($stella != "") {
101                                echo "\n<tr>"
102                                        ."\n\t<td class='li'>Art der Dienststelle:</td>"
103                                        ."\n\t<td>";
104                                                if ($showkey) {echo " <span class='key'>(".$stella.")</span>";}
105                                                echo "<span title='".$row["d"]."'>".$row["v"]."</span>";
106                                        echo "</td>"
107                                ."\n</tr>";
108                        }
109                }
110                echo "\n<tr>"
111                        ."\n\t<td class='li'>Fl&auml;che:</td>";
112                        $flae=number_format($row["flae"],0,",",".")." m&#178;";
113                        echo "\n\t<td>".$flae."</td>"
114                ."\n</tr>"
115        . "\n</table>";
116} else {
117        echo "\n<p class='err'>Fehler! Kein Treffer bei gml_id=".$gmlid."</p>";
118}
119
120echo "\n<h2><img src='ico/Flurstueck.png' width='16' height='16' alt=''> betroffene Flurst&uuml;cke</h2>\n"
121."\n<p>Ermittelt durch geometrische Verschneidung. Nach Gr&ouml;&szlig;e absteigend.</p>";
122
123$sql ="SELECT f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, round(st_area(ST_Intersection(r.wkb_geometry,f.wkb_geometry))::numeric,1) AS schnittflae
124FROM ax_flurstueck f, ax_bauraumoderbodenordnungsrecht r
125WHERE r.gml_id= $1 AND f.endet IS NULL AND r.endet IS NULL ";
126if ($filtgem == '' ) { // ungefiltert
127        $v=array($gmlid);
128} else {
129        $sql.="AND f.gemeindezugehoerigkeit_kreis = $2 AND f.gemeindezugehoerigkeit_gemeinde = $3 "; // Zuständiges Gebiet
130        $v=array($gmlid, $filtkreis, $filtgem);
131}
132$sql.="AND st_intersects(r.wkb_geometry,f.wkb_geometry) = true
133AND st_area(st_intersection(r.wkb_geometry,f.wkb_geometry)) > 0.05
134ORDER BY schnittflae DESC LIMIT 50;";
135// > 0.0 ist gemeint, Ungenauigkeit durch st_simplify
136// Limit: Flurbereinig. kann gross werden!
137// Trotz Limit lange Antwortzeit, wegen OrderBy -> intersection
138
139$res=pg_prepare("", $sql);
140$res=pg_execute("", $v);
141if (!$res) {
142        echo "\n<p class='err'>Keine Flurst&uuml;cke ermittelt.<br>\nSQL=<br></p>";
143//      if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = ".$gmlid."</p>";}
144}
145
146echo "\n<table class='fs'>"
147        ."\n<tr>"
148                ."\n\t<td class='head' title='Flur- und Flurst&uuml;cksnummer'>Flurst&uuml;ck</td>"
149                ."\n\t<td class='heads fla' title='geometrische Schnittfl&auml;che'><img src='ico/sort.png' width='10' height='10' alt='' title='Sortierung'>Fl&auml;che</td>"
150                ."\n\t<td class='head fla' title='amtliche Flurst&uuml;cksfl&auml;che, Buchfl&auml;che'>von</td>"
151                ."\n\t<td class='head nwlink' title='Link zum Flurst&uuml;ck'>weitere Auskunft</td>"
152        ."\n</tr>";
153
154        $fscnt=0;
155        while($row = pg_fetch_assoc($res)) {
156                $fscnt++;
157                echo "\n<tr>"
158                        ."\n\t<td>".$row["flurnummer"]."-<span class='wichtig'>".$row["zaehler"];
159                                $nen=$row["nenner"];
160                                if ($nen != "") {echo "/".$nen;}
161                        echo "</span></td>"
162                        ."\n\t<td class='fla'>".$row["schnittflae"]." m&#178;</td>"
163                        ."\n\t<td class='fla'>".$row["amtlicheflaeche"]." m&#178;</td>"
164                        ."\n\t<td class='nwlink noprint'>"
165                                ."\n\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$row["gml_id"]."&amp;eig=n' "
166                                        ."title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck "
167                                        ."\n\t\t\t<img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''>"
168                                ."\n\t\t</a>"
169                        ."\n\t</td>"
170                ."\n</tr>";
171        }
172echo "\n</table>";
173
174if ($fscnt == 0) { // nicht gefunden
175        if ($filtgem == '' ) { // ungefiltert
176                echo "\n<p class='err'>Kein Flurst&uuml;ck gefunden.</p>";
177        } else { // Wahrscheinliche Ursache = Filter
178                echo "\n<p class='err'>Kein Flurst&uuml;ck im berechtigten Bereich.</p>";
179        //      if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = ".$gmlid." $2 = ".$filtkreis." $3 = ".$filtgem."</p>";}
180        }
181} elseif ($fscnt == 50) {
182        echo "<p>... und weitere Flurst&uuml;cke (Limit 50 erreicht).</p>";
183}
184
185pg_close($con);
186echo <<<END
187
188<div class='buttonbereich noprint'>
189<hr>
190        <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck" /></a>&nbsp;
191        <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken" /></a>&nbsp;
192</div>
193END;
194
195footer($gmlid, $_SERVER['PHP_SELF']."?", "");
196
197?>
198
199</body>
200</html>
Note: See TracBrowser for help on using the repository browser.