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

Revision 129, 28.8 KB checked in by frank.jaeger, 12 years ago (diff)
Line 
1<?php
2/* Version vom
3        13.01.2011
4        25.03.2011 Filter als Gemeinde-Liste
5        12.04.2011 epsg in Link, transform nur wenn notwendig
6        12.05.2011 Syntaxfehler in SQL
7        25.07.2011 PostNAS 0.5/0.6 Versionen unterscheiden
8        24.10.2011 Nach Pos-Klick Highlight erneuern statt hideHighlight
9        07.11.2011 optional auch Historische FS suchen, Link auf Buchauskunft-Modul alkisfshis.php
10        09.11.2011 "h" hinter Flur oder FlurstÃŒck sucht sofort in Historie
11                                        Ausgabe Flur in Varianten aktuell/historisch mit gegenseitigen Verweisen
12        11.11.2011 Nachfolger-Liste in der DB nachschlagen, und aktuelle FS als solche kennzeichnen
13                                neue Icons fÃŒr Link mit Pfeil
14                                Differenzierung mit/ohne Raumbezug bei Icons fuer Histor. FS
15                                Gemarkung- und Flur-Zeile vor einzelnem FlurstÃŒck ausgeben
16        17.11.2011 Nachweis-Links ÃŒber javascript im neuen Hochformat-Fenster
17*/
18import_request_variables("PG");
19include("../../conf/alkisnav_conf.php"); $con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password;
20$con = pg_connect ($con_string) or die ("Fehler bei der Verbindung zur Datenbank ".$dbname.$dbvers.$gkz);
21?>
22
23<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
24<html>
25<head>
26        <meta http-equiv="cache-control" content="no-cache">
27        <meta http-equiv="pragma" content="no-cache">
28        <meta http-equiv="expires" content="0">
29        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
30        <title>ALKIS-Suche Flurst&uuml;ck</title>
31        <link rel="stylesheet" type="text/css" href="alkisnav.css"></link>
32        <script type="text/javascript">
33                function imFenster(dieURL) {
34                        var link = encodeURI(dieURL);
35                        window.open(link,'','left=10,top=10,width=620,height=800,resizable=yes,menubar=no,toolbar=no,location=no,status=no,scrollbars=yes');
36                }
37        </script>
38</head>
39<body>
40
41<?php
42
43function is_ne_zahl($wert) {
44        // Prueft, ob ein Wert ausschließlich aus den Zahlen 0 bis 9 besteht
45        if (trim($wert, "0..9") == "") {return true;} else {return false;}
46}
47
48function h_hinten($zahl) {
49        // Testen: Wurde an eine Zahl ein "h" angehÀngt?
50        // Wenn ja, dann Schalter setzen und nur numerischen Teil zurÃŒck geben.
51        global $phist, $debug;
52        $zahl=trim($zahl);
53        $zlen=strlen($zahl) - 1;
54        if ($zlen > 0) {
55                $hinten = ucfirst(substr($zahl, $zlen, 1));
56                if ($hinten == "H" ) {
57                        $vorn=trim(substr($zahl, 0, $zlen));
58                        if (is_ne_zahl($vorn)) { // Zahl *und* "H"
59                                $zahl = $vorn;
60                                $phist = true;
61                        }
62                }
63        }
64        return $zahl;
65}
66
67function ZerlegungFsKennz($fskennz) {
68// Das eingegebene FlurstÃŒcks-Kennzeichen auseinander nehmen. Erwartet wird gggg-fff-zzzz/nnn
69        global $debug, $zgemkg, $zflur, $zzaehler, $znenner;    //      if ($debug > 1) {echo "<p class='dbg'>Zerlegen: '".$fskennz."'</p>";}
70        $arr = explode("-", $fskennz, 4);
71        $zgemkg=trim($arr[0]);
72        $zflur=h_hinten($arr[1]);
73        $zfsnr=trim($arr[2]);
74        if ($debug > 1) {echo "<p class='dbg'>Gemkg: '".$zgemkg."' Flur: '".$zflur."' NR: '".$zfsnr."'</p>";}
75       
76        if ($zgemkg == "") {
77                return 0; // Gemeinden oder Gemarkungen listen
78        } elseif ( ! is_ne_zahl($zgemkg)) {
79                return 1; // Such Name
80        } elseif ($zflur == "") {
81                return 2; // G-Nr
82        } elseif ( ! is_ne_zahl($zflur)) {
83                echo "<p class='err'>Die Flurnummer '".$zflur."' ist nicht numerisch</p>";
84                return 9;
85        } elseif ($zfsnr == "") {
86                return 3; // Flur                               
87        } else {
88                $zn=explode("/", $zfsnr, 2);
89                $zzaehler=h_hinten(trim($zn[0]));
90                $znenner =h_hinten(trim($zn[1]));
91                if ( ! is_ne_zahl($zzaehler)) {
92                        echo "<p class='err'>FlurstÃŒcksnummer '".$zzaehler."' ist nicht numerisch</p>";
93                        return 9;
94                } elseif ($znenner == "") {
95                        return 4;
96                } elseif (is_ne_zahl($znenner)) {
97                        return 5;                                                               
98                } else {
99                        echo "<p class='err'>FlurstÃŒcks-Nenner '".$znenner."' ist nicht numerisch</p>";
100                        return 9;
101                }
102        }
103}
104
105function gemkg_zeile($zgemkg) {
106// Eine Zeile zu Gemarkung ausgeben, SchlÃŒssel wird ÃŒbergeben, Name in DB nachschlagen
107        global $con, $gkz, $gemeinde, $epsg;
108        $sql ="SELECT bezeichnung FROM ax_gemarkung g WHERE g.gemarkungsnummer= $1 ;";
109        $v=array($zgemkg);
110        $res=pg_prepare("", $sql);
111        $res=pg_execute("", $v);
112        if (!$res) {echo "\n<p class='err'>Fehler bei Gemarkung.</p>";}
113        $zgmk=0;
114        while($row = pg_fetch_array($res)) { // eigentlich nur EINE
115                $gmkg=$row["bezeichnung"];
116                $zgmk++;
117                echo "\n<div class='gk' title='Gemarkung'>";
118                        echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemarkung'>";
119                        echo " OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$zgemkg."'> ".$gmkg." (".$zgemkg.")</a>";
120                echo "\n</div>";
121        }
122        if ($zgmk == 0) {
123                echo "\n<div class='gk' title='Gemarkung'>";
124                        echo "\n\t\t<p class='err'><img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemarkung'>";
125                                echo  " Gemarkung ".$zgemkg." ist unbekannt.</p>";
126                echo "\n</div>";
127                return;
128        }
129        return 0;
130}
131
132function flur_zeile($zgemkg, $zflur) {
133//      Eine Zeile zur Flur ausgeben
134        global $con, $gkz, $gemeinde, $epsg;
135        echo "\n<div class='fl' title='Flur'>";
136                echo "\n\t\t<img class='nwlink' src='ico/Flur.ico' width='16' height='16' alt='Flur'> ";
137                $url=$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$zgemkg."-".$zflur;
138                echo "Flur <a href='".$url."'>".$zflur."</a>";
139                //echo "<span class='hislnk'>";
140                echo " <a class='hislnk' title='Historische Flurst&uuml;cke' href='".$url."&amp;hist=j'>Hist.</a>";             
141        echo "\n</div>";
142        return 0;
143}
144
145function ListGemeinden() {
146// bei Leereingabe die Gemeinden anlisten
147        global $con, $gkz, $gemeinde, $epsg, $debug, $gfilter;
148        $linelimit=50;
149        $sql ="SELECT DISTINCT g.gemeinde AS key, g.bezeichnung FROM ax_gemeinde g ";
150        $sql.="JOIN gemeinde_gemarkung v ON g.regierungsbezirk=v.regierungsbezirk AND g.kreis=v.kreis AND g.gemeinde=v.gemeinde ";
151        // "ax_gemeinde" enthÀlt mehrfache Gemeinde-Schluessel (Filtern regierungsbezirk, kreis)       
152        // "gemeinde_gemarkung" enthaelt nur gefÃŒllte Gemarkungen aber Gemeinde mehrfach
153        switch ($gfilter) {
154                case 1: // Einzelwert
155                        $sql.="WHERE g.gemeinde=".$gemeinde." ";
156                        break;
157                case 2: // Liste
158                        $sql.="WHERE g.gemeinde in (".$gemeinde.") ";
159                        break;
160                default: // kein Filter
161                        break;
162        }
163        $sql.=" ORDER BY g.bezeichnung LIMIT $1 ;";
164        $res=pg_prepare("", $sql);
165        $res=pg_execute("", array($linelimit));
166        if (!$res) {
167                echo "\n<p class='err'>Fehler bei Gemeinde</p>";
168                if ($debug >= 3) {echo "\n<p class='dbg'>".$sql."</p>";}
169                return 0;
170        }
171        $cnt = 0;
172        while($row = pg_fetch_array($res)) {
173                $stadt=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
174                $bez=urlencode($row["bezeichnung"]);  // Uebergeben an ListGmkgInGemeinde
175                $gnr=$row["key"];                 echo "\n<div class='gm' title='Gemeinde'>";
176                        echo "\n\t\t<img class='nwlink' src='ico/Gemeinde.ico' width='16' height='16' alt='Stadt'>";
177                        echo " Gem. <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gm=".$gnr."&amp;bez=".$bez."'>";               
178                        echo  " ".$stadt."</a> (".$gnr.")";
179                echo "\n</div>";
180                $cnt++;
181        }
182        if($cnt == 0){
183                echo "\n<p class='err'>Keine Gemeinde.</p>";
184        } elseif($cnt >= $linelimit) {
185                echo "\n<p title='Bitte eindeutiger qualifizieren'>... und weitere</p>";
186        } elseif($cnt == 1) { // Eindeutig!
187                return $gnr;
188        }
189        return 0;
190}
191
192function ListGmkgInGemeinde($gkey) {
193// Die (gefuellten) Gemarkungen zu einem Gemeinde-Key (aus Link) listen
194        global $con, $gkz, $gemeinde, $epsg, $debug, $gfilter, $bez;
195        $linelimit=70;
196        $sql ="SELECT g.gemarkungsnummer, g.bezeichnung ";
197        $sql.="FROM ax_gemarkung g JOIN gemeinde_gemarkung v ON g.gemarkungsnummer=v.gemarkung ";
198   $sql.="WHERE v.gemeinde= $1 ORDER BY g.bezeichnung LIMIT $2 ;";
199        $res=pg_prepare("", $sql);
200        $res=pg_execute("", array($gkey, $linelimit));
201        if (!$res) {
202                echo "\n<p class='err'>Fehler bei Gemarkungen</p>";
203                if ($debug >= 3) {echo "\n<p class='dbg'>".$sql."</p>";}
204                return 0;
205        }
206        // Hierarchie Dokumentieren, Gemeinde-Name?
207        echo "\n<div class='gm' title='Gemeinde'>";
208                echo "\n\t\t<img class='nwlink' src='ico/Gemeinde.ico' width='16' height='16' alt='Stadt'>";   
209                echo  " Gem. ".$bez." (".$gkey.")"; // .urldecode($bez). ??
210        echo "\n</div>";
211        $cnt = 0;
212        while($row = pg_fetch_array($res)) {
213                $gnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
214                $gnr=$row["gemarkungsnummer"];                 echo "\n<div class='gk' title='Gemarkung'>";
215                        echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemarkung'>";
216                        echo " OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$gnr."'>";             
217                        echo  " ".$gnam."</a> (".$gnr.")";
218                echo "\n</div>";
219                $cnt++;
220        }
221        if($cnt == 0){
222                echo "\n<p class='err'>Keine Gemarkung.</p>";
223        } elseif($cnt >= $linelimit) {
224                echo "\n<p title='Bitte eindeutiger qualifizieren'>... und weitere</p>";
225        } elseif($cnt == 1) { // Eindeutig!
226                return $gnr;
227        }
228        return 0;
229}
230
231function SuchGmkgName() {
232// Gemarkung suchen nach Name(-nsanfang)
233        global $con, $gkz, $gemeinde, $epsg, $debug, $fskennz, $gfilter;
234        $linelimit=120;
235        if(preg_match("/\*/",$fskennz)){
236                $match = trim(preg_replace("/\*/i","%", strtoupper($fskennz)));
237        } else {
238                $match = trim($fskennz)."%";
239        }       
240        $sql ="SELECT v.gemeindename, g.gemarkungsnummer, g.bezeichnung ";
241        $sql.="FROM ax_gemarkung g JOIN gemeinde_gemarkung v ON g.gemarkungsnummer=v.gemarkung ";
242   $sql.="WHERE bezeichnung ILIKE $1 ";
243        switch ($gfilter) {
244                case 1: // Einzelwert
245                        $sql.="AND v.gemeinde=".$gemeinde." ";
246                        break;
247                case 2: // Liste
248                        $sql.="AND v.gemeinde in (".$gemeinde.") ";
249                        break;
250                default: // kein Filter
251                        break;
252        }
253        $sql.=" ORDER BY g.bezeichnung LIMIT $2 ;";
254        $v=array($match, $linelimit);
255        $res=pg_prepare("", $sql);
256        $res=pg_execute("", $v);
257        if (!$res) {
258                echo "\n<p class='err'>Fehler bei Gemarkung</p>";
259                if ($debug >= 3) {echo "\n<p class='dbg'>".$sql."</p>";}
260                return 0;
261        }
262        $cnt = 0;
263        while($row = pg_fetch_array($res)) {
264                $gnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
265                $gnr=$row["gemarkungsnummer"];
266                $stadt=$row["gemeindename"];                 echo "\n<div class='gk' title='Gemarkung'>";
267                        echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemarkung'>";
268                        echo " OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$gnr."'>";             
269                        echo  " ".$gnam."</a> (".$gnr.")";
270                        switch ($gfilter) {
271                                case 0: // Kein Filter
272                                        echo " ".$stadt;
273                                        break;
274                                case 2: // Liste
275                                        echo " ".$stadt;
276                                        break;
277                                default: // Einzelwert
278                                        break;
279                        }
280                echo "\n</div>";
281                $cnt++;
282        }
283        if($cnt == 0){
284                echo "\n<p class='err'>Keine Gemarkung.</p>";
285        } elseif($cnt >= $linelimit) {
286                echo "\n<p title='Bitte eindeutiger qualifizieren'>... und weitere</p>";
287        } elseif($cnt == 1) { // Eindeutig!
288                return $gnr;
289        }
290        return 0;
291}
292
293function EineGemarkung($AuchGemkZeile) {
294// Kennzeichen bestehend nur aus Gemarkung-SchlÃŒssel wurde eingegeben
295        global $con, $gkz, $gemeinde, $epsg, $debug, $zgemkg;
296        $linelimit=120; // max. Fluren je Gemarkung
297        if ($AuchGemkZeile) {
298                $sql ="SELECT bezeichnung FROM ax_gemarkung g WHERE g.gemarkungsnummer= $1 ;"; // WHERE f.land= ?
299                $v=array($zgemkg);
300                $res=pg_prepare("", $sql);
301                $res=pg_execute("", $v);
302                if (!$res) {echo "\n<p class='err'>Fehler bei Gemarkung.</p>";}
303                $zgmk=0;
304                while($row = pg_fetch_array($res)) {   
305                        $gmkg=$row["bezeichnung"];
306                        $zgmk++;
307                }
308                if ($zgmk == 0) {
309                        echo "\n<div class='gk' title='Gemarkung'>";
310                                echo "\n\t\t<p class='err'><img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemarkung'>";
311                                        echo  " Gemarkung ".$zgemkg." ist unbekannt.</p>";
312                        echo "\n</div>";
313                        return;
314                }
315                // > 1 auch möglich?
316                echo "\n<div class='gk' title='Gemarkung'>";
317                        echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemarkung'> ";
318                        echo " OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$zgemkg."'>";           
319                        echo $gmkg."</a>  (".$zgemkg.")"; // in Gemeinde?
320                echo "\n</div>";
321        }
322        $sql ="SELECT gemarkungsteilflur AS flur FROM ax_gemarkungsteilflur f ";
323        $sql.="WHERE gemarkung= $1 ORDER BY gemarkungsteilflur LIMIT $2 ;";     // WHERE f.land= ?
324        $v=array($zgemkg, $linelimit);
325        $res=pg_prepare("", $sql);
326        $res=pg_execute("", $v);
327        if (!$res) {echo "\n<p class='err'>Fehler bei Flur.</p>";}
328        $zfl=0;
329        while($row = pg_fetch_array($res)) {   
330                $flur=$row["flur"];
331                echo "\n<div class='fl' title='Flur'>";
332                        echo "\n\t\t<img class='nwlink' src='ico/Flur.ico' width='16' height='16' alt='Flur'>&nbsp;";
333                        echo "Flur<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$zgemkg."-".$flur."'>&nbsp;".$flur."&nbsp;</a>";
334                echo "\n</div>";
335                $zfl++;
336        }
337        if($zfl == 0) {
338                echo "\n<p class='err'>Keine Flur.</p>";
339        } elseif($cnt >= $linelimit) {
340                echo "\n<p>... und weitere</p>";
341        }
342        return;
343}
344
345function EineFlur() {
346// Kennzeichen aus Gemarkung und FlurNr wurde eingegeben, dazu aktuelle FlurstÃŒcke suchen
347        global $con, $gkz, $gemeinde, $epsg, $debug, $scalefs, $auskpath, $zgemkg, $zflur;
348        $linelimit=600; // Wie groß kann eine Flur sein?
349        gemkg_zeile($zgemkg);
350        flur_zeile($zgemkg, $zflur);
351
352        $sql ="SELECT f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ";
353        if($epsg == "25832") { // Transform nicht notwendig
354                $sql.="x(st_Centroid(f.wkb_geometry)) AS x, ";
355                $sql.="y(st_Centroid(f.wkb_geometry)) AS y ";
356        } else { 
357                $sql.="x(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
358                $sql.="y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y ";                 
359        }
360   $sql.="FROM ax_flurstueck f WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 ";
361        $sql.="ORDER BY f.zaehler, f.nenner LIMIT $3 ;"; // WHERE f.land= ?
362        $v=array($zgemkg, $zflur, $linelimit);
363        $res=pg_prepare("", $sql);
364        $res=pg_execute("", $v);
365        if (!$res) {echo "\n<p class='err'>Fehler bei Flur.</p>";}
366        $zfs=0;
367        while($row = pg_fetch_array($res)) {   
368                $fs_gml=$row["gml_id"];
369                $flur=$row["flurnummer"];
370                $fskenn=$row["zaehler"];
371                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
372                $x=$row["x"];
373                $y=$row["y"];
374                echo "\n<div class='fs'>";
375                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>";
376                                echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
377                        echo "\n\t</a> ";                       
378                        echo "\n\tFlst. <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
379                                        echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); ";
380                                        echo "parent.parent.showHighlight(".$x.",".$y.");' ";
381                                echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
382                                echo "onmouseout='parent.parent.hideHighlight()'>&nbsp;".$fskenn."&nbsp;</a>";
383                echo "\n</div>";
384                $zfs++;
385        }
386        if($zfs == 0) {
387                echo "\n<p class='err'>Kein Flurst&uuml;ck.</p>";
388        } elseif($zfs >= $linelimit) {
389                echo "\n<p>... und weitere</p>";
390        }
391        return;
392}
393
394function HistFlur() {
395// Kennzeichen aus Gemarkung und FlurNr wurde eingegeben
396// Die Flur nach historischen FlurstÃŒcken durchsuchen
397        global $con, $gkz, $gemeinde, $epsg, $debug, $scalefs, $auskpath, $land, $zgemkg, $zflur;
398        $linelimit=500;
399
400        gemkg_zeile($zgemkg);
401        echo "\n<div class='fl' title='Flur'>";
402                echo "\n\t\t<img class='nwlink' src='ico/Flur.ico' width='16' height='16' alt='Flur-Historie'> ";
403                $url=$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$zgemkg."-".$zflur;
404                echo "Historie: Flur<a title='Aktuelle Flurst&uuml;cke suchen' href='".$url."'> ".$zflur." </a>";
405        echo "\n</div>";
406
407        $whcl.="WHERE flurstueckskennzeichen like $1 ";
408        $sql ="SELECT 'h' AS ftyp, gml_id, zaehler, nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueck ".$whcl;
409        $sql.="UNION SELECT 'o' AS ftyp, gml_id, zaehler, nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueckohneraumbezug ".$whcl;
410        $sql.="ORDER BY zaehler, nenner LIMIT $2 ;";
411        $fskzwhere =$land.$zgemkg.str_pad($zflur, 3, "0", $STR_PAD_LEFT)."%";
412        $v=array($fskzwhere,   $linelimit);
413        $res=pg_prepare("", $sql);
414        $res=pg_execute("", $v);
415        if (!$res) {echo "\n<p class='err'>Fehler bei Historie Flur.</p>";}
416        $zfs=0;
417
418        // Konst. Teil d.URL (Flur), FS anhÀngen
419        $flurl=$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;hist=j&amp;fskennz=".$zgemkg."-".$zflur."-";
420
421        while($row = pg_fetch_array($res)) {   
422                $ftyp=$row["ftyp"];
423                $fs_gml=$row["gml_id"]; // fuer Buchausk.
424                $fskenn=$row["zaehler"];
425                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
426                if ($ftyp == "h") {
427                        $ico="Flurstueck_Historisch_Lnk.ico";
428                        $titl="Historisches Flurst&uuml;ck";           
429                } else {
430                        $ico="Flurstueck_Historisch_oR_Lnk.ico";
431                        $titl="Historisches Flurst&uuml;ck ohne Raumbezug";
432                }  // h: Karte Pos.?
433                echo "\n<div class='hi' title='".$titl."'>"; // Zeile
434                        // Icon -> Bauchauskunft
435                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfshist.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>";
436                                echo "\n\t\t<img class='nwlink' src='ico/".$ico."' width='16' height='16' alt='Hist'>";
437                        echo "\n\t</a> ";               
438                        // Kennzeichen -> weiter in die Historie hinein
439                        echo "\n\tFlst. <a href='".$flurl.$fskenn."'>".$fskenn."</a>";                                 
440                echo "\n</div>";
441                $zfs++;
442        }
443        if($zfs == 0) {
444                echo "\n<p class='err'>Kein historisches Flurst&uuml;ck.</p>";
445                if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = ".$fskzwhere."</p>";}
446        } elseif ($zfs >= $linelimit) {
447                echo "\n<p>... und weitere</p>";
448        }
449        return;
450}
451
452function EinFlurstueck() {
453// FlurstÃŒckskennzeichen wurde komplett bis zum Zaehler eingegeben
454// Sonderfall: bei Bruchnummer, mehrere Nenner zum Zaehler
455        global $con, $gkz, $debug, $scalefs, $epsg, $auskpath, $fskennz, $zgemkg, $zflur, $zzaehler, $znenner;
456
457        gemkg_zeile($zgemkg);
458        flur_zeile($zgemkg, $zflur);
459
460        $sql ="SELECT f.gml_id, f.flurnummer, f.zaehler, f.nenner, ";
461        if($epsg == "25832") { // Transform nicht notwendig
462                $sql.="x(st_Centroid(f.wkb_geometry)) AS x, ";
463                $sql.="y(st_Centroid(f.wkb_geometry)) AS y, ";
464        }
465        else { 
466                $sql.="x(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
467                $sql.="y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y ";                 
468        }
469   $sql.="FROM ax_flurstueck f ";
470        $sql.="WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 AND f.zaehler= $3 ";
471        If ($znenner != "") {$sql.="AND f.nenner=".$znenner." ";} // wie prepared?
472        $sql.="ORDER BY f.zaehler, f.nenner;";
473        $v=array($zgemkg, $zflur, $zzaehler);
474        $res=pg_prepare("", $sql);
475        $res=pg_execute("", $v);
476        if (!$res) {echo "\n<p class='err'>Fehler bei Flurst&uuml;ck.</p>";}
477        $zfs=0;
478        while($row = pg_fetch_array($res)) {   
479                $fs_gml=$row["gml_id"];
480                $flur=$row["flurnummer"];
481                $fskenn=$row["zaehler"];
482                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
483                $x=$row["x"];
484                $y=$row["y"];
485                echo "\n<div class='fs'>";
486                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>";
487                                echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
488                        echo "\n\t</a> ";               
489                        echo "\n\tFlst. <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
490                                        echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); ";
491                                        echo "parent.parent.showHighlight(".$x.",".$y.");' ";
492                                echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
493                                echo "onmouseout='parent.parent.hideHighlight()'>";
494                        echo $fskenn."</a>";
495                echo "\n</div>";
496                $zfs++;
497        }
498        if($zfs == 0) {
499                echo "\n<p class='err'>Kein aktuelles Flurst&uuml;ck.</p>";
500                // Soll in der Historie weiter gesucht werden?
501                echo "\n<div class='hi' title='Historie'>";
502                        echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Historisch.ico' width='16' height='16' alt='Historisches Flurst&uuml;ck'>&nbsp;";
503                        echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$fskennz."&amp;hist=j'>in Historie suchen</a>";
504                echo "\n</div>";               
505        }
506        return;
507}
508
509function HistFlurstueck() {
510        // Ein Nachfolger-FS-Kennzeichen soll recherchiert werden.
511        // Es ist unbekannt, ob dies aktuell ist oder auch schon historisch.
512        global $con, $gkz, $debug, $scalefs, $epsg, $auskpath, $land, $zgemkg, $zflur, $zzaehler, $znenner;
513
514        gemkg_zeile($zgemkg);
515        flur_zeile($zgemkg, $zflur);
516
517        // Suche ueber das Flurstueckskennzeichen, gml ist meist unbekannt
518        $whcl.="WHERE flurstueckskennzeichen= $1 ";
519        $sql ="SELECT 'a' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner, null as nachf FROM ax_flurstueck ".$whcl;
520        $sql.="UNION SELECT 'h' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueck ".$whcl;
521        $sql.="UNION SELECT 'o' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueckohneraumbezug ".$whcl;
522
523        $fskzwhere =$land.$zgemkg; // Flurst-Kennz. f. Where
524        $fskzwhere.=str_pad($zflur, 3, "0", $STR_PAD_LEFT);
525        $fskzwhere.=str_pad($zzaehler, 5, "0", $STR_PAD_LEFT);
526        if ($znenner == "") {$fskzwhere.="______";}
527        else {$fskzwhere.=str_pad($znenner, 4, "0", $STR_PAD_LEFT)."__";}
528
529        $v=array($fskzwhere);
530        $res=pg_prepare("", $sql);
531        $res=pg_execute("", $v);
532        if (!$res) {echo "\n<p class='err'>Fehler bei hist. Flurst&uuml;ck.</p>";}
533        $zfs=0;
534        while($row = pg_fetch_array($res)) {
535                $ftyp=$row["ftyp"];
536                $fs_gml=$row["gml_id"];
537                $gknr=$row["gemarkungsnummer"];
538                $flur=$row["flurnummer"];
539                $fskenn=$row["zaehler"];
540                $nachf=$row["nachf"];
541                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
542
543                if ($ftyp == "a") { // aktuelles FS gefunden, Koordinate holen
544
545                        // BEGINN +++ als function ?
546                        $sqlk ="SELECT ";
547                        if($epsg == "25832") { // Transform nicht notwendig
548                                $sqlk.="x(st_Centroid(wkb_geometry)) AS x, ";
549                                $sqlk.="y(st_Centroid(wkb_geometry)) AS y ";
550                        } else { 
551                                $sqlk.="x(st_transform(st_Centroid(wkb_geometry), ".$epsg.")) AS x, ";
552                                $sqlk.="y(st_transform(st_Centroid(wkb_geometry), ".$epsg.")) AS y ";                   
553                        }
554                   $sqlk.="FROM ax_flurstueck WHERE gml_id= $1 ";
555                        $v=array($fs_gml);
556                        $resk=pg_prepare("", $sqlk);
557                        $resk=pg_execute("", $v);
558                        if (!$resk) {echo "\n<p class='err'>Fehler bei Koordinate.</p>";}
559                        $zfsk=0;
560                        while($rowk = pg_fetch_array($resk)) { 
561                                $x=$rowk["x"];
562                                $y=$rowk["y"];
563                                $zfsk++;
564                        }
565                        if ($zfsk == 0) {echo "\n<p class='err'>Kein Treffer bei Koordinate.</p>";}
566                        // ENDE +++ als function ?
567
568                        echo "\n<p>aktueller Nachfolger:</p>"; 
569                        echo "\n<div class='fs' title='Aktuelles Nachfolger-Flurst&uuml;ck'>"; // Zeile
570
571                                // Icon -> Nachweis FS-Hist. in Buchauskunft
572                                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>";
573                                        echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
574                                echo "\n\t</a> ";       
575
576                                // Kennzeichen -> Karte positionieren
577                                echo "\n\tFlst. <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
578                                                echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); ";
579                                                echo "parent.parent.showHighlight(".$x.",".$y.");' ";
580                                        echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
581                                        echo "onmouseout='parent.parent.hideHighlight()'>";
582                        //      echo $flur."-".$fskenn."</a>";
583                                echo $fskenn."</a>";
584
585                        echo "\n</div>";
586
587                } else { // Historisches FS gefunden (h oder o)
588                //      echo "\n<p>Historisches Flurst&uuml;ck:</p>";
589
590                        if ($ftyp == "h") {
591                                $ico="Flurstueck_Historisch_Lnk.ico";
592                                $titl="Historisches Flurst&uuml;ck";
593                        } else {
594                                $ico="Flurstueck_Historisch_oR_Lnk.ico";
595                                $titl="Historisches Flurst&uuml;ck ohne Raumbezug";
596                        }  // h: Karte Pos.?
597                        echo "\n<div class='hi' title='".$titl."'>";
598                                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfshist.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>";
599                                        echo "\n\t\t<img class='nwlink' src='ico/".$ico."' width='16' height='16' alt='Hist'>";
600                                echo "\n\t</a> Historisches Flst. ".$fskenn."</a>";
601                        echo "\n</div>";
602
603                        if ($nachf == "") {
604                                echo "\n<p class='err'>keine Nachfolger</p>";   
605                        } else {
606                                echo "\n<p>Nachfolger-Flurst&uuml;cke:</p>";
607                                // Die direkten Nachfolger ermitteln
608                                // Nachfolger in DB suchen um den Status aktuell/historisch zu ermitteln
609                                $stri=trim($nachf, "{}");
610                                $stri="'".str_replace(",", "','", $stri)."'";
611                        //      $whcln.="WHERE flurstueckskennzeichen IN ( $1 ) ";
612                                $whcln.="WHERE flurstueckskennzeichen IN ( ".$stri." ) ";
613                                $sqln ="SELECT 'a' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_flurstueck ".$whcln;
614                                $sqln.="UNION SELECT 'h' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_historischesflurstueck ".$whcln;
615                                $sqln.="UNION SELECT 'o' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_historischesflurstueckohneraumbezug ".$whcln;
616                //              $v=array($stri);
617                                $v=array();
618                                $resn=pg_prepare("", $sqln);
619                                $resn=pg_execute("", $v);
620                                if (!$resn) {echo "\n<p class='err'>Fehler bei Nachfolger.</p>";}
621                                $zfsn=0;
622                                while($rown = pg_fetch_array($resn)) {
623                                        $ftypn=$rown["ftyp"];
624                                        $na_gml=$rown["gml_id"];
625                                        $gknrn=$rown["gemarkungsnummer"];
626                                        $flurn=$rown["flurnummer"];
627                                        $fskennn=$rown["zaehler"];
628                                        if ($rown["nenner"] != "") {$fskennn.="/".$rown["nenner"];}
629
630                                        switch ($ftypn) {
631                                        case "a":
632                                                $ico="Flurstueck_Link.ico";
633                                                $titl="Aktuelles Flurst&uuml;ck";
634                                                $hisparm="";
635                                                $auskprog="alkisfsnw";
636                                                // ++ Koordinaten holen? siehe oben "als function"
637                                        break;
638                                        case "h":
639                                                $ico="Flurstueck_Historisch_Lnk.ico";
640                                                $titl="Historisches Flurst&uuml;ck";
641                                                $hisparm="&amp;hist=j";
642                                                $auskprog="alkisfshist";
643                                        break;
644                                        case "o":
645                                                $ico="Flurstueck_Historisch_oR_Lnk.ico";
646                                                $titl="Historisches Flurst&uuml;ck ohne Raumbezug";
647                                                $hisparm="&amp;hist=j";
648                                                $auskprog="alkisfshist";
649                                        break;
650                                        }
651                                        $fs=$gknrn."-".$flurn."-".$fskennn;
652                                        echo "\n<div class='hn' title='Nachfolger: ".$titl."'>";                       
653                                                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath.$auskprog.".php?gkz=".$gkz."&amp;gmlid=".$na_gml."\")'>";
654                                                        echo "\n\t\t<img class='nwlink' src='ico/".$ico."' width='16' height='16' alt='FS'>";
655                                                echo "\n\t</a> ";               
656                                                echo "Flst. <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$fs.$hisparm."'>".$fskennn."</a>";                                   
657                                        echo "\n</div>";
658
659                                        $zfsn++;
660                                        // Kontrollieren: Wurden auch so viele FS in DB gefunden, wie im Array "Where in()" standen?
661                                }
662                                if ($zfsn == 0) {
663                                        echo "<p class='err'>keine Nachfolger gefunden</p>";
664                                        if ($debug > 1) {echo "<p class='dbg'>SQL=<br>".$sqln."<br>Liste=<br> ".$stri."</p>";}
665                                }               
666                        }
667                }
668                $zfs++;
669        }
670        if($zfs == 0) {
671                echo "\n<p class='err'>Kein historisches Flurst&uuml;ck.</p>";
672                if ($debug > 2) {echo "<p class='dbg'>".$sql."</p>";}
673        }
674        return;
675}
676
677// ===========
678// Start hier!
679// ===========
680if(isset($epsg)) {
681        //if ($debug >= 2) {echo "<p class='dbg'>aktueller EPSG='".$epsg."'</p>";} // aus MB
682        $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]);   
683} else {
684        if ($debug >= 1) {echo "<p class='dbg'>kein EPSG gesetzt</p>";}
685        $epsg=$gui_epsg; // aus Conf
686}
687//if ($debug >= 2) {echo "<p class='dbg'>Filter Gemeinde = ".$gemeinde."</p>";}
688if ($gemeinde == "") {
689        $gfilter = 0; // ungefiltert
690} elseif(strpos($gemeinde, ",") === false) {
691        $gfilter = 1; // Einzelwert
692} else {
693        $gfilter = 2; // Liste
694}
695if ($hist == "j") {$phist = true;} else {$phist = false;}
696
697if(isset($gm)) { // Self-Link aus Gemeinde-Liste
698        $gnr=ListGmkgInGemeinde($gm); // Gemarkungen zu dieser Gemeinde listen
699        if ($gnr > 0) {
700                $zgemkg=$gnr;
701                EineGemarkung(false);
702        }
703} else {
704        // Die Formular-Eingabe interpretieren (kann auch ein Link sein)
705        $retzer=ZerlegungFsKennz($fskennz);
706//      if ($debug > 1) {echo "<p class='dbg'>Return Zerlegung (case) = '".$retzer."'</p>";}   
707        switch ($retzer) {
708        case 0: // leere Eingabe
709                if ($gfilter == 1) { // Die GUI ist bereits auf eine Gemeinde gefiltert
710                        SuchGmkgName(); // Gemarkungen listen
711                } else {
712                        ListGemeinden(); // alle Gemeinden Listen
713                }
714        break;
715        case 1:
716                if ($debug >= 2) {echo "<p class='dbg'>Gemarkungsname ".$zgemkg."</p>";}
717                $gnr=SuchGmkgName();
718                if ($gnr > 0) {
719                        $zgemkg=$gnr;
720                        EineGemarkung(false);
721                }
722        break;
723        case 2:
724                if ($debug >= 2) {echo "<p class='dbg'>Gemarkungsnummer ".$zgemkg."</p>";}     
725                EineGemarkung(true);
726        break;
727        case 3:
728                if ($debug >= 2) {echo "<p class='dbg'>Gemarkung ".$zgemkg." Flur ".$zflur."</p>";}
729                if ($phist)     {HistFlur();} else {EineFlur();}
730        break;
731        case 4:
732                if ($debug >= 2) {echo "<p class='dbg'>Gemarkung ".$zgemkg." Flur ".$zflur." FlurstÃŒck ".$zzaehler."</p>";}
733                if ($phist)     {HistFlurstueck();} else {EinFlurstueck();}
734        break;
735        case 5:
736                if ($debug >= 2) {echo "<p class='dbg'>Gemarkung ".$zgemkg." Flur ".$zflur." FlurstÃŒck ".$zzaehler."/".$znenner."</p>";}
737                if ($phist) {HistFlurstueck();} else {EinFlurstueck();}         
738        break;
739        case 9:
740                echo "<p class='err'>Bitte ein Flurst&uuml;ckskennzeichen eingegeben, Format 'gggg-fff-zzzz/nnn</p>";
741        break;
742        }
743}
744 ?>
745
746</body>
747</html>
Note: See TracBrowser for help on using the repository browser.