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

Revision 278, 30.1 KB checked in by frank.jaeger, 11 years ago (diff)

Mapbender-Navigation mit ALKIS-Daten komplett überarbeitet.

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