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

Revision 86, 23.7 KB checked in by frank.jaeger, 11 years ago (diff)

ALKIS-Navigation fuer Mapbender erweitert: EPSG aus Mapframe entnehmen, Liste der Gemeinden oder Amtsgerichte bei leerer Eingabe

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