Ignore:
Timestamp:
05/08/13 09:04:34 (11 years ago)
Author:
frank.jaeger
Message:

Mapbender-ALKIS-Navigation korrigiert und verbessert.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/mapbender/http/nav/alkisnav_fkt.php

    r278 r282  
    11<?php 
    22/* Version vom  
    3         2013-04-26      NEU Function "GB_Buchung_FS" ausgelagert. 
    4                                         Code aus aus _eig soll auch in _grd verwendet werden 
    5                 Dazu Var-Namen harmonisieren: 
    6                 _eig    _grd     NEU 
    7                 $gb     $gblatt  $blattgml 
     3        2013-05-07  Strukturierung des Programms, redundanten Code in Functions zusammen fassen 
    84*/ 
    95 
     6// function Typ "zeile_**"  = Ausgabe eines Knotens 
     7// - Icon,  ggf. mit Link zur Buchauskunft 
     8// - Zeile, ggf. mit Link zur weiteren Auflösung untergeordneter Knoten 
     9// Hierin die Encodierung fÃŒr url und HTML. 
     10 
     11function zeile_ag ($ag, $anr) { // Zeile  A m t s g e r i c h t 
     12        global $gkz, $gemeinde, $epsg, $auskpath; 
     13        if ($ag == "") { 
     14                $agd=$anr; // Ersatz: Nummer statt Name. Besser: Name immer fÃŒllen 
     15        } else { 
     16                $agd=htmlentities($ag, ENT_QUOTES, "UTF-8"); 
     17        } 
     18        echo "\n<div class='ga' title='Amtsgericht'>"; 
     19                echo "\n\t\t<img class='nwlink' src='ico/Gericht.ico' width='16' height='16' alt='Amtsgericht'> "; 
     20                echo "AG <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>";             
     21                echo $agd."</a> (".$anr.")"; 
     22        echo "\n</div>"; 
     23        return; 
     24} 
     25 
     26function zeile_gbbez ($gnam, $zgbbez) { // Zeile Grundbuch - B e z i r k 
     27        global $gkz, $gemeinde, $epsg, $auskpath; 
     28        $gnamd=htmlentities($gnam, ENT_QUOTES, "UTF-8"); 
     29        echo "\n<div class='gk' title='GB-Bezirk'>"; 
     30                echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Bez.'> "; 
     31                echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$zgbbez."'>";                
     32                echo "Bezirk ".$gnamd."</a> (".suchfeld($zgbbez).")";                    
     33        echo "\n</div>"; 
     34        return; 
     35} 
     36 
     37function zeile_blatt ($bezirk, $beznam, $blattgml, $blatt, $dienend, $person) { 
     38        global $gkz, $gemeinde, $epsg, $auskpath; 
     39        // Zeile Grundbuch - B l a t t 
     40        $blattd=ltrim($blatt, "0"); // Display-Version ohne fÃŒhrende Nullen 
     41        if ( $dienend) {$dientxt="dienendes ";} 
     42        $blattlnk=urlencode($blatt); // trailing Blank 
     43        if ($beznam != "") {$nam = $beznam." ";} 
     44        echo "\n<div class='gb' title='".$dientxt."GB-Blatt'>"; 
     45        if ($blattgml == "") { // Link zum Nachweis nur wenn GML bekannt 
     46                echo "\n\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='Blatt'>"; 
     47        } else { 
     48                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$blattgml."\")'>"; 
     49                        echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='Blatt'>"; 
     50                echo "\n\t</a> "; 
     51        } 
     52        echo $nam." <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg; 
     53        echo "&amp;blattgml=".$blattgml."&amp;gbkennz=".$bezirk."-".$blattlnk; 
     54 
     55        echo "&amp;gbbeznam=".urlencode($beznam); 
     56 
     57        if ($person != "") {echo "&amp;person=".$person;} // nur fÃŒr EigentÃŒmer-Suche 
     58        echo "'>Blatt&nbsp;".$blattd."</a>\n</div>"; 
     59        return; 
     60} 
     61 
     62function zeile_buchung ($buchunggml, $bvnr, $gbkennz, $dienend) { 
     63        // Zeile  B u c h u n g s s t e l l e  -  GrundstÃŒck ausgeben 
     64        global $gkz, $gemeinde, $epsg, $auskpath; 
     65        if ($bvnr == 0) { 
     66                $bvnra = "-"; 
     67        } else { 
     68                $bvnra = str_pad($bvnr, 4, "0", STR_PAD_LEFT); // auf 4 Stellen 
     69        } 
     70        if ($diened) { 
     71                $ti="dienendes&nbsp;"; 
     72                $re="Recht an "; 
     73        } else { 
     74                $ti=""; 
     75                $re=""; 
     76        } 
     77        echo "\n<div class='gs' title='".$ti."Grundst&uuml;ck'>"; 
     78        echo "\n\t<img class='nwlink' src='ico/Grundstueck.ico' width='16' height='16' alt='GS'> "; 
     79        echo $re."Buchung"; 
     80 
     81        if ($gbkennz == "") { // ohne Link 
     82                echo "&nbsp;".$bvnra."&nbsp;"; 
     83        } else { // Bezirk-Blatt-lfd 
     84                echo "\n\t<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;buchunggml=".$buchunggml;                  
     85                echo "&amp;gbkennz=".$gbkennz; 
     86                echo "'>&nbsp;".$bvnra."&nbsp;</a>"; 
     87        } 
     88        echo "\n</div>";         
     89        return 0; 
     90} 
     91 
     92function zeile_flurstueck ($fs_gml, $fskenn, $x, $y, $gmkg, $flur) { 
     93        // Zeile mit Icon (Link zum Buch-Nachweis) und Text (Link zum Positionieren) 
     94        global $gkz, $gemeinde, $epsg, $auskpath, $scalefs; 
     95 
     96        echo "\n<div class='fs'>"; 
     97        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>"; 
     98                echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>"; 
     99        echo "\n\t</a>\n\t";                     
     100 
     101        echo "&nbsp;<a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='"; 
     102        echo "javascript:"; 
     103                echo "transtitle(\"auf Flurst&uuml;ck positioniert\"); "; 
     104                echo "parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); "; 
     105                echo "parent.parent.showHighlight(".$x.",".$y.");' "; 
     106        echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' "; 
     107        echo "onmouseout='parent.parent.hideHighlight()'>"; 
     108 
     109        if ($gmkg == "" ) { 
     110                echo "Flst. "; // Im FS-Teil: Gem+Flur als Knoten darÃŒber ($gmkg und $flur leer) 
     111        } else { 
     112                echo $gmkg." "; // Im GB-und Nam-Teil in der Zeile angezeigt 
     113        } 
     114        if ($flur != "" ) {echo $flur."-";} 
     115        echo $fskenn."</a>\n</div>"; 
     116        return; 
     117} 
     118 
     119function zeile_person ($persongml, $nachname, $vorname) { 
     120        global $gkz, $gemeinde, $epsg, $auskpath; 
     121        // Zeile  P e r s o n   (oder Firma) 
     122        $nnam=htmlentities($nachname, ENT_QUOTES, "UTF-8"); 
     123        $namlnk=urlencode($nachname); 
     124        $vnam=htmlentities($vorname, ENT_QUOTES, "UTF-8"); 
     125        // Link zur Auskunft Person  +++ Icon differenzieren? Firma/Person 
     126        echo "\n<br>\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisnamstruk.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$gml."\")'>"; 
     127                echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'>"; 
     128        echo "\n\t</a> ";                
     129        echo "\n<a title='Person' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$persongml."&amp;name=".$namlnk."'>".$nnam.", ".$vnam."</a>"; 
     130        return; 
     131} 
     132 
    10133function GB_Buchung_FS ($linelimit) { 
    11 // Zu einem Grundbuch-Blatt (identifiziert ÃŒber seine gml_id): 
    12 //  - suchen der Buchungen (Gruppenwechsel)  
    13 //  - und FlurstÃŒcke (Links) 
    14 // Wird verwendet in den Modulen _eig und _grd. 
    15 // 2013-04-26   Noch kein BlÀttern und noch keine BerÃŒcksichtigung des Filters auf "Gemeinde" 
    16 // ToDo: ZÀhler fÃŒr Blatt, Buchung, FS - am Ende ausgeben 
    17  
    18         global $gkz, $gemeinde, $blattgml, $scalefs, $auskpath, $epsg, $gfilter, $debug; 
     134// Zu einem Grundbuch-Blatt (identifiziert ÃŒber seine gml_id) suchen der  
     135// Buchungen (Gruppenwechsel) und FlurstÃŒcke (Links) 
     136        global $gkz, $gemeinde, $blattgml, $epsg, $gfilter, $debug; 
    19137 
    20138        // SQL-Bausteine vorbereiten 
    21         $sql1 ="SELECT s1.laufendenummer AS lfd, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, "; 
     139        // SQL vorne gleich 
     140        $sql1 ="SELECT s1.laufendenummer AS lfd, s1.gml_id AS bsgml, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, "; 
    22141        if($epsg == "25832") { // Transform nicht notwendig 
    23142                $sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, "; 
     
    28147        } 
    29148        $sql1.="g.gemarkung, g.gemarkungsname "; 
    30    $sql1.="FROM alkis_beziehungen vbg "; 
     149        $sql1.="FROM alkis_beziehungen vbg "; 
    31150        $sql1.="JOIN ax_buchungsstelle s1 ON vbg.beziehung_von = s1.gml_id ";  
    32151 
    33         // Zwischen-JOIN (zusÀtzlich nur bei zweiter Abfrage) 
    34         $sqlz ="JOIN alkis_beziehungen vss ON vss.beziehung_von = s1.gml_id "; 
    35         $sqlz.="JOIN ax_buchungsstelle s2 ON vss.beziehung_zu = s2.gml_id "; 
    36  
    37         $sqla1 ="JOIN alkis_beziehungen vfb ON s1.gml_id = vfb.beziehung_zu "; 
    38         $sqla2 ="JOIN alkis_beziehungen vfb ON s2.gml_id = vfb.beziehung_zu "; 
    39  
    40         $sql2.="JOIN ax_flurstueck f ON vfb.beziehung_von = f.gml_id "; 
    41    $sql2.="JOIN pp_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung "; 
     152        // Zwischen-JOIN verschieden 
     153        $sqlz1 ="JOIN alkis_beziehungen vfb ON s1.gml_id = vfb.beziehung_zu "; 
     154         
     155        $sqlz2 ="JOIN alkis_beziehungen vss ON vss.beziehung_von = s1.gml_id "; 
     156        $sqlz2.="JOIN ax_buchungsstelle s2 ON vss.beziehung_zu = s2.gml_id "; 
     157        $sqlz2.="JOIN alkis_beziehungen vfb ON s2.gml_id = vfb.beziehung_zu "; 
     158 
     159        // ++   JOIN alkis_beziehungen - ax_buchungsblatt  
     160        //              fÃŒr Link auf Buchung mit komplettem Grundbuchennzeichen 
     161 
     162        // SQL hinten gleich 
     163        $sql2 ="JOIN ax_flurstueck f ON vfb.beziehung_von = f.gml_id "; 
     164        $sql2.="JOIN pp_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung "; 
    42165        $sql2.="WHERE vbg.beziehung_zu= $1 AND vbg.beziehungsart='istBestandteilVon' AND vfb.beziehungsart='istGebucht' "; 
    43166        switch ($gfilter) { 
     
    47170                        $sql2.="AND g.gemeinde in (".$gemeinde.") "; break; 
    48171        } 
    49         $sql2.="ORDER BY s1.laufendenummer, f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;"; 
    50  
    51         // Blatt <vbg/istBestandteilVon<  Buchungsstelle <vfb/istGebucht< Flurstck. 
    52         $sql=$sql1.$sqla1.$sql2; // Direkte Buchungen 
     172        $sql2.="ORDER BY cast(s1.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;"; 
     173 
     174        // Abfrage:  d i r e k t e  B u c h u n g e n 
     175        // Blatt <vbg/istBestandteilVon<  Buchungsstelle <vfb/istGebucht< FlurstÃŒck 
     176        #$sql=$sql1.$sqlz1.$sql2; // Direkte Buchungen 
    53177 
    54178        $v=array($blattgml, $linelimit); 
    55         $res=pg_prepare("", $sql); 
     179        $res=pg_prepare("", $sql1.$sqlz1.$sql2); 
    56180        $res=pg_execute("", $v); 
    57181        if (!$res) { 
    58182                echo "\n<p class='err'>Fehler bei Buchung und Flurst&uuml;ck.</p>"; 
    59                 if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";} 
     183                #if ($debug >= 3) {echo "\n<p class='err'>".$sql1.$sqlz1.$sql2."</p>";} 
    60184                return; 
    61185        } 
     
    63187        $gwbv=""; 
    64188        while($row = pg_fetch_array($res)) {     
    65  
    66                 // Gruppenwechsel auf Ebene Buchungs-Stelle (BVNR) 
    67189                $bvnr=$row["lfd"]; 
    68                 if ($gwbv != $bvnr) { 
    69                         if ($bvnr == 0) { 
    70                                 $bvnra = "-"; 
    71                         } else { 
    72                                 $bvnra = str_pad($bvnr, 4, "0", STR_PAD_LEFT); // auf 4 Stellen 
    73                         } 
    74                         $gwbv = $bvnr; // Steuerg GW BVNR 
    75                         echo "\n<div class='gs' title='Grundst&uuml;ck'>"; 
    76                         echo "<img class='nwlink' src='ico/Grundstueck.ico' width='16' height='16' alt='GS'> "; 
    77                         echo "Buchung ".$bvnra."</div>"; 
     190                $bsgml=$row["bsgml"]; // Buchungsstelle gml_id 
     191                if ($gwbv != $bvnr) { // Gruppierung Buchungs-Stelle (BVNR) 
     192                        $gwbv = $bvnr; 
     193                        zeile_buchung ($bsgml, $bvnr, "", false); // FÃŒr GB-Kennz. (-> Link) fehlt Bezirk + Blatt 
    78194                } 
    79  
    80195                $fs_gml=$row["gml_id"]; 
    81196                $gmkg=$row["gemarkungsname"]; 
     
    85200                $x=$row["x"]; 
    86201                $y=$row["y"]; 
    87                 echo "\n<div class='fs'>"; 
    88                         echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>"; 
    89                                 echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>"; 
    90                         echo "\n\t</a> ";        
    91                         echo "\n\t".$gmkg." <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='"; 
    92                                         echo "javascript:"; 
    93                                         echo "transtitle(\"auf Flurst&uuml;ck positioniert\"); "; 
    94                                         echo "parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); "; 
    95                                         echo "parent.parent.showHighlight(".$x.",".$y.");' "; 
    96                                 echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' "; 
    97                                 echo "onmouseout='parent.parent.hideHighlight()'>"; 
    98                         echo " Flur ".$flur." ".$fskenn."</a>"; 
    99                 echo "\n</div>"; 
     202                zeile_flurstueck ($fs_gml, $fskenn, $x, $y, $gmkg, $flur); 
    100203                $zfs1++; 
    101204        } 
    102         if($zfs1 == 0) {  
    103                 // "nichts gefunden" erst melden, wenn auch Teil 2 (Rechte an) nichts findet 
    104         } elseif($zfs1 >= $linelimit) { 
    105                 echo "\n<p class='anz'>... und weitere</p>"; 
    106         // +++  BlÀttern einfÃŒhren? 
     205        #if($zfs1 == 0) { // "nichts gefunden" erst melden, wenn auch Teil 2 (Rechte an) nichts findet 
     206        #} else 
     207        if($zfs1 >= $linelimit) { 
     208                echo "\n<p class='anz'>... und weitere</p>"; // +++  BlÀttern einfÃŒhren? 
    107209        } elseif($zfs1 > 1) { // ab 2 
    108210                echo "\n<p class='anz'>".$zfs1." Flurst&uuml;cke zum Grundbuch</p>"; 
    109211        } 
    110  
    111         if($zfs1 > 1) { // wenn's was zu trennen gibt 
    112                 echo "<hr>"; // Trennen 
    113         } 
    114  
    115         // Zweite Abfrage (Variante) aus den Bausteinen zusammen bauen 
    116         // buchungsStelle2 < an < buchungsStelle1 
    117         $sql=$sql1.$sqlz.$sqla2.$sql2; // Rechte an 
    118  
     212        if($zfs1 > 0) {echo "<hr>";} // Trennen 
     213 
     214        // Abfrage:  R e c h t e  a n   /   d i e n e n d e  B u c h u n g e n 
    119215        $v=array($blattgml, $linelimit); 
    120         $res=pg_prepare("", $sql); 
     216        $res=pg_prepare("", $sql1.$sqlz2.$sql2); 
    121217        $res=pg_execute("", $v); 
    122218        if (!$res) { 
    123219                echo "\n<p class='err'>Fehler bei Recht an Buchung.</p>"; 
    124                 if ($debug >= 3) {echo "\n<p class='dbg'>".$sql."</p>";} 
     220                #if ($debug >= 3) {echo "\n<p class='dbg'>".$sql1.$sqlz2.$sql2."</p>";} 
    125221                return; 
    126222        } 
    127223        $zfs2=0; 
     224        #$gwblatt=""; 
    128225        $gwbv=""; 
    129226        while($row = pg_fetch_array($res)) {     
    130  
    131                 // Gruppenwechsel auf Ebene Buchungs-Stelle (BVNR) 
    132227                $bvnr=$row["lfd"]; 
    133                 if ($gwbv != $bvnr) { 
    134                         if ($bvnr == 0) { 
    135                                 $bvnra = "-"; 
    136                         } else { 
    137                                 $bvnra = str_pad($bvnr, 4, "0", STR_PAD_LEFT); // auf 4 Stellen 
    138                         } 
    139                         $gwbv = $bvnr; // Steuerg GW BVNR 
    140                         echo "\n<div class='gs' title='Grundst&uuml;ck'>"; 
    141                         echo "<img class='nwlink' src='ico/Grundstueck.ico' width='16' height='16' alt='GS'> "; 
    142                         echo "Buchung ".$bvnra."</div>"; 
     228                $bsgml=$row["bsgml"]; // Buchungsstelle gml_id 
     229                if ($gwbv != $bvnr) { // Gruppierung Buchung (BVNR) - dienend 
     230                        $gwbv = $bvnr; 
     231                        zeile_buchung ($bsgml, $bvnr, "", true); 
    143232                } 
    144  
    145233                $fs_gml=$row["gml_id"]; 
    146234                $gmkg=$row["gemarkungsname"]; 
     
    150238                $x=$row["x"]; 
    151239                $y=$row["y"]; 
    152                 echo "\n<div class='fs'>"; 
    153                         echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>"; 
    154                                 echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>"; 
    155                         echo "\n\t</a> ";        
    156                         echo "\n\tRecht an ".$gmkg." <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='"; 
    157                                         echo "javascript:"; 
    158                                         echo "transtitle(\"auf Flurst&uuml;ck positioniert\"); "; 
    159                                         echo "parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); "; 
    160                                         echo "parent.parent.showHighlight(".$x.",".$y.");' "; 
    161                                 echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' "; 
    162                                 echo "onmouseout='parent.parent.hideHighlight()'>"; 
    163                         echo " Flur ".$flur." ".$fskenn."</a>"; 
    164                 echo "\n</div>"; 
     240                zeile_flurstueck ($fs_gml, $fskenn, $x, $y, $gmkg, $flur); 
    165241                $zfs2++; 
    166242        } 
     
    168244                echo "\n<p class='anz'>Kein Flurst&uuml;ck im berechtigten Bereich.</p>"; 
    169245        } elseif($zfs >= $linelimit) { 
    170                 echo "\n<p class='anz'>... und weitere</p>"; 
    171         // +++ BlÀttern einfÃŒhren? 
     246                echo "\n<p class='anz'>... und weitere</p>"; // BlÀttern einfÃŒhren? 
    172247        } elseif($zfs2 > 1) { // keine Meldung "nichts gefunden - Rechte an" wenn Treffer in Teil 1 
    173248                echo "\n<p class='anz'>".$zfs2." Rechte an Flurst.</p>"; 
Note: See TracChangeset for help on using the changeset viewer.