source: trunk/data/mapbender/http/nav/alkisnav_fls.php @ 68

Revision 68, 11.7 KB checked in by frank.jaeger, 13 years ago (diff)
RevLine 
[66]1<?php
[68]2// Version vom 13.01.2011
[66]3import_request_variables("PG");
[68]4include("../../conf/alkisnav_conf.php"); $con_string = "host=".$host." port=".$port." dbname=".$dbname.$gkz." user=".$user." password=".$password;
[66]5$con = pg_connect ($con_string) or die ("Fehler bei der Verbindung zur Datenbank ".$dbname);
6?>
7
8<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
9<html>
10<head>
11        <meta http-equiv="cache-control" content="no-cache">
12        <meta http-equiv="pragma" content="no-cache">
13        <meta http-equiv="expires" content="0">
14        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
15        <title>ALKIS-Suche Flurst&uuml;ck</title>
16        <link rel="stylesheet" type="text/css" href="alkisnav.css">
17</head>
18<body>
19
20<?php
21
22function is_ne_zahl($wert) {
23        // Prueft, ob ein Wert ausschließlich aus den Zahlen 0 bis 9 besteht
24        if (trim($wert, "0..9") == "") {return true;} else {return false;}
25}
26
27function ZerlegungFsKennz($fskennz) {
28// Das eingegebene FlurstÃŒcks-Kennzeichen auseinander nehmen, Erwartet wird gggg-fff-zzzz/nnn
29        global $debug, $zgemkg, $zflur, $zzaehler, $znenner;            $arr = explode("-", $fskennz, 4);
30        $zgemkg=trim($arr[0]);
31        $zflur=trim($arr[1]);
32        $zfsnr=trim($arr[2]);
33        if ($zgemkg == "") {
34                return 1; // alle Gmkg listen
35        } elseif ( ! is_ne_zahl($zgemkg)) {
36                return 1; // Such Name
37        } elseif ($zflur == "") {
38                return 2; // G-Nr
39        } elseif ( ! is_ne_zahl($zflur)) {
40                echo "<p class='err>Die Flurnummer '".$zflur."' ist nicht numerisch</p>";
41                return 0;
42        } elseif ($zfsnr == "") {               
43                return 3; // Flur                               
44        } else {
45                $zn=explode("/", $zfsnr, 2);
46                $zzaehler=trim($zn[0]);
47                $znenner=trim($zn[1]);                         
48                if ( ! is_ne_zahl($zzaehler)) {
49                        echo "<p class='err>FlurstÃŒcksnummer '".$zzaehler."' ist nicht numerisch</p>";
50                        return 0;
51                } elseif ($znenner == "") {
52                        return 4;
53                } elseif (is_ne_zahl($znenner)) {
54                        return 5;                                                               
55                } else {
56                        echo "<p class='err>FlurstÃŒcks-Nenner '".$znenner."' ist nicht numerisch</p>";
57                        return 0;
58                }
59        }
60}
61
62function SuchGmkgName() {
63// Gemarkung suchen nach Name(-nsanfang)
64        global $con, $gkz, $gemeinde, $debug, $fskennz;
65        $linelimit=120;
66        if(preg_match("/\*/",$fskennz)){
67                $match = trim(preg_replace("/\*/i","%", strtoupper($fskennz)));
68        } else {
69                $match = trim($fskennz)."%";
70        }       
71        $sql ="SELECT v.gemeindename, g.gemarkungsnummer, g.bezeichnung ";
72        $sql.="FROM ax_gemarkung g JOIN gemeinde_gemarkung v ON g.gemarkungsnummer=v.gemarkung ";
73   $sql.="WHERE bezeichnung ILIKE $1 ";
74        if($gemeinde > 0) {$sql.=" AND v.gemeinde=".$gemeinde;} // wie prepared?
75        $sql.=" ORDER BY g.bezeichnung LIMIT $2 ;";
76        $v=array($match, $linelimit);
77        $res=pg_prepare("", $sql);
78        $res=pg_execute("", $v);
79        if (!$res) {
80                echo "\n<p class='err'>Fehler bei Gemarkung</p>";
81                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
82                return 0;
83        }
84        $cnt = 0;
85        while($row = pg_fetch_array($res)) {
86                $gnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
87                $gnr=$row["gemarkungsnummer"];
88                $stadt=$row["gemeindename"];                 echo "\n<div class='gk' title='Gemarkung'>";
89                        echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemkg'>";
90                        echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$gnr."'>";             
91                        echo  " ".$gnam."</a> (".$gnr.")";
92                        if ($gemeinde == 0) {echo " ".$stadt;} // Kreisweit
[68]93                echo "\n</div>";
94                $cnt++;
95        }
[66]96        if($cnt == 0){
97                echo "\n<p class='err'>Keine Gemarkung.</p>";
98        } elseif($cnt >= $linelimit) {
99                echo "\n<p title='Bitte eindeutiger qualifizieren'>... und weitere</p>";
100        } elseif($cnt == 1) { // Eindeutig!
101                return $gnr;
102        }
103        return 0;
104}
105
106function EineGemarkung($AuchGemkZeile) {
107        // Kennzeichen bestehend nur aus Gemarkung-SchlÃŒssel wurde eingegeben
108        global $con, $gkz, $gemeinde, $debug, $zgemkg;
109        $linelimit=120; // max. Fluren je Gemarkung
110        if ($AuchGemkZeile) {
111                $sql ="SELECT bezeichnung FROM ax_gemarkung g WHERE g.gemarkungsnummer= $1 ;"; // WHERE f.land= ?
112                $v=array($zgemkg);
113                $res=pg_prepare("", $sql);
114                $res=pg_execute("", $v);
115                if (!$res) {echo "\n<p class='err'>Fehler bei Gemarkung.</p>";}
116                $zgmk=0;
117                while($row = pg_fetch_array($res)) {   
118                        $gmkg=$row["bezeichnung"];
119                        $zgmk++;
120                }
121                if ($zgmk == 0) {
122                        echo "\n<div class='gk' title='Gemarkung'>";
123                                echo "\n\t\t<p class='err'><img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemkg'>";
124                                        echo  " Gemarkung ".$zgemkg." ist unbekannt.</p>";
125                        echo "\n</div>";
126                        return;
127                }
128                // > 1 auch möglich ???
129                echo "\n<div class='gk' title='Gemarkung'>";
130                        echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemkg'> ";
131                        echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$zgemkg."'>";         
132                        echo $gmkg."</a>  (".$zgemkg.")"; // in Gemeinde?
[68]133                echo "\n</div>";
134        }
135        $sql ="SELECT gemarkungsteilflur AS flur FROM ax_gemarkungsteilflur f ";
[66]136        $sql.="WHERE gemarkung= $1 ORDER BY gemarkungsteilflur LIMIT $2 ;";     // WHERE f.land= ?
137        $v=array($zgemkg, $linelimit);
138        $res=pg_prepare("", $sql);
139        $res=pg_execute("", $v);
140        if (!$res) {echo "\n<p class='err'>Fehler bei Flur.</p>";}
141        $zfl=0;
142        while($row = pg_fetch_array($res)) {   
143                $flur=$row["flur"];
144                echo "\n<div class='fl' title='Flur'>";
145                        echo "\n\t\t<img class='nwlink' src='ico/Flur.ico' width='16' height='16' alt='Flur'> ";
146                        echo "Flur<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$zgemkg."-".$flur."'>&nbsp;".$flur."&nbsp;</a>";
147                echo "\n</div>";
148                $zfl++;
[68]149        }
[66]150        if($zfl == 0) {
151                echo "\n<p class='err'>Keine Flur.</p>";
152        } elseif($cnt >= $linelimit) {
153                echo "\n<p>... und weitere</p>";
154        }
155        return;
156}
157
158function EineFlur() {
159        // Kennzeichen aus Gemarkung und FlurNr wurde eingegeben
160        global $con, $gkz, $gemeinde, $debug, $scalefs, $epsg, $auskpath, $zgemkg, $zflur;
161        $linelimit=600; // Wie groß kann eine Flur sein?
[68]162        $sql ="SELECT bezeichnung FROM ax_gemarkung g WHERE g.gemarkungsnummer= $1 ;";
[66]163        $v=array($zgemkg);
164        $res=pg_prepare("", $sql);
165        $res=pg_execute("", $v);
166        if (!$res) {echo "\n<p class='err'>Fehler bei Gemarkung.</p>";}
167        $zgmk=0;
168        while($row = pg_fetch_array($res)) {   
169                $gmkg=$row["bezeichnung"];
170                $zgmk++;
171        }
172        if ($zgmk == 0) {
173                echo "\n<div class='gk' title='Gemarkung'>";
174                        echo "\n\t\t<p class='err'><img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemkg'>";
175                                echo  " Gemarkung ".$zgemkg." ist unbekannt.</p>";
176                echo "\n</div>";
177                return;
178        }
179        echo "\n<div class='gk' title='Gemarkung'>";
180                echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemkg'> ";
181                echo "Gemarkung <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$zgemkg."'> ".$gmkg." (".$zgemkg.")</a>";
182        echo "\n</div>";
183        echo "\n<div class='fl' title='Flur'>";
[68]184                echo "\n\t\t<img class='nwlink' src='ico/Flur.ico' width='16' height='16' alt='Flur'> ";
[66]185                echo "Flur <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$zgemkg."-".$zflur."'> ".$zflur."</a>";
186        echo "\n</div>";
187
[68]188        $sql ="SELECT f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ";
[66]189        $sql.="x(st_transform (st_centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
190        $sql.="y(st_transform (st_centroid(f.wkb_geometry), ".$epsg.")) AS y ";
191   $sql.="FROM ax_flurstueck f WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 ";
192        $sql.="ORDER BY f.zaehler, f.nenner LIMIT $3 ;"; // WHERE f.land= ?
193        $v=array($zgemkg, $zflur, $linelimit);
194        $res=pg_prepare("", $sql);
195        $res=pg_execute("", $v);
196        if (!$res) {echo "\n<p class='err'>Fehler bei Flur.</p>";}
197        $zfs=0;
198        while($row = pg_fetch_array($res)) {   
199                $fs_gml=$row["gml_id"];
200                $flur=$row["flurnummer"];
201                $fskenn=$row["zaehler"];
202                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
203                $x=$row["x"];
204                $y=$row["y"];
205                echo "\n<div class='fs'>";
206                        echo "\n\t<a title='Nachweis' target='_blank' href='".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."'>";
207                                echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
208                        echo "\n\t</a> ";                       
209                        echo "\n\tFlst. <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
210                                echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); ";
211                                echo "parent.parent.hideHighlight();' ";
212                                echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
213                                echo "onmouseout='parent.parent.hideHighlight()'>&nbsp;".$fskenn."&nbsp;</a>";
214                echo "\n</div>";
215                $zfs++;
216        }
217        if($zfs == 0) {
218                echo "\n<p class='err'>Kein Flurst&uuml;ck.</p>";
219        } elseif($zfs >= $linelimit) {
220                echo "\n<p>... und weitere</p>";
221        }
222        return;
223}
224
225function EinFlurstueck() {
226        // FlurstÃŒckskennzeichen komplett bis zum Zaehler eingegeben
227        // Sonderfall: bei Bruchnummer, mehrere Nenner zum Zaehler
[68]228        global $con, $gkz, $debug, $scalefs, $epsg, $auskpath, $zgemkg, $zflur, $zzaehler, $znenner;
[66]229
230        $sql ="SELECT f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ";
231        $sql.="x(st_transform (st_centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
232        $sql.="y(st_transform (st_centroid(f.wkb_geometry), ".$epsg.")) AS y, ";
233        $sql.="g.gemarkungsnummer, g.bezeichnung ";
234   $sql.="FROM ax_flurstueck f JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
235        $sql.="WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 AND f.zaehler= $3 ";
236        If ($znenner != "") {$sql.="AND f.nenner=".$znenner." ";} // wie prepared?
237        $sql.="ORDER BY f.zaehler, f.nenner;"; // WHERE f.land= ?
238        $v=array($zgemkg, $zflur, $zzaehler);
239        $res=pg_prepare("", $sql);
[68]240        $res=pg_execute("", $v);
[66]241        if (!$res) {echo "\n<p class='err'>Fehler bei Flurst&uuml;ck.</p>";}
242        $zfs=0;
243        while($row = pg_fetch_array($res)) {   
244                $fs_gml=$row["gml_id"];
245                $gmkg=$row["bezeichnung"];
246                $flur=$row["flurnummer"];
247                $fskenn=$row["zaehler"];
248                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
249                $x=$row["x"];
250                $y=$row["y"];
251                echo "\n<div class='fs'>";
252                        echo "\n\t<a title='Nachweis' target='_blank' href='".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."'>";
253                                echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
254                        echo "\n\t</a> ";               
255                        echo "\n\tFlst. <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
256                                echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); ";
257                                echo "parent.parent.hideHighlight();' ";
258                                echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
259                                echo "onmouseout='parent.parent.hideHighlight()'>";
260                        echo $gmkg." ".$flur."-".$fskenn."</a>";
261                echo "\n</div>";
262                $zfs++;
263        }
264        if($zfs == 0) {echo "\n<p class='err'>Kein Flurst&uuml;ck.</p>";}
265        return;
266}
267
268// ===========
269// Start hier!
270// ===========
271if(isset($epsg)) {
272        if ($debug >= 2) {echo "<p>aktueller EPSG='".$epsg."'</p>";     } // aus MB
273        if (substr($epsg, 0, 5) == "EPSG:") {$epsg=substr($epsg, 5);}
274} else {
275        if ($debug >= 2) {echo "<p class='err'>kein EPSG gesetzt</p>";}
276        $epsg=$gui_epsg; // aus Conf
277}
278if ($debug >= 2) {
279        if(isset($gemeinde)) {echo "<p>Filter Gemeinde = ".$gemeinde."</p>";
280        } else {echo "<p>Kein Filter Gemeinde</p>";}
281}
282
283// Eingabe interpretieren
284switch (ZerlegungFsKennz($fskennz)) {
285case 0:
286        echo "<p class='err'>Bitte ein Flurst&uuml;ckskennzeichen eingegeben, Format 'gggg-fff-zzzz/nnn</p>";
287        break;
288case 1:
289        if ($debug >= 2) {echo "<p>Gemarkungsname ".$zgemkg."</p>";}
290        $gnr=SuchGmkgName();
291        if ($gnr > 0) {
292                $zgemkg=$gnr;
293                EineGemarkung(false);
294        };     
295        break;
296case 2:
297        if ($debug >= 2) {echo "<p>Gemarkungsnummer ".$zgemkg."</p>";} 
298        EineGemarkung(true);
299        break;
300case 3:
301        if ($debug >= 2) {echo "<p>Gemarkung ".$zgemkg." Flur ".$zflur."</p>";}
302        EineFlur();
303        break;
304case 4:
305        if ($debug >= 2) {echo "<p>Gemarkung ".$zgemkg." Flur ".$zflur." FlurstÃŒck ".$zzaehler."</p>";}
306        EinFlurstueck();
307        break;
308case 5:
[68]309        if ($debug >= 2) {echo "<p>Gemarkung ".$zgemkg." Flur ".$zflur." FlurstÃŒck ".$zzaehler."/".$znenner."</p>";}
[66]310        EinFlurstueck();
311        break;
312}
[68]313 ?>
[66]314
315</body>
316</html>
Note: See TracBrowser for help on using the repository browser.