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

Revision 283, 10.1 KB checked in by frank.jaeger, 11 years ago (diff)

Mapbender-Navigation nochmals ergänzt: aktuell gewählte Ebene wird farblich hinterlegt. Im GB-Teil kann Buchung verlinkt werden.

Line 
1<?php
2/* Version vom
3        2013-05-07  Strukturierung des Programms, redundanten Code in Functions zusammen fassen
4        2013-05-08  Hervorhebung aktuelles Objekt, in Arbeit ...
5*/
6
7// function Typ "zeile_**"  = Ausgabe eines Knotens
8// - Icon,  ggf. mit Link zur Buchauskunft
9// - Zeile, ggf. mit Link zur weiteren Auflösung untergeordneter Knoten
10// Hierin die Encodierung fÃŒr url und HTML.
11
12function zeile_ag ($ag, $anr, $aktuell) {       // Zeile  A m t s g e r i c h t
13        global $gkz, $gemeinde, $epsg, $auskpath;
14        if ($ag == "") {
15                $agd=$anr; // Ersatz: Nummer statt Name. Besser: Name immer fÃŒllen
16        } else {
17                $agd=htmlentities($ag, ENT_QUOTES, "UTF-8");
18        }
19        if ($aktuell) {$cls=" aktuell";}
20        echo "\n<div class='ga".$cls."' title='Amtsgericht'>";
21                echo "\n\t\t<img class='nwlink' src='ico/Gericht.ico' width='16' height='16' alt='Amtsgericht'> ";
22                echo "AG <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>";           
23                echo $agd."</a> (".$anr.")";
24        echo "\n</div>";
25        return;
26}
27
28function zeile_gbbez ($gnam, $zgbbez, $aktuell) {       // Zeile Grundbuch - B e z i r k
29        global $gkz, $gemeinde, $epsg, $auskpath;
30        $gnamd=htmlentities($gnam, ENT_QUOTES, "UTF-8");
31        if ($aktuell) {$cls=" aktuell";}       
32        echo "\n<div class='gk".$cls."' title='GB-Bezirk'>";
33                echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Bez.'> ";
34                echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$zgbbez."'>";               
35                echo "Bezirk ".$gnamd."</a> (".suchfeld($zgbbez).")";                   
36        echo "\n</div>";
37
38        return;
39}
40
41function zeile_blatt ($bezirk, $beznam, $blattgml, $blatt, $dienend, $person, $aktuell) {
42        global $gkz, $gemeinde, $epsg, $auskpath;
43        // Zeile Grundbuch - B l a t t
44        $blattd=ltrim($blatt, "0"); // Display-Version ohne fÃŒhrende Nullen
45        if ( $dienend) {$dientxt="dienendes ";}
46        $blattlnk=urlencode($blatt); // trailing Blank
47        if ($beznam != "") {$nam = $beznam." ";}
48        if ($aktuell) {$cls=" aktuell";}       
49        echo "\n<div class='gb".$cls."' title='".$dientxt."GB-Blatt'>";
50        if ($blattgml == "") { // Link zum Nachweis nur wenn GML bekannt
51                echo "\n\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='Blatt'>";
52        } else {
53                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$blattgml."\")'>";
54                        echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='Blatt'>";
55                echo "\n\t</a> ";
56        }
57        echo $nam." <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg;
58        echo "&amp;blattgml=".$blattgml."&amp;gbkennz=".$bezirk."-".$blattlnk;
59
60        echo "&amp;gbbeznam=".urlencode($beznam);
61
62        if ($person != "") {echo "&amp;person=".$person;} // nur fÃŒr EigentÃŒmer-Suche
63        echo "'>Blatt&nbsp;".$blattd."</a>\n</div>";
64        return;
65}
66
67function zeile_buchung($buchunggml, $bvnr, $blattkennz, $dienend, $aktuell) {
68        // Zeile  B u c h u n g s s t e l l e  -  GrundstÃŒck ausgeben
69        global $gkz, $gemeinde, $epsg, $auskpath;
70        if ($bvnr == 0) {
71                $bvnra = "-";
72        } else {
73                $bvnra = str_pad($bvnr, 4, "0", STR_PAD_LEFT); // auf 4 Stellen
74        }
75        if ($diened) {
76                $ti="dienendes&nbsp;";
77                $re="Recht an ";
78        } else {
79                $ti="";
80                $re="";
81        }
82        if ($aktuell) {$cls=" aktuell";}       
83        echo "\n<div class='gs".$cls."' title='".$ti."Grundst&uuml;ck'>";
84        echo "\n\t<img class='nwlink' src='ico/Grundstueck.ico' width='16' height='16' alt='GS'> ".$re;
85        if ($blattkennz == "") { // ohne Link
86                echo "Buchung ".$bvnra;
87        } else {
88                $gbkennlnk=urlencode($blattkennz."-".$bvnr); // Trailing Blanks!
89                echo "<a href='".$_SERVER['SCRIPT_NAME']. "?gkz=". $gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;buchunggml=".$buchunggml;
90                echo "&amp;gbkennz=".$gbkennlnk."'>Buchung ".$bvnra."</a>";
91        }
92        echo "\n</div>";
93        return;
94}
95
96function zeile_flurstueck ($fs_gml, $fskenn, $x, $y, $gmkg, $flur, $aktuell) {
97        // Zeile mit Icon (Link zum Buch-Nachweis) und Text (Link zum Positionieren)
98        global $gkz, $gemeinde, $epsg, $auskpath, $scalefs;
99        if ($aktuell) {$cls=" aktuell";}
100        echo "\n<div class='fs".$cls."'>";
101        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>";
102                echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
103        echo "\n\t</a>\n\t";                   
104
105        echo "&nbsp;<a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
106        echo "javascript:";
107                echo "transtitle(\"auf Flurst&uuml;ck positioniert\"); ";
108                echo "parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); ";
109                echo "parent.parent.showHighlight(".$x.",".$y.");' ";
110        echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
111        echo "onmouseout='parent.parent.hideHighlight()'>";
112
113        if ($gmkg == "" ) {
114                echo "Flst. "; // Im FS-Teil: Gem+Flur als Knoten darÃŒber ($gmkg und $flur leer)
115        } else {
116                echo $gmkg." "; // Im GB-und Nam-Teil in der Zeile angezeigt
117        }
118        if ($flur != "" ) {echo $flur."-";}
119        echo $fskenn."</a>\n</div>";
120        return;
121}
122
123function zeile_person ($persongml, $nachname, $vorname) {
124        global $gkz, $gemeinde, $epsg, $auskpath;
125        // Zeile  P e r s o n   (oder Firma)
126        $nnam=htmlentities($nachname, ENT_QUOTES, "UTF-8");
127        $namlnk=urlencode($nachname);
128        $vnam=htmlentities($vorname, ENT_QUOTES, "UTF-8");
129        // Link zur Auskunft Person ++ Icon differenzieren? Firma/Person
130
131// 2013-05-08 DIV statt br
132echo "<div class='pe'>
133        <a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisnamstruk.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$gml."\")'>
134                <img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'>
135        </a>           
136        <a title='Person' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$persongml."&amp;name=".$namlnk."'>".$nnam.", ".$vnam."</a>
137</div>";
138return;
139}
140
141function GB_Buchung_FS ($linelimit, $blattgbkenn) {
142// Zu einem Grundbuch-Blatt (identifiziert ÃŒber seine gml_id) suchen der
143// Buchungen (Gruppenwechsel) und FlurstÃŒcke (Links)
144        global $gemeinde, $blattgml, $epsg, $gfilter, $debug;
145
146        // SQL-Bausteine vorbereiten
147        // SQL vorne gleich
148        $sql1 ="SELECT s1.laufendenummer AS lfd, s1.gml_id AS bsgml, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ";
149        if($epsg == "25832") { // Transform nicht notwendig
150                $sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, ";
151                $sql1.="st_y(st_centroid(f.wkb_geometry)) AS y, ";
152        } else { 
153                $sql1.="st_x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
154                $sql1.="st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y, ";                     
155        }
156        $sql1.="g.gemarkung, g.gemarkungsname ";
157        $sql1.="FROM alkis_beziehungen vbg ";
158        $sql1.="JOIN ax_buchungsstelle s1 ON vbg.beziehung_von = s1.gml_id ";
159
160        // Zwischen-JOIN verschieden
161        $sqlz1 ="JOIN alkis_beziehungen vfb ON s1.gml_id = vfb.beziehung_zu ";
162       
163        $sqlz2 ="JOIN alkis_beziehungen vss ON vss.beziehung_von = s1.gml_id ";
164        $sqlz2.="JOIN ax_buchungsstelle s2 ON vss.beziehung_zu = s2.gml_id ";
165        $sqlz2.="JOIN alkis_beziehungen vfb ON s2.gml_id = vfb.beziehung_zu ";
166
167        // SQL hinten gleich
168        $sql2 ="JOIN ax_flurstueck f ON vfb.beziehung_von = f.gml_id ";
169        $sql2.="JOIN pp_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung ";
170        $sql2.="WHERE vbg.beziehung_zu= $1 AND vbg.beziehungsart='istBestandteilVon' AND vfb.beziehungsart='istGebucht' ";
171        switch ($gfilter) {
172                case 1: // Einzelwert
173                        $sql2.="AND g.gemeinde=".$gemeinde." "; break;
174                case 2: // Liste
175                        $sql2.="AND g.gemeinde in (".$gemeinde.") "; break;
176        }
177        $sql2.="ORDER BY cast(s1.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;";
178
179        // Abfrage:  d i r e k t e  B u c h u n g e n
180        // Blatt <vbg/istBestandteilVon<  Buchungsstelle <vfb/istGebucht< FlurstÃŒck
181        #$sql=$sql1.$sqlz1.$sql2; // Direkte Buchungen
182
183        $v=array($blattgml, $linelimit);
184        $res=pg_prepare("", $sql1.$sqlz1.$sql2);
185        $res=pg_execute("", $v);
186        if (!$res) {
187                echo "\n<p class='err'>Fehler bei Buchung und Flurst&uuml;ck.</p>";
188                #if ($debug >= 3) {echo "\n<p class='err'>".$sql1.$sqlz1.$sql2."</p>";}
189                return;
190        }
191        $zfs1=0;
192        $gwbv="";
193        while($row = pg_fetch_array($res)) {   
194                $bvnr=$row["lfd"];
195                $bsgml=$row["bsgml"]; // Buchungsstelle gml_id
196                if ($gwbv != $bvnr) { // Gruppierung Buchungs-Stelle (BVNR)
197                        $gwbv = $bvnr;
198                        zeile_buchung($bsgml, $bvnr, $blattgbkenn, false, false);
199                }
200                $fs_gml=$row["gml_id"];
201                $gmkg=$row["gemarkungsname"];
202                $flur=$row["flurnummer"];
203                $fskenn=$row["zaehler"];
204                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // BruchNr
205                $x=$row["x"];
206                $y=$row["y"];
207                zeile_flurstueck ($fs_gml, $fskenn, $x, $y, $gmkg, $flur, false);
208                $zfs1++;
209        }
210        #if($zfs1 == 0) { // "nichts gefunden" erst melden, wenn auch Teil 2 (Rechte an) nichts findet
211        #} else
212        if($zfs1 >= $linelimit) {
213                echo "\n<p class='anz'>... und weitere</p>"; // +++  BlÀttern einfÃŒhren?
214        } elseif($zfs1 > 1) { // ab 2
215                echo "\n<p class='anz'>".$zfs1." Flurst&uuml;cke zum Grundbuch</p>";
216        }
217        if($zfs1 > 0) {echo "<hr>";} // Trennen
218
219        // 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
220        $v=array($blattgml, $linelimit);
221        $res=pg_prepare("", $sql1.$sqlz2.$sql2);
222        $res=pg_execute("", $v);
223        if (!$res) {
224                echo "\n<p class='err'>Fehler bei Recht an Buchung.</p>";
225                #if ($debug >= 3) {echo "\n<p class='dbg'>".$sql1.$sqlz2.$sql2."</p>";}
226                return;
227        }
228        $zfs2=0;
229        $gwbv="";
230        while($row = pg_fetch_array($res)) {   
231                $bvnr=$row["lfd"];
232                $bsgml=$row["bsgml"]; // Buchungsstelle gml_id
233                if ($gwbv != $bvnr) { // Gruppierung Buchung (BVNR) - dienend
234                        $gwbv = $bvnr;
235                        zeile_buchung($bsgml, $bvnr, $blattgbkenn, true, false);
236                }
237                $fs_gml=$row["gml_id"];
238                $gmkg=$row["gemarkungsname"];
239                $flur=$row["flurnummer"];
240                $fskenn=$row["zaehler"];
241                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
242                zeile_flurstueck ($fs_gml, $fskenn, $row["x"], $row["y"], $gmkg, $flur, false);
243                $zfs2++;
244        }
245        // Foot
246        if($zfs1 + $zfs2 == 0) {
247                echo "\n<p class='anz'>Kein Flurst&uuml;ck im berechtigten Bereich.</p>";
248        } elseif($zfs >= $linelimit) {
249                echo "\n<p class='anz'>... und weitere</p>"; // BlÀttern einfÃŒhren?
250        } elseif($zfs2 > 1) { // keine Meldung "nichts gefunden - Rechte an" wenn Treffer in Teil 1
251                echo "\n<p class='anz'>".$zfs2." Rechte an Flurst.</p>";
252        }
253        return;
254}
255
256?>
Note: See TracBrowser for help on using the repository browser.