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

Revision 140, 28.6 KB checked in by frank.jaeger, 12 years ago (diff)

Filter auf Gemeinde bei Navigation bei Suche nach Eigentümer. Dazu Hilfstabelle aufbauen.

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