source: trunk/data/mapbender/http/nav/alkisnav_grd.php @ 115

Revision 115, 24.2 KB checked in by frank.jaeger, 12 years ago (diff)

ALKIS-Navigation: Nach Positionieren der Karte durch Mausklick das Highlighting (roter Ball) noch beibehalten bis der Mauszeiger abgezogen wird.

Line 
1<?php
2/* Version vom
3        14.01.2011
4        12.04.2011 epsg in Link, transform nur wenn notwendig,
5        neue Suchstrategie bei Leer-Eingabe (Liste Amtsgerichte), Icon GB-Bez.
6        25.07.2011 PostNAS 0.5/0.6 Versionen unterscheiden
7        24.10.2011 Nach Pos-Klick Highlight erneuern statt hideHighlight
8*/
9import_request_variables("PG");
10include("../../conf/alkisnav_conf.php");
11$con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password;
12$con = pg_connect ($con_string) or die ("Fehler bei der Verbindung zur Datenbank ".$dbname.$dbvers.$gkz);
13?>
14
15<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
16<html>
17<head>
18        <meta http-equiv="cache-control" content="no-cache">
19        <meta http-equiv="pragma" content="no-cache">
20        <meta http-equiv="expires" content="0">
21        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
22        <title>ALKIS-Suche Grundbuch</title>
23        <link rel="stylesheet" type="text/css" href="alkisnav.css">
24</head>
25<body>
26
27<?php
28function is_ne_zahl($wert) {
29        // Prueft, ob ein Wert ausschließlich aus den Zahlen 0 bis 9 besteht
30        if (trim($wert, "0..9") == "") {return true;} else {return false;}
31}
32
33function ZerlegungGBKennz($gbkennz) {
34        // Das eingegebene Grundbuch-Kennzeichen auseinander nehmen (gggg-999999z-BVNR)
35        // Return: 9=Fehler, 0=Listen alle Bezirke 1=Such Bezirk-Name
36        //         2=Such Bezirk-Nummer $zgbbez, 3=Such Blatt $zblatt, 4=Such BVNR $zbvnr
37        global $debug, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr;            $arr=explode("-", $gbkennz, 3);
38        $zgbbez=trim($arr[0]);
39        $zblatt=trim($arr[1]);
40        $zbvnr=trim($arr[2]);
41        if ($zgbbez == "") { // keine Eingabe
42                return 0; // Amtsgerichte oder Bezirke listen
43        } elseif ( ! is_ne_zahl($zgbbez)) { // Alphabetische Eingabe
44                return 1; // Such Bezirk-NAME
45        } elseif ($zblatt == "") {
46                return 2; // Such Bezirk-NUMMER
47        } else  { // Format von Blatt pruefen
48                $len=strlen($zblatt);
49                if ($len > 0 AND $len < 8) {           
50                        if (trim($zblatt, "0..9") == "") { // Normalfall: nur Zahlen
51                                $zblattn= ltrim($zblatt, "0");
52                                $zblattz="";
53                        } else { // Sonderfall: Zusatz-Buchstabe am Ende
54                                $zblattn=substr($zblatt,0,$len-1);
55                                $zblattz=strtoupper(substr($zblatt,$len-1,1));
56                                if ((trim($zblattn, "0..9") == "") and (trim($zblattz, "A..Z") == "")) {
57                                        $zblatt=$zblattn.$zblattz;
58                                        $zblattn= ltrim($zblattn, "0"); // ohne fuehrende Nullen
59                                } else {
60                                        echo "<p class='err>Format 'Blatt': bis zu 6 Zahlen und ggf. ein Buchstabe</p>";       
61                                        return 9;
62                                }
63                        }
64                        if ($zbvnr == "") {
65                                return 3; // Such BLATT
66                        } elseif (is_ne_zahl($zbvnr)) {         
67                                // $zbvnr=ltrim($zbvnr,"0"); // DB-Format ist integer
68                                // Vorsicht, Wert "0" ist moeglich und gueltig
69                                return 4; // Such Grundstueck
70                        } else {
71                                echo "<p class='err>Die Buchungsstelle (BVNR) '".$zbvnr."' ist nicht numerisch</p>";
72                                return 9;
73                        }
74                } else {
75                        echo "<p class='err>Das Grundbuch-Blatt '".$zblatt."' ist ung&uuml;ltig.</p>";
76                        return 9;
77                }
78        }
79}
80
81function ListAG($liste_ag) {
82        // Amtsgerichte (Grundbuch) auflisten, dazu als Filter eine AG-Liste aus conf
83        global $con, $gkz, $gemeinde, $epsg, $debug, $gbkennz;
84        $linelimit=40;
85        $sql ="SELECT a.stelle, a.bezeichnung AS ag FROM ax_dienststelle a ";
86        $sql.="WHERE a.stelle IN (".$liste_ag.") AND a.stellenart = 1000 "; // Amtsgerichte aus Liste
87        $sql.="ORDER BY a.bezeichnung LIMIT $1 ;";
88        $res = pg_prepare("", $sql);
89        $res = pg_execute("", array($linelimit));
90        if (!$res) {
91                echo "\n<p class='err'>Fehler bei Amtsgerichte</p>";
92                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
93                return 0;
94        }
95        $cnt = 0;
96        while($row = pg_fetch_array($res)) { // Loop AG
97                $anr=$row["stelle"];
98                $ag=htmlentities($row["ag"], ENT_QUOTES, "UTF-8");             
99                echo "\n<div class='ga' title='Amtsgricht'>";
100                        echo "\n\t\t<img class='nwlink' src='ico/Gericht.ico' width='16' height='16' alt='Amtsgericht'> ";
101                        echo "AG <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>";               
102                                echo $ag."</a> (".$anr.")";
103                echo "\n</div>";
104                $cnt++;
105        }
106        if($cnt == 0){ // falsch configuriert!
107                echo "\n<p class='err'>Kein Amtsgericht aus Liste ".$$liste_ag.".</p>";
108        } elseif ($cnt >= $linelimit) {
109                echo "\n<p title='Bitte eindeutiger qualifizieren'>... und weitere</p>";
110        }
111        return 0;
112}
113
114function ListGBBez($liste_ag, $mit_ag) {
115        // Grundbuch-Bezirke auflisten.
116        global $con, $gkz, $gemeinde, $epsg, $debug, $gbkennz;
117        $linelimit=70;
118        $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g ";
119        $sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle ";
120        $sql.="WHERE a.stelle IN (".$liste_ag.") AND a.stellenart = 1000 "; // Amtsgericht aus Liste
121        $sql.="ORDER BY g.bezeichnung LIMIT $1 ;";
122        $res = pg_prepare("", $sql);
123        $res = pg_execute("", array($linelimit));
124        if (!$res) {
125                echo "\n<p class='err'>Fehler bei Grundbuch-Bezirk</p>";
126                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
127                return 0;
128        }
129        $cnt = 0;
130        while($row = pg_fetch_array($res)) { // Loop  B E Z I R K
131                $gnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
132                $gnr=$row["bezirk"];
133                $ag=htmlentities($row["ag"], ENT_QUOTES, "UTF-8");
134                $anr=$row["stelle"];
135                echo "\n<div class='gk' title='GB-Bezirk'>";
136                        echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Gemkg'> ";
137                        echo "Bezirk <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$gnr."'>";             
138                                echo $gnam."</a> (".$gnr.")";
139                                if ($mit_ag) {
140                                        echo " AG <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>".$ag."</a>";
141                                }
142                echo "\n</div>";
143                $cnt++;
144        }
145        if($cnt == 0){ // falsch configuriert
146                echo "\n<p class='err'>Kein Grundbuchbezirk zu den Amtsgerichten ".$liste_ag.".</p>";
147        } elseif ($cnt >= $linelimit) {
148                echo "\n<p title='Bitte eindeutiger qualifizieren'>... und weitere</p>";
149        }
150        return 0;
151}
152
153function SuchGBBezName() {
154        // Grundbuch-Bezirk suchen nach Name(-nsanfang)
155        global $con, $gkz, $gemeinde, $debug, $gbkennz;
156        $linelimit=50;
157        $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g ";
158        $sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle ";
159        $sql.="WHERE g.bezeichnung ILIKE $1 "; //       "AND a.stellenart=1000 " // Amtsgericht
160        $sql.="ORDER BY g.bezeichnung LIMIT $2 ;";
161        if ( $gbkennz == "") {
162                $match = "%";
163        } else {       
164                if(preg_match("/\*/",$gbkennz)){
165                        $match = trim(preg_replace("/\*/i","%", strtoupper($gbkennz)));
166                } else {
167                        $match = trim($gbkennz)."%";
168                }       
169        }
170        $v = array($match, $linelimit);
171        $res = pg_prepare("", $sql);
172        $res = pg_execute("", $v);
173        if (!$res) {
174                echo "\n<p class='err'>Fehler bei Grundbuch-Bezirk</p>";
175                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
176                return 0;
177        }
178        $cnt = 0;
179        // Loop  B E Z I R K
180        while($row = pg_fetch_array($res)) {
181                $gnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
182                $gnr=$row["bezirk"];
183                $ag=htmlentities($row["ag"], ENT_QUOTES, "UTF-8");             
184                $anr=$row["stelle"];
185                echo "\n<div class='gk' title='GB-Bezirk'>";
186                        echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Gemkg'> ";
187                        echo "Bezirk <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$gnr."'>";           
188                                echo $gnam."</a> (".$gnr.")";
189                                echo " AG <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>".$ag."</a>";
190                echo "\n</div>";
191                $cnt++;
192        }
193        if($cnt == 0){
194                echo "\n<p class='err'>Kein Grundbuchbezirk.</p>";
195        } elseif ($cnt >= $linelimit) {
196                echo "\n<p title='Bitte eindeutiger qualifizieren'>... und weitere</p>";
197        } elseif ($cnt == 1) {
198                return $gnr; // Wenn eindeutig, gleich weiter
199        }
200        return 0;
201}
202 
203function EinBezirk($showParent) {
204        // Kennzeichen bestehend nur aus GB-Bezirk-SchlÃŒssel wurde eingegeben
205        global $con, $gkz, $gemeinde, $epsg, $debug, $zgbbez, $auskpath;
206        $linelimit=200; // max. Blatt je Bezirk
207        // Dies linelimit ist nicht ausreichend fuer alle Blaetter eines Bezirks, aber ...
208        // Wenn man die Blatt-Nr nicht kennt, kommt man hier sowieso nicht weiter.
209        // Es nutzt also nichts, hier Tausende Nummern aufzulisten.
210        if ($showParent) {
211                $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezeichnung FROM ax_buchungsblattbezirk g ";
212                $sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle ";
213                $sql.="WHERE g.bezirk= $1 ;";
214                $v=array($zgbbez);
215                $res=pg_prepare("", $sql);
216                $res=pg_execute("", $v);
217                if (!$res) {
218                        echo "\n<p class='err'>Fehler bei Brundbuchbezirk.</p>";
219                        if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
220                }
221                $zgmk=0;
222                while($row = pg_fetch_array($res)) {   
223                        $gnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
224                        $gnr=$row["bezirk"];
225                        $ag=htmlentities($row["ag"], ENT_QUOTES, "UTF-8");     
226                        $anr=$row["stelle"];
227                        $zgmk++;
228                }
229                if ($zgmk == 0) {
230                        echo "\n<div class='gk' title='Grundbuchbezirk'>";
231                                echo "\n\t\t<p class='err'><img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Bez.'>";
232                                        echo  " Bezirk ".$zgbbez." ist unbekannt.</p>";
233                        echo "\n</div>";
234                        return;
235                }
236
237                // AG-Knoten davor setzen
238                echo "\n<div class='ga' title='Amtsgricht'>";
239                        echo "\n\t\t<img class='nwlink' src='ico/Gericht.ico' width='16' height='16' alt='Amtsgericht'> ";
240                        echo "AG <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>";               
241                                echo $ag."</a> (".$anr.")";
242                echo "\n</div>";
243                echo "\n<div class='gk' title='GB-Bezirk'>";
244                        echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Bez.'> ";
245                        echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$zgbbez."'>";               
246                        echo $gnam."</a> (".$zgbbez.")";
247                        // alternativ AG-Link hinter dem Bezirk
248                //      echo " des AG <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>".$ag."</a>";                       
249                echo "\n</div>";
250        }
251        $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b ";
252        $sql.="WHERE b.bezirk= $1 ORDER BY b.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;";
253        $v=array($zgbbez, $linelimit);
254        $res=pg_prepare("", $sql);
255        $res=pg_execute("", $v);
256        if (!$res) {
257                echo "\n<p class='err'>Fehler bei Bezirk.</p>";
258                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
259        }
260        $cntbl=0; // Counter Blatt/Bezirk
261        // Loop  B L A T T     
262        while($row = pg_fetch_array($res)) {   
263                $blatt=$row["blatt"];
264                $gml=$row["gml_id"];
265                echo "\n<div class='gb' title='GB-Blatt'>";
266                        echo "\n\t<a title='Nachweis' target='_blank' href='".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gml."'>";
267                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='Blatt'>";
268                        echo "\n\t</a> ";
269                        echo "Blatt <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gblatt=".$gml."&amp;gbkennz=".$zgbbez."-".$blatt."'>&nbsp;".$blatt."&nbsp;</a>";
270                echo "\n</div>";
271                $cntbl++;
272        }
273        if($cntbl == 0) {
274                echo "\n<p class='err'>Kein Blatt im Bezirk.</p>";
275        } else {
276                if($cntbl >= $linelimit) {
277                        echo "\n<p>... und weitere</p>";
278                        echo "\n<p>Geben sie ein: '".$zgbbez."-999999A'<br>wobei '999999A' = gesuchtes GB-Blatt</p>";
279                }
280        }
281        return;
282}
283
284function gml_blatt() {
285        // Kennzeichen "Bezirk + Blatt" eingegeben. Dazu die gml_id des Blattes ermitteln.
286        global $con, $gkz, $debug, $zgbbez, $zblatt, $zblattn, $zblattz;
287        $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b ";
288        $sql.="WHERE b.bezirk= $1 AND b.buchungsblattnummermitbuchstabenerweiterung IN ( $2 , $3 );";
289        // Unterschiedliche Formate in ax_buchungsblatt.buchungsblattnummermitbuchstabenerweiterung
290        // Musterdaten RLP: ohne fuehrende Nullen, Lippe NRW: mit!
291        $zblatt0v=str_pad($zblattn, 6, "0", STR_PAD_LEFT).$zblattz;     // mit 0 vorne
292        $v=array($zgbbez,$zblattn.$zblattz,$zblatt0v);
293        $res=pg_prepare("", $sql);
294        $res=pg_execute("", $v);
295        if (!$res) {
296                echo "\n<p class='err'>Fehler bei Blatt (Kennzeichen).</p>";
297                return;
298        }
299        $cntbl=0; // Counter Blatt
300        while($row = pg_fetch_array($res)) {   
301                $bl_gml=$row["gml_id"];
302                $zblatt=$row["blatt"]; // das tatsaechliche Format (mit/ohne fuehrende 0)
303                $cntbl++;
304        }
305        if($cntbl == 0) {
306                echo "\n<p class='err'>Grundbuchblatt '".$zgbbez."-".$zblatt."' nicht gefunden.</p>";
307        } elseif($cntbl == 1) {
308                return $bl_gml;
309        }
310        return;
311}
312
313function EinBlatt($showParent) {
314        // Kennzeichen Bezirk + Blatt wurde eingegeben
315        global $con, $gkz, $debug, $gemeinde, $epsg, $auskpath, $zgbbez, $zblatt, $zblattn, $zblattz, $gblatt, $zbvnr;
316
317        if ($showParent) {     
318                echo "\n<div class='gk' title='GB-Bezirk'>";
319                        echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Bez.'> ";
320                        echo "Bezirk <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$zgbbez."'>";               
321                        echo $zgbbez."</a>";
322                        // Key ist bekannt. Sollte man sich die Muehe machen, Namen und Amtsgericht zu ermitteln?
323                echo "\n</div>";
324                echo "\n<div class='gb' title='GB-Blatt'>";
325                        echo "\n\t<a title='Nachweis' target='_blank' href='".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gblatt."'>";
326                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='Blatt'>";
327                        echo "\n\t</a> ";
328                        echo "Blatt <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gblatt=".$gblatt."&amp;gbkennz=".$zgbbez."-".$zblatt."'>&nbsp;".$zblatt."&nbsp;</a>";
329                echo "\n</div>";
330        }
331        // Blatt ->  B u c h u n g s s t e l l e
332        $sql ="SELECT s.gml_id, s.laufendenummer AS lfd FROM ax_buchungsstelle s ";
333        $sql.="JOIN alkis_beziehungen v ON s.gml_id=v.beziehung_von ";
334        $sql.="JOIN ax_buchungsblatt b ON v.beziehung_zu=b.gml_id ";
335        $sql.="WHERE v.beziehungsart='istBestandteilVon' AND b.gml_id= $1 ORDER BY s.laufendenummer;";
336        // +++ Buchungen ohne FLST weglassen?
337        // +++ Counter FLST ausgeben, Buchungen mit 0 weglassen
338        $v=array($gblatt);
339        $res=pg_prepare("", $sql);
340        $res=pg_execute("", $v);
341        if (!$res) {
342                echo "\n<p class='err'>Fehler bei Blatt.</p>";
343                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
344        }
345        $cntbu=0; // Counter Buchung/Blatt
346        while($row = pg_fetch_array($res)) {   
347                $bs_gml=$row["gml_id"];         
348                $lfd=$row["lfd"];
349                echo "\n<div class='gs'>";
350                        echo "\n\t\t<img class='nwlink' title='Grundst&uuml;ck' src='ico/Grundstueck.ico' width='16' height='16' alt='GS'> ";
351                        echo "Buchung <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbuchung=".$bs_gml."&amp;gbkennz=".$zgbbez."-".$zblatt."-".$lfd."'>&nbsp;".$lfd."&nbsp;</a>";
352                echo "\n</div>";
353                $cntbu++;
354        }
355        if($cntbu == 0) {
356                echo "\n<p class='err'>Keine Buchung gefunden.</p>";
357        } elseif($cntbu == 1) {
358                //echo "\n<p>genau EINE Buchung gefunden".$lfd."</p>";
359                $zbvnr=$lfd; // mit dieser BVNR gleich weiter machen
360                // Blatt zerteilen (benoetigt in gml_buchungsstelle)
361                if (trim($zblatt, "0..9") == "") { // Normalfall: nur Zahlen
362                        $zblattn= ltrim($zblatt, "0");
363                        $zblattz="";
364                } else { // Sonderfall: Zusatz-Buchstabe am Ende
365                        $zblattn=ltrim(substr($zblatt,0,$len-1), "0"); // ohne fuehrende Nullen
366                        $zblattz=strtoupper(substr($zblatt,$len-1,1));
367                }
368        }
369        return $cntbu;
370}
371
372function gml_buchungsstelle() {
373        // Kennzeichen "Bezirk + Blatt + BVNR" eingegeben. Dazu die gml_id der Buchungsstelle ermitteln.
374        global $con, $gkz, $debug, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr;
375        // Blatt ->  B u c h u n g s s t e l l e
376        $sql ="SELECT s.gml_id FROM ax_buchungsstelle s ";
377        $sql.="JOIN alkis_beziehungen v ON s.gml_id=v.beziehung_von ";
378        $sql.="JOIN ax_buchungsblatt b ON b.gml_id=v.beziehung_zu ";
379        $sql.="WHERE v.beziehungsart='istBestandteilVon' ";
380        $sql.="AND b.bezirk= $1 AND b.buchungsblattnummermitbuchstabenerweiterung IN ( $2, $3 ) AND s.laufendenummer= $4 ;";
381        $zblatt0v=str_pad($zblattn, 6, "0", STR_PAD_LEFT).$zblattz;     // mit 0 vorne
382        $v=array($zgbbez, $zblattn.$zblattz, $zblatt0v, $zbvnr);
383        $res=pg_prepare("", $sql);
384        $res=pg_execute("", $v);
385        if (!$res) {
386                echo "\n<p class='err'>Fehler bei Buchungsstelle (Kennzeichen).</p>";
387                return;
388        }
389        $zbs=0;
390        while($row = pg_fetch_array($res)) {   
391                $bs_gml=$row["gml_id"];
392                $zbs++;
393        }
394        if($zbs == 0) {
395                echo "\n<p class='err'>Buchung ".$zgbbez."-".$zblattn.$zblattz."-".$zbvnr." nicht gefunden.</p>";
396                return;
397        } elseif($zbs > 1) { // nur TEST
398                echo "\n<p class='err'>Buchungsstelle mehrfach gefunden.</p>";
399                return;
400        } else {
401                return $bs_gml;
402        }
403}
404
405function EinGrundstueck($showParent) {
406        // Die gml_id der Buchungsstelle ist bekannt.
407        global $con, $gkz, $debug, $gemeinde, $epsg, $scalefs, $epsg, $auskpath, $gbuchung, $zgbbez, $zblatt, $zbvnr, $gfilter;
408        if ($showParent) { // wenn Kennzeichen bekannt ist, dann auch Blatt ausgeben
409                if (isset($zgbbez) and isset($zblatt)) {
410                        echo "\n<div class='gk' title='GB-Bezirk'>";
411                                echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Bez.'> ";
412                                echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$zgbbez."'>";               
413                                echo "Bezirk ".$zgbbez."</a>";
414                                // Key ist bekannt. Sollte man sich die Muehe machen, Namen und Amtsgericht zu ermitteln?
415                                // ++++ Namen als &bez= ÃŒbermitteln?
416                        echo "\n</div>";                       
417                        echo "\n<div class='gb' title='GB-Blatt'>";
418                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt.ico' width='16' height='16' alt='Blatt'> ";
419                                echo "Blatt <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$zgbbez."-".$zblatt."'>&nbsp;".$zblatt."&nbsp;</a>";
420                        echo "\n</div>";
421                } else {
422                        echo "<p class='err'>Kennzeichen Bezirk und Blatt nicht gesetzt</p>";
423                }
424                echo "\n<div class='gs'>";
425                        echo "\n\t\t<img class='nwlink' title='Grundst&uuml;ck' src='ico/Grundstueck.ico' width='16' height='16' alt='GS'> ";
426                        echo "Buchung <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbuchung=".$gbuchung."&amp;gbkennz=".$zgbbez."-".$zblatt."-".$zbvnr."'>&nbsp;".$zbvnr."&nbsp;</a>";
427                echo "\n</div>";
428        }
429        // +++ Ermitteln anderer Buchungsstellen mit Rechten an dieser
430        // +++ Ermitteln anderer Buchungsstellen wo diese Rechte hat
431        // +++ Filter "Gemeinde" berÃŒcksichtigt!! Wenn gesetzt.
432
433        // Buchungsstelle -> Flurstueck
434        $sql ="SELECT t.gemeinde, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, ";
435        if($epsg == "25832") { // Transform nicht notwendig
436                $sql.="x(st_Centroid(f.wkb_geometry)) AS x, ";
437                $sql.="y(st_Centroid(f.wkb_geometry)) AS y ";
438        } else { 
439                $sql.="x(st_transform(st_Centroid(f.wkb_geometry),".$epsg.")) AS x, ";
440                $sql.="y(st_transform(st_Centroid(f.wkb_geometry),".$epsg.")) AS y ";                   
441        }
442        $sql.="FROM ax_gemarkung g ";
443        $sql.="JOIN ax_flurstueck f ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
444        $sql.="JOIN alkis_beziehungen v ON f.gml_id=v.beziehung_von ";
445        $sql.="LEFT JOIN gemeinde_gemarkung t ON g.gemarkungsnummer=t.gemarkung ";
446        $sql.="WHERE v.beziehungsart='istGebucht' AND v.beziehung_zu= $1 "; // id buchungsstelle
447        $sql.="ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
448        $v=array($gbuchung);
449        $res=pg_prepare("", $sql);
450        $res=pg_execute("", $v);
451        if (!$res) {
452                echo "\n<p class='err'>Fehler bei Buchungsstelle (gml).</p>";
453                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
454        }
455        $zfs=0;
456        while($row = pg_fetch_array($res)) {   
457                $fs_gml=$row["gml_id"];
458                $gemei=$row["gemeinde"];
459                $gmkg=$row["bezeichnung"];
460                $flur=$row["flurnummer"];
461                $fskenn=$row["zaehler"];
462                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
463                $x=$row["x"];
464                $y=$row["y"];
465                if($gemeinde > 0 and $gemeinde != $gemei and $gfilter == 1) { // ex-territorial
466                // +++ Wie Abgleich mit Filter=Gemeinde-Liste? Als Array aufbereiten?
467                        echo "\n<div class='fs' title='Kein Zugriff! Liegt au&szlig;erhalb des Gebietes.'>";
468                                echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Leer.ico' width='16' height='16' alt='FS'> (".$gmkg." ".$flur."-".$fskenn." )";
469                        echo "\n</div>";                       
470                } else {
471                        echo "\n<div class='fs'>";
472                                echo "\n\t<a title='Nachweis' target='_blank' href='".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."'>";
473                                        echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
474                                echo "\n\t</a> ";
475                                echo "\n\t".$gmkg." <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
476                                                echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); ";                                                 echo "parent.parent.showHighlight(".$x.",".$y.")' ";
477                                        echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
478                                        echo "onmouseout='parent.parent.hideHighlight()'>&nbsp;";
479                                echo $flur."-".$fskenn."&nbsp;</a>";
480                        echo "\n</div>";
481                }
482                $zfs++;
483        }
484        if($zfs == 0) {echo "\n<p class='err'>Kein Flurst&uuml;ck.</p>";}
485        return;
486}
487
488// ===========
489// Start hier!
490// ===========
491if(isset($epsg)) {
492        if ($debug >= 2) {echo "<p>aktueller EPSG='".$epsg."'</p>";} // aus MB
493        $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]);   
494} else {
495        if ($debug >= 1) {echo "<p class='err'>kein EPSG gesetzt</p>";}
496        $epsg=$gui_epsg; // aus Conf
497}
498if ($debug >= 2) {
499        if(isset($gemeinde)) {echo "<p>Filter Gemeinde = ".$gemeinde."</p>";
500        } else {echo "<p>Kein Filter Gemeinde</p>";}
501}
502if ($gemeinde == "") {
503        $gfilter = 0; // ungefiltert
504} elseif(strpos($gemeinde, ",") === false) {
505        $gfilter = 1; // Einzelwert
506} else {
507        $gfilter = 2; // Liste
508}
509
510// Auch wenn redundant: Das Kennzeichen fÃŒr Anzeige und weitere Links zerlegen
511$kennztyp=ZerlegungGBKennz($gbkennz);
512if ($debug >= 2) {echo "<p>GB-Kennzeichen Typ=".$kennztyp."</p>";}
513
514// Wurde eine gml_id (internes Kennzeichen) aus einem Self-Link verwendet?
515// Dann hat das Prioritaet, nicht nach $gbkennz suchen.
516if (isset($gbuchung)) { // gml der Buchungsstelle
517        if ($debug >= 2) {echo "<p>Link Buchung(gml)=".$gbuchung."</p>";}
518        EinGrundstueck(true);
519} elseif(isset($gblatt)) { // gml des GB-Blattes
520        if ($debug >= 2) {echo "<p>Link Blatt(gml)=".$gblatt."</p>";}
521        if (EinBlatt(true) == 1) { // darauf genau eine Buchung
522                $gbuchung=gml_buchungsstelle(); // gml_id zum Kennzeichen
523                EinGrundstueck(false);
524        }
525} elseif(isset($ag)) { // Key 'stelle' des Amtsgerichtes
526        if ($debug >= 2) {echo "<p>Link Amtsgericht=".$ag."</p>";}
527        ListAG( "'".$ag."'" ); // noch mal Kopfzeile
528        ListGBBez("'".$ag."'", false);
529} else { // Kein Self-Link
530        // (manuelle) Eingabe im Formular interpretieren.
531        switch ($kennztyp) { // +++ Wie kann Filter "Gemeinde" berÃŒcksichtigt werden?
532                case 0: // keine Eingabe, 2 Alternativen
533                        // +++ Alternativen-Auswahl konfigurieren?
534                //      ListGBBez($ag_liste, true); // gefilterte Liste der Bezirke
535                        ListAG($ag_liste); // gefilterte Liste der Amtsgerichte
536                        break;
537                case 1: // Eingabe Bezirk-Name (-Teil) -> gefilterte Liste der Bezirke
538                        if ($debug >= 2) {echo "<p>Eingabe Bez. ".$zgbbez."</p>";}
539                        $beznr=SuchGBBezName();
540                        if ($beznr > 0) {  // eindeutig
541                                $zgbbez=$beznr;
542                                EinBezirk(false); // gleich weiter
543                        };     
544                        break;
545                case 2: // Eingabe Bezirk-Nummer -> Liste der BlÀtter
546                        if ($debug >= 2) {echo "<p>Eingabe Bez. ".$zgbbez."</p>";}     
547                        EinBezirk(true);
548                        break;
549                case 3: // Eingabe Blatt -> Liste der Buchungen
550                        if ($debug >= 2) {echo "<p>Eingabe Bez. ".$zgbbez." Blatt ".$zblatt."</p>";}
551                        $gblatt=gml_blatt(); // gml_id zum Blatt suchen
552                        if ($gblatt != "") { // gefunden               
553                                if (EinBlatt(true) == 1) { // darauf genau eine Buchung
554                                        $gbuchung=gml_buchungsstelle(); // gml_id zum Kennzeichen
555                                        EinGrundstueck(false);
556                                }
557                        }
558                        break;
559                case 4: // Eingabe Buchung (Grundstueck) -> Liste der Flurstuecke
560                        if ($debug >= 2) {echo "<p>Eingabe Bez. ".$zgbbez." Blatt ".$zblatt." BVNR ".$zbvnr."</p>";}
561                        $gbuchung=gml_buchungsstelle(); // gml_id zum Kennzeichen
562                        if ($gbuchung != "") { // .. wurde geliefert
563                                EinGrundstueck(true);
564                        }
565                        break;
566                case 9: // Fehler
567                        echo "<p class='err'>Bitte ein Grundbuchkennzeichen eingegeben, Format 'gggg-999999A-llll</p>";
568                        break;
569        }
570}
571 ?>
572</body>
573</html>
Note: See TracBrowser for help on using the repository browser.