source: trunk/mapbender/http/nav/alkisnav_fkt.php @ 282

Revision 282, 9.9 KB checked in by frank.jaeger, 11 years ago (diff)

Mapbender-ALKIS-Navigation korrigiert und verbessert.

RevLine 
[278]1<?php
2/* Version vom
[282]3        2013-05-07  Strukturierung des Programms, redundanten Code in Functions zusammen fassen
[278]4*/
5
[282]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
[278]133function GB_Buchung_FS ($linelimit) {
[282]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;
[278]137
138        // SQL-Bausteine vorbereiten
[282]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, ";
[278]141        if($epsg == "25832") { // Transform nicht notwendig
142                $sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, ";
143                $sql1.="st_y(st_centroid(f.wkb_geometry)) AS y, ";
144        } else { 
145                $sql1.="st_x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
146                $sql1.="st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y, ";                     
147        }
148        $sql1.="g.gemarkung, g.gemarkungsname ";
[282]149        $sql1.="FROM alkis_beziehungen vbg ";
[278]150        $sql1.="JOIN ax_buchungsstelle s1 ON vbg.beziehung_von = s1.gml_id ";
151
[282]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 ";
[278]158
[282]159        // ++   JOIN alkis_beziehungen - ax_buchungsblatt
160        //              fÃŒr Link auf Buchung mit komplettem Grundbuchennzeichen
[278]161
[282]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 ";
[278]165        $sql2.="WHERE vbg.beziehung_zu= $1 AND vbg.beziehungsart='istBestandteilVon' AND vfb.beziehungsart='istGebucht' ";
166        switch ($gfilter) {
167                case 1: // Einzelwert
168                        $sql2.="AND g.gemeinde=".$gemeinde." "; break;
169                case 2: // Liste
170                        $sql2.="AND g.gemeinde in (".$gemeinde.") "; break;
171        }
[282]172        $sql2.="ORDER BY cast(s1.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;";
[278]173
[282]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
[278]177
178        $v=array($blattgml, $linelimit);
[282]179        $res=pg_prepare("", $sql1.$sqlz1.$sql2);
[278]180        $res=pg_execute("", $v);
181        if (!$res) {
182                echo "\n<p class='err'>Fehler bei Buchung und Flurst&uuml;ck.</p>";
[282]183                #if ($debug >= 3) {echo "\n<p class='err'>".$sql1.$sqlz1.$sql2."</p>";}
[278]184                return;
185        }
186        $zfs1=0;
187        $gwbv="";
188        while($row = pg_fetch_array($res)) {   
189                $bvnr=$row["lfd"];
[282]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
[278]194                }
195                $fs_gml=$row["gml_id"];
196                $gmkg=$row["gemarkungsname"];
197                $flur=$row["flurnummer"];
198                $fskenn=$row["zaehler"];
199                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // BruchNr
200                $x=$row["x"];
201                $y=$row["y"];
[282]202                zeile_flurstueck ($fs_gml, $fskenn, $x, $y, $gmkg, $flur);
[278]203                $zfs1++;
204        }
[282]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?
[278]209        } elseif($zfs1 > 1) { // ab 2
210                echo "\n<p class='anz'>".$zfs1." Flurst&uuml;cke zum Grundbuch</p>";
211        }
[282]212        if($zfs1 > 0) {echo "<hr>";} // Trennen
[278]213
[282]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
[278]215        $v=array($blattgml, $linelimit);
[282]216        $res=pg_prepare("", $sql1.$sqlz2.$sql2);
[278]217        $res=pg_execute("", $v);
218        if (!$res) {
219                echo "\n<p class='err'>Fehler bei Recht an Buchung.</p>";
[282]220                #if ($debug >= 3) {echo "\n<p class='dbg'>".$sql1.$sqlz2.$sql2."</p>";}
[278]221                return;
222        }
223        $zfs2=0;
[282]224        #$gwblatt="";
[278]225        $gwbv="";
226        while($row = pg_fetch_array($res)) {   
227                $bvnr=$row["lfd"];
[282]228                $bsgml=$row["bsgml"]; // Buchungsstelle gml_id
229                if ($gwbv != $bvnr) { // Gruppierung Buchung (BVNR) - dienend
230                        $gwbv = $bvnr;
231                        zeile_buchung ($bsgml, $bvnr, "", true);
[278]232                }
233                $fs_gml=$row["gml_id"];
234                $gmkg=$row["gemarkungsname"];
235                $flur=$row["flurnummer"];
236                $fskenn=$row["zaehler"];
237                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
238                $x=$row["x"];
239                $y=$row["y"];
[282]240                zeile_flurstueck ($fs_gml, $fskenn, $x, $y, $gmkg, $flur);
[278]241                $zfs2++;
242        }
243        if($zfs1 + $zfs2 == 0) {
244                echo "\n<p class='anz'>Kein Flurst&uuml;ck im berechtigten Bereich.</p>";
245        } elseif($zfs >= $linelimit) {
[282]246                echo "\n<p class='anz'>... und weitere</p>"; // BlÀttern einfÃŒhren?
[278]247        } elseif($zfs2 > 1) { // keine Meldung "nichts gefunden - Rechte an" wenn Treffer in Teil 1
248                echo "\n<p class='anz'>".$zfs2." Rechte an Flurst.</p>";
249        }
250        return;
251}
252
253?>
Note: See TracBrowser for help on using the repository browser.