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

Revision 276, 28.7 KB checked in by frank.jaeger, 11 years ago (diff)

Views um Thema "Bodenschätzung" erweitert, Mapbender-Nav korrigiert, sichten.sql wurde geteilt

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