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

Revision 124, 22.6 KB checked in by frank.jaeger, 11 years ago (diff)

ALKIS-Mapbender-Navigation erweitert um die Suche in Flurstücks-Historie

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        ToDo:
11                Hist: die Nachfolger-Liste gleich in der DB nachschlagen,und aktuelle FS als solche anzeigen
12*/
13import_request_variables("PG");
14include("../../conf/alkisnav_conf.php"); $con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password;
15$con = pg_connect ($con_string) or die ("Fehler bei der Verbindung zur Datenbank ".$dbname.$dbvers.$gkz);
16?>
17
18<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
19<html>
20<head>
21        <meta http-equiv="cache-control" content="no-cache">
22        <meta http-equiv="pragma" content="no-cache">
23        <meta http-equiv="expires" content="0">
24        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
25        <title>ALKIS-Suche Flurst&uuml;ck</title>
26        <link rel="stylesheet" type="text/css" href="alkisnav.css">
27</head>
28<body>
29
30<?php
31
32function is_ne_zahl($wert) {
33        // Prueft, ob ein Wert ausschließlich aus den Zahlen 0 bis 9 besteht
34        if (trim($wert, "0..9") == "") {return true;} else {return false;}
35}
36
37function ZerlegungFsKennz($fskennz) {
38// Das eingegebene FlurstÃŒcks-Kennzeichen auseinander nehmen, Erwartet wird gggg-fff-zzzz/nnn
39        global $debug, $zgemkg, $zflur, $zzaehler, $znenner;            $arr = explode("-", $fskennz, 4);
40        $zgemkg=trim($arr[0]);
41        $zflur=trim($arr[1]);
42        $zfsnr=trim($arr[2]);
43        if ($zgemkg == "") {
44                return 0; // Gemeinden oder Gemarkungen listen
45        } elseif ( ! is_ne_zahl($zgemkg)) {
46                return 1; // Such Name
47        } elseif ($zflur == "") {
48                return 2; // G-Nr
49        } elseif ( ! is_ne_zahl($zflur)) {
50                echo "<p class='err>Die Flurnummer '".$zflur."' ist nicht numerisch</p>";
51                return 9;
52        } elseif ($zfsnr == "") {               
53                return 3; // Flur                               
54        } else {
55                $zn=explode("/", $zfsnr, 2);
56                $zzaehler=trim($zn[0]);
57                $znenner=trim($zn[1]);                         
58                if ( ! is_ne_zahl($zzaehler)) {
59                        echo "<p class='err>FlurstÃŒcksnummer '".$zzaehler."' ist nicht numerisch</p>";
60                        return 9;
61                } elseif ($znenner == "") {
62                        return 4;
63                } elseif (is_ne_zahl($znenner)) {
64                        return 5;                                                               
65                } else {
66                        echo "<p class='err>FlurstÃŒcks-Nenner '".$znenner."' ist nicht numerisch</p>";
67                        return 9;
68                }
69        }
70}
71
72function ListGemeinden() {
73        // bei Leereingabe die Gemeinden anlisten
74        global $con, $gkz, $gemeinde, $epsg, $debug, $gfilter;
75        $linelimit=50;
76        $sql ="SELECT DISTINCT g.gemeinde AS key, g.bezeichnung FROM ax_gemeinde g ";
77        $sql.="JOIN gemeinde_gemarkung v ON g.regierungsbezirk=v.regierungsbezirk AND g.kreis=v.kreis AND g.gemeinde=v.gemeinde ";
78        // "ax_gemeinde" enthÀlt mehrfache Gemeinde-Schluessel (Filtern regierungsbezirk, kreis)       
79        // "gemeinde_gemarkung" enthaelt nur gefÃŒllte Gemarkungen aber Gemeinde mehrfach
80        switch ($gfilter) {
81                case 1: // Einzelwert
82                        $sql.="WHERE g.gemeinde=".$gemeinde." ";
83                        break;
84                case 2: // Liste
85                        $sql.="WHERE g.gemeinde in (".$gemeinde.") ";
86                        break;
87                default: // kein Filter
88                        break;
89        }
90        $sql.=" ORDER BY g.bezeichnung LIMIT $1 ;";
91        $res=pg_prepare("", $sql);
92        $res=pg_execute("", array($linelimit));
93        if (!$res) {
94                echo "\n<p class='err'>Fehler bei Gemeinde</p>";
95                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
96                return 0;
97        }
98        $cnt = 0;
99        while($row = pg_fetch_array($res)) {
100                $stadt=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
101                $bez=urlencode($row["bezeichnung"]);  // Uebergeben an ListGmkgInGemeinde
102                $gnr=$row["key"];                 echo "\n<div class='gm' title='Gemeinde'>";
103                        echo "\n\t\t<img class='nwlink' src='ico/Gemeinde.ico' width='16' height='16' alt='Stadt'>";
104                        echo " Gem. <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gm=".$gnr."&amp;bez=".$bez."'>";               
105                        echo  " ".$stadt."</a> (".$gnr.")";
106                echo "\n</div>";
107                $cnt++;
108        }
109        if($cnt == 0){
110                echo "\n<p class='err'>Keine Gemeinde.</p>";
111        } elseif($cnt >= $linelimit) {
112                echo "\n<p title='Bitte eindeutiger qualifizieren'>... und weitere</p>";
113        } elseif($cnt == 1) { // Eindeutig!
114                return $gnr;
115        }
116        return 0;
117}
118
119function ListGmkgInGemeinde($gkey) {
120// Die (gefuellten) Gemarkungen zu einem Gemeinde-Key (aus Link) listen
121        global $con, $gkz, $gemeinde, $epsg, $debug, $gfilter, $bez;
122        $linelimit=70;
123        $sql ="SELECT g.gemarkungsnummer, g.bezeichnung ";
124        $sql.="FROM ax_gemarkung g JOIN gemeinde_gemarkung v ON g.gemarkungsnummer=v.gemarkung ";
125   $sql.="WHERE v.gemeinde= $1 ORDER BY g.bezeichnung LIMIT $2 ;";
126        $res=pg_prepare("", $sql);
127        $res=pg_execute("", array($gkey, $linelimit));
128        if (!$res) {
129                echo "\n<p class='err'>Fehler bei Gemarkungen</p>";
130                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
131                return 0;
132        }
133        // Hierarchie Dokumentieren, Gemeinde-Name?
134        echo "\n<div class='gm' title='Gemeinde'>";
135                echo "\n\t\t<img class='nwlink' src='ico/Gemeinde.ico' width='16' height='16' alt='Stadt'>";   
136                echo  " Gem. ".$bez." (".$gkey.")"; // .urldecode($bez). ??
137        echo "\n</div>";
138        $cnt = 0;
139        while($row = pg_fetch_array($res)) {
140                $gnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
141                $gnr=$row["gemarkungsnummer"];                 echo "\n<div class='gk' title='Gemarkung'>";
142                        echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemarkung'>";
143                        echo " OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$gnr."'>";             
144                        echo  " ".$gnam."</a> (".$gnr.")";
145                echo "\n</div>";
146                $cnt++;
147        }
148        if($cnt == 0){
149                echo "\n<p class='err'>Keine Gemarkung.</p>";
150        } elseif($cnt >= $linelimit) {
151                echo "\n<p title='Bitte eindeutiger qualifizieren'>... und weitere</p>";
152        } elseif($cnt == 1) { // Eindeutig!
153                return $gnr;
154        }
155        return 0;
156}
157
158function SuchGmkgName() {
159// Gemarkung suchen nach Name(-nsanfang)
160        global $con, $gkz, $gemeinde, $epsg, $debug, $fskennz, $gfilter;
161        $linelimit=120;
162        if(preg_match("/\*/",$fskennz)){
163                $match = trim(preg_replace("/\*/i","%", strtoupper($fskennz)));
164        } else {
165                $match = trim($fskennz)."%";
166        }       
167        $sql ="SELECT v.gemeindename, g.gemarkungsnummer, g.bezeichnung ";
168        $sql.="FROM ax_gemarkung g JOIN gemeinde_gemarkung v ON g.gemarkungsnummer=v.gemarkung ";
169   $sql.="WHERE bezeichnung ILIKE $1 ";
170        switch ($gfilter) {
171                case 1: // Einzelwert
172                        $sql.="AND v.gemeinde=".$gemeinde." ";
173                        break;
174                case 2: // Liste
175                        $sql.="AND v.gemeinde in (".$gemeinde.") ";
176                        break;
177                default: // kein Filter
178                        break;
179        }
180        $sql.=" ORDER BY g.bezeichnung LIMIT $2 ;";
181        $v=array($match, $linelimit);
182        $res=pg_prepare("", $sql);
183        $res=pg_execute("", $v);
184        if (!$res) {
185                echo "\n<p class='err'>Fehler bei Gemarkung</p>";
186                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
187                return 0;
188        }
189        $cnt = 0;
190        while($row = pg_fetch_array($res)) {
191                $gnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
192                $gnr=$row["gemarkungsnummer"];
193                $stadt=$row["gemeindename"];                 echo "\n<div class='gk' title='Gemarkung'>";
194                        echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemarkung'>";
195                        echo " OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$gnr."'>";             
196                        echo  " ".$gnam."</a> (".$gnr.")";
197                        switch ($gfilter) {
198                                case 0: // Kein Filter
199                                        echo " ".$stadt;
200                                        break;
201                                case 2: // Liste
202                                        echo " ".$stadt;
203                                        break;
204                                default: // Einzelwert
205                                        break;
206                        }
207                echo "\n</div>";
208                $cnt++;
209        }
210        if($cnt == 0){
211                echo "\n<p class='err'>Keine Gemarkung.</p>";
212        } elseif($cnt >= $linelimit) {
213                echo "\n<p title='Bitte eindeutiger qualifizieren'>... und weitere</p>";
214        } elseif($cnt == 1) { // Eindeutig!
215                return $gnr;
216        }
217        return 0;
218}
219
220function EineGemarkung($AuchGemkZeile) {
221        // Kennzeichen bestehend nur aus Gemarkung-SchlÃŒssel wurde eingegeben
222        global $con, $gkz, $gemeinde, $epsg, $debug, $zgemkg;
223        $linelimit=120; // max. Fluren je Gemarkung
224        if ($AuchGemkZeile) {
225                $sql ="SELECT bezeichnung FROM ax_gemarkung g WHERE g.gemarkungsnummer= $1 ;"; // WHERE f.land= ?
226                $v=array($zgemkg);
227                $res=pg_prepare("", $sql);
228                $res=pg_execute("", $v);
229                if (!$res) {echo "\n<p class='err'>Fehler bei Gemarkung.</p>";}
230                $zgmk=0;
231                while($row = pg_fetch_array($res)) {   
232                        $gmkg=$row["bezeichnung"];
233                        $zgmk++;
234                }
235                if ($zgmk == 0) {
236                        echo "\n<div class='gk' title='Gemarkung'>";
237                                echo "\n\t\t<p class='err'><img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemarkung'>";
238                                        echo  " Gemarkung ".$zgemkg." ist unbekannt.</p>";
239                        echo "\n</div>";
240                        return;
241                }
242                // > 1 auch möglich?
243                echo "\n<div class='gk' title='Gemarkung'>";
244                        echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemarkung'> ";
245                        echo " OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$zgemkg."'>";           
246                        echo $gmkg."</a>  (".$zgemkg.")"; // in Gemeinde?
247                echo "\n</div>";
248        }
249        $sql ="SELECT gemarkungsteilflur AS flur FROM ax_gemarkungsteilflur f ";
250        $sql.="WHERE gemarkung= $1 ORDER BY gemarkungsteilflur LIMIT $2 ;";     // WHERE f.land= ?
251        $v=array($zgemkg, $linelimit);
252        $res=pg_prepare("", $sql);
253        $res=pg_execute("", $v);
254        if (!$res) {echo "\n<p class='err'>Fehler bei Flur.</p>";}
255        $zfl=0;
256        while($row = pg_fetch_array($res)) {   
257                $flur=$row["flur"];
258                echo "\n<div class='fl' title='Flur'>";
259                        echo "\n\t\t<img class='nwlink' src='ico/Flur.ico' width='16' height='16' alt='Flur'>&nbsp;";
260                        echo "Flur<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$zgemkg."-".$flur."'>&nbsp;".$flur."&nbsp;</a>";
261                echo "\n</div>";
262                $zfl++;
263        }
264        if($zfl == 0) {
265                echo "\n<p class='err'>Keine Flur.</p>";
266        } elseif($cnt >= $linelimit) {
267                echo "\n<p>... und weitere</p>";
268        }
269        return;
270}
271
272function EineFlur() {
273        // Kennzeichen aus Gemarkung und FlurNr wurde eingegeben
274        global $con, $gkz, $gemeinde, $epsg, $debug, $scalefs, $auskpath, $zgemkg, $zflur;
275        $linelimit=600; // Wie groß kann eine Flur sein?
276        $sql ="SELECT bezeichnung FROM ax_gemarkung g WHERE g.gemarkungsnummer= $1 ;";
277        $v=array($zgemkg);
278        $res=pg_prepare("", $sql);
279        $res=pg_execute("", $v);
280        if (!$res) {echo "\n<p class='err'>Fehler bei Gemarkung.</p>";}
281        $zgmk=0;
282        while($row = pg_fetch_array($res)) {   
283                $gmkg=$row["bezeichnung"];
284                $zgmk++;
285        }
286        if ($zgmk == 0) {
287                echo "\n<div class='gk' title='Gemarkung'>";
288                        echo "\n\t\t<p class='err'><img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemarkung'>";
289                                echo  " Gemarkung ".$zgemkg." ist unbekannt.</p>";
290                echo "\n</div>";
291                return;
292        }
293        echo "\n<div class='gk' title='Gemarkung'>";
294                echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemarkung'>";
295                echo " OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$zgemkg."'> ".$gmkg." (".$zgemkg.")</a>";
296        echo "\n</div>";
297        echo "\n<div class='fl' title='Flur'>";
298                echo "\n\t\t<img class='nwlink' src='ico/Flur.ico' width='16' height='16' alt='Flur'> ";
299                echo "Flur <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$zgemkg."-".$zflur."'> ".$zflur."</a>";
300        echo "\n</div>";
301
302        $sql ="SELECT f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ";
303        //      $sql.="x(st_transform (st_centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
304        //      $sql.="y(st_transform (st_centroid(f.wkb_geometry), ".$epsg.")) AS y ";
305        if($epsg == "25832") { // Transform nicht notwendig
306                $sql.="x(st_Centroid(f.wkb_geometry)) AS x, ";
307                $sql.="y(st_Centroid(f.wkb_geometry)) AS y ";
308        }
309        else { 
310                $sql.="x(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
311                $sql.="y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y ";                 
312        }
313   $sql.="FROM ax_flurstueck f WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 ";
314        $sql.="ORDER BY f.zaehler, f.nenner LIMIT $3 ;"; // WHERE f.land= ?
315        $v=array($zgemkg, $zflur, $linelimit);
316        $res=pg_prepare("", $sql);
317        $res=pg_execute("", $v);
318        if (!$res) {echo "\n<p class='err'>Fehler bei Flur.</p>";}
319        $zfs=0;
320        while($row = pg_fetch_array($res)) {   
321                $fs_gml=$row["gml_id"];
322                $flur=$row["flurnummer"];
323                $fskenn=$row["zaehler"];
324                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
325                $x=$row["x"];
326                $y=$row["y"];
327                echo "\n<div class='fs'>";
328                        echo "\n\t<a title='Nachweis' target='_blank' href='".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."'>";
329                                echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
330                        echo "\n\t</a> ";                       
331                        echo "\n\tFlst. <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
332                                        echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); ";
333                                        echo "parent.parent.showHighlight(".$x.",".$y.");' ";
334                                echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
335                                echo "onmouseout='parent.parent.hideHighlight()'>&nbsp;".$fskenn."&nbsp;</a>";
336                echo "\n</div>";
337                $zfs++;
338        }
339        if($zfs == 0) {
340                echo "\n<p class='err'>Kein Flurst&uuml;ck.</p>";
341        } elseif($zfs >= $linelimit) {
342                echo "\n<p>... und weitere</p>";
343        }
344        return;
345}
346
347function EinFlurstueck() {
348        // FlurstÃŒckskennzeichen komplett bis zum Zaehler eingegeben
349        // Sonderfall: bei Bruchnummer, mehrere Nenner zum Zaehler
350        global $con, $gkz, $debug, $scalefs, $epsg, $auskpath, $fskennz, $zgemkg, $zflur, $zzaehler, $znenner;
351
352        $sql ="SELECT f.gml_id, f.flurnummer, f.zaehler, f.nenner, ";
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        }
357        else { 
358                $sql.="x(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
359                $sql.="y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y, ";                 
360        }
361
362        $sql.="g.bezeichnung ";
363   $sql.="FROM ax_flurstueck f JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
364        $sql.="WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 AND f.zaehler= $3 ";
365        If ($znenner != "") {$sql.="AND f.nenner=".$znenner." ";} // wie prepared?
366        $sql.="ORDER BY f.zaehler, f.nenner;"; // WHERE f.land= ?
367        $v=array($zgemkg, $zflur, $zzaehler);
368        $res=pg_prepare("", $sql);
369        $res=pg_execute("", $v);
370        if (!$res) {echo "\n<p class='err'>Fehler bei Flurst&uuml;ck.</p>";}
371        $zfs=0;
372        while($row = pg_fetch_array($res)) {   
373                $fs_gml=$row["gml_id"];
374                $gmkg=$row["bezeichnung"];
375                $flur=$row["flurnummer"];
376                $fskenn=$row["zaehler"];
377                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
378                $x=$row["x"];
379                $y=$row["y"];
380                echo "\n<div class='fs'>";
381                        echo "\n\t<a title='Nachweis' target='_blank' href='".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."'>";
382                                echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
383                        echo "\n\t</a> ";               
384                        echo "\n\tFlst. <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
385                                        echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); ";
386                                        echo "parent.parent.showHighlight(".$x.",".$y.");' ";
387                                echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
388                                echo "onmouseout='parent.parent.hideHighlight()'>";
389                        echo $gmkg." ".$flur."-".$fskenn."</a>";
390                echo "\n</div>";
391                $zfs++;
392        }
393        if($zfs == 0) {
394                echo "\n<p class='err'>Kein aktuelles Flurst&uuml;ck.</p>";
395
396                // Soll in der Historie weiter gesucht werden?
397                echo "\n<div class='hi' title='Historie'>";
398                        echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Historisch.ico' width='16' height='16' alt='Historisches Flurst&uuml;ck'>&nbsp;";
399                        echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$fskennz."&amp;hist=j'>in Historie suchen</a>";
400                echo "\n</div>";               
401        }
402        return;
403}
404
405function HistFlurstueck() {
406        // Ein HISTORISCHES FlurstÃŒckskennzeichen oder Nachfolger komplett eingegeben
407        global $con, $gkz, $debug, $scalefs, $epsg, $auskpath, $land, $zgemkg, $zflur, $zzaehler, $znenner;
408
409//++++ TEST 300 :  2769-9-5/1
410
411        // Suche ueber das Flurstueckskennzeichen, gml meist unbekannt
412        $whcl.="WHERE flurstueckskennzeichen= $1 ";
413
414        $sql ="SELECT 'a' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner, null as nachf FROM ax_flurstueck ".$whcl;
415        $sql.="UNION SELECT 'h' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueck ".$whcl;
416        $sql.="UNION SELECT 'o' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueckohneraumbezug ".$whcl;
417
418        $fskzwhere =$land.$zgemkg; // Flurst-Kennz. f. Where
419        $fskzwhere.=str_pad($zflur, 3, "0", $STR_PAD_LEFT);
420        $fskzwhere.=str_pad($zzaehler, 5, "0", $STR_PAD_LEFT);
421        if ($znenner == "") {$fskzwhere.="______";}
422        else {$fskzwhere.=str_pad($znenner, 4, "0", $STR_PAD_LEFT)."__";}
423
424        $v=array($fskzwhere);
425        $res=pg_prepare("", $sql);
426        $res=pg_execute("", $v);
427        if (!$res) {echo "\n<p class='err'>Fehler bei hist. Flurst&uuml;ck.</p>";}
428        $zfs=0;
429        while($row = pg_fetch_array($res)) {
430                $ftyp=$row["ftyp"];
431                $fs_gml=$row["gml_id"];
432                $gknr=$row["gemarkungsnummer"];
433                $flur=$row["flurnummer"];
434                $fskenn=$row["zaehler"];
435                $nachf=$row["nachf"];
436                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
437
438                if ($ftyp == "a") { // aktuelles FS gefunden
439
440                        // noch die Koordinate dazu besorgen
441                        $sql ="SELECT ";
442                        if($epsg == "25832") { // Transform nicht notwendig
443                                $sql.="x(st_Centroid(wkb_geometry)) AS x, ";
444                                $sql.="y(st_Centroid(wkb_geometry)) AS y ";
445                        } else { 
446                                $sql.="x(st_transform(st_Centroid(wkb_geometry), ".$epsg.")) AS x, ";
447                                $sql.="y(st_transform(st_Centroid(wkb_geometry), ".$epsg.")) AS y ";                   
448                        }
449                   $sql.="FROM ax_flurstueck WHERE gml_id= $1 ";
450                        $v=array($fs_gml);
451                        $res=pg_prepare("", $sql);
452                        $res=pg_execute("", $v);
453                        if (!$res) {echo "\n<p class='err'>Fehler bei Koordinate.</p>";}
454                        $zfs=0;
455                        while($row = pg_fetch_array($res)) {   
456                                $x=$row["x"];
457                                $y=$row["y"];
458                                $zfs++;
459                        }
460                        if ($zfs == 0) {echo "\n<p class='err'>Kein Treffer bei Koordinate.</p>";}
461                        echo "\n<p>aktueller Nachfolger:</p>"; 
462
463                        // Zeile
464                        echo "\n<div class='fs' title='Aktuelles Nachfolger-Flurst&uuml;ck'>";
465
466                                // Icon -> Nachweis FS-Hist. in Buchauskunft
467                                echo "\n\t<a title='Nachweis' target='_blank' href='".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."'>";
468                                        echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
469                                echo "\n\t</a> ";       
470
471                                // Kennzeichen -> Karte positionieren
472                                echo "\n\tFlst. <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
473                                                echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); ";
474                                                echo "parent.parent.showHighlight(".$x.",".$y.");' ";
475                                        echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
476                                        echo "onmouseout='parent.parent.hideHighlight()'>";
477                                echo $gmkg." ".$flur."-".$fskenn."</a>";
478
479                        echo "\n</div>";
480
481                } else { // Historisches FS gefunden (h oder o)
482                        echo "\n<p>Historisches Flurst&uuml;ck:</p>";
483
484                        // Zeile
485                        echo "\n<div class='hi' title='Historisches Flurst&uuml;ck'>";
486                                echo "\n\t<a title='Nachweis' target='_blank' href='".$auskpath."alkisfshist.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."'>";
487                                        echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Historisch.ico' width='16' height='16' alt='Hist'>";
488                                echo "\n\t</a> ";               
489                                echo "\n\t ".$gknr."-".$flur."-".$fskenn."</a>";
490                        echo "\n</div>";
491
492                        // Nachfolger ermitteln
493                        if ($nachf == "") {
494                                echo "\n<p class='err'>keine Nachfolger</p>";   
495                        } else {
496                                echo "\n<p>Nachfolger-Flurst&uuml;cke:</p>";   
497                                $stri=trim($nachf, "{}");
498                                $arr = split(",",$stri);
499                                foreach($arr AS $val){
500                                        $fst=rtrim($val,"_");   
501                                        $zer=substr ($fst, 2, 4)."-".ltrim(substr($fst, 6, 3), "0")."-".ltrim(substr($fst, 9, 5),"0");
502                                        $nenn=ltrim(substr($fst, 14), "0");
503                                        if ($nenn != "") {$zer.="/".$nenn;}
504
505// +++ besser: array in Where kennz in ( , , ) umwandeln
506// aktuelle FS gleich als solche anzeigen
507
508                                        // Zeile Nachfolger
509                                        echo "\n<div class='hn' title='Historie Nachfolger'>";
510
511                                                // Icon -> Nachweis                                     
512                                                echo "\n\t<a title='Nachweis' target='_blank' href='".$auskpath."alkisfshist.php?gkz=".$gkz."&amp;fskennz=".$val."'>";
513                                                        echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Historisch.ico' width='16' height='16' alt='Hist'>";
514                                                echo "\n\t</a> ";               
515
516                                                // Kennzeichen -> weiter in die Historie hinein
517                                                echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$zer."&amp;hist=j'>".$zer."</a>";                                   
518
519                                        echo "\n</div><br>";
520                                }
521                        }
522                }
523                $zfs++;
524        }
525        if($zfs == 0) {
526                echo "\n<p class='err'>Kein historisches Flurst&uuml;ck.</p>";
527                if ($debug > 2) {echo "<p class='err'>".$sql."</p>";}
528        }
529        return;
530}
531
532// ===========
533// Start hier!
534// ===========
535if(isset($epsg)) {
536        if ($debug >= 2) {echo "<p>aktueller EPSG='".$epsg."'</p>";     } // aus MB
537        $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]);   
538} else {
539        if ($debug >= 1) {echo "<p class='err'>kein EPSG gesetzt</p>";}
540        $epsg=$gui_epsg; // aus Conf
541}
542if ($debug >= 2) {
543        echo "<p>Filter Gemeinde = ".$gemeinde."</p>";
544}
545if ($gemeinde == "") {
546        $gfilter = 0; // ungefiltert
547} elseif(strpos($gemeinde, ",") === false) {
548        $gfilter = 1; // Einzelwert
549} else {
550        $gfilter = 2; // Liste
551}
552if ($hist == "j") { $phist = true;} else {$phist = false;}
553
554if(isset($gm)) { // Self-Link aus Gemeinde-Liste
555        $gnr=ListGmkgInGemeinde($gm); // Gemarkungen zu dieser Gemeinde listen
556        if ($gnr > 0) {
557                $zgemkg=$gnr;
558                EineGemarkung(false);
559        };     
560} else {
561        // Die Formular-Eingabe interpretieren (kann auch ein Link sein)
562        switch (ZerlegungFsKennz($fskennz)) {
563        case 0: // leere Eingabe
564                if ($gfilter == 1) { // Die GUI ist bereits auf eine Gemeinde gefiltert
565                        SuchGmkgName(); // Gemarkungen listen
566                } else {
567                        ListGemeinden(); // alle Gemeinden Listen
568                }
569        break;
570        case 1:
571                if ($debug >= 2) {echo "<p>Gemarkungsname ".$zgemkg."</p>";}
572                $gnr=SuchGmkgName();
573                if ($gnr > 0) {
574                        $zgemkg=$gnr;
575                        EineGemarkung(false);
576                };     
577        break;
578        case 2:
579                if ($debug >= 2) {echo "<p>Gemarkungsnummer ".$zgemkg."</p>";} 
580                EineGemarkung(true);
581        break;
582        case 3:
583                if ($debug >= 2) {echo "<p>Gemarkung ".$zgemkg." Flur ".$zflur."</p>";}
584                EineFlur();
585        break;
586        case 4:
587                if ($debug >= 2) {echo "<p>Gemarkung ".$zgemkg." Flur ".$zflur." FlurstÃŒck ".$zzaehler."</p>";}
588                if ($phist)     {HistFlurstueck();} else {EinFlurstueck();}
589        break;
590        case 5:
591                if ($debug >= 2) {echo "<p>Gemarkung ".$zgemkg." Flur ".$zflur." FlurstÃŒck ".$zzaehler."/".$znenner."</p>";}
592                if ($phist) {HistFlurstueck();} else {EinFlurstueck();}         
593        break;
594        case 9:
595                echo "<p class='err'>Bitte ein Flurst&uuml;ckskennzeichen eingegeben, Format 'gggg-fff-zzzz/nnn</p>";
596        break;
597        }
598}
599 ?>
600
601</body>
602</html>
Note: See TracBrowser for help on using the repository browser.