source: trunk/mapbender/http/nav/alkisnav_fls.php @ 280

Revision 280, 30.2 KB checked in by frank.jaeger, 11 years ago (diff)

ALKIS-Navigation: Darstellung im IE verbessert

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