source: trunk/mapbender/http/nav/alkisnav_grd.php @ 315

Revision 306, 20.9 KB checked in by frank.jaeger, 10 years ago (diff)

ALKIS-Auskunft, neues Modul "Straße"

Line 
1<?php
2/* Version vom
3        2013-04-16      "import_request_variables" entfÀllt in PHP 5.4
4        2013-04-26      Ersetzen View "gemeinde_gemarkung" durch Tabelle "pp_gemarkung"
5                                        Code aus _eig nach_fkt ausgelegert, hier mit nutzen.
6                                        Dazu Var-Namen harmonisieren: $gblatt wird $blattgml
7                                        ZurÃŒck-Link, Titel der Transaktion anzeigen.
8        2013-04-29      Test mit IE
9        2013-05-07  Strukturierung des Programms, redundanten Code in Functions zusammen fassen
10        2013-05-14  Hervorhebung aktuelles Objekt. Title "Nachweis" auch auf Icon.
11        2013-12-12      Limit in EinBlatt von 200 weit hoch gesetzt (bis BlÀttern möglich wird)
12*/
13$cntget = extract($_GET);
14include("../../conf/alkisnav_conf.php"); // Konfigurations-Einstellungen
15include("alkisnav_fkt.php"); // Funktionen
16
17$con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password;
18$con = pg_connect ($con_string) or die ("Fehler bei der Verbindung zur Datenbank ".$dbname.$dbvers.$gkz);
19echo <<<END
20<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
21<html>
22<head>
23        <meta http-equiv="cache-control" content="no-cache">
24        <meta http-equiv="pragma" content="no-cache">
25        <meta http-equiv="expires" content="0">
26        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
27        <title>ALKIS-Suche Grundbuch</title>
28        <link rel="stylesheet" type="text/css" href="alkisnav.css">
29        <script type="text/javascript">
30                function imFenster(dieURL) {
31                        var link = encodeURI(dieURL);
32                        window.open(link,'','left=10,top=10,width=680,height=800,resizable=yes,menubar=no,toolbar=no,location=no,status=no,scrollbars=yes');
33                }
34                function transtitle(trans) {
35                        document.getElementById('transaktiontitle').innerHTML = trans;
36                }
37                function formular_belegung(suchMich) {
38                        parent.GrdGazetteerFrame.gbkennz.value=suchMich;
39                }
40        </script>
41</head>
42<body>
43<a href='javascript:history.back()'>
44        <img src="ico/zurueck.ico" width="16" height="16" alt="&lt;&lt;" title="zur&uuml;ck">
45</a>
46<dfn class='title' id='transaktiontitle'></dfn>
47
48END;
49
50function ListAG($liste_ag, $aktuell) {
51        // Amtsgerichte (Grundbuch) auflisten, dazu als Filter eine AG-Liste
52        global $debug;
53        $linelimit=40;
54        $sql ="SELECT a.stelle, a.bezeichnung AS ag FROM ax_dienststelle a ";
55        $sql.="WHERE a.stelle IN (".$liste_ag.") AND a.stellenart = 1000 "; // Amtsgerichte aus Liste
56        $sql.="ORDER BY a.bezeichnung LIMIT $1 ;";
57        $res = pg_prepare("", $sql);
58        $res = pg_execute("", array($linelimit));
59        if (!$res) {
60                echo "\n<p class='err'>Fehler bei Amtsgerichte</p>";
61                #if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
62                return 0;
63        }
64        $cnt = 0;
65        while($row = pg_fetch_array($res)) { // Loop AG
66                $anr=$row["stelle"];
67                $ag=$row["ag"];         
68                zeile_ag ($ag, $anr, $aktuell);
69                $cnt++;
70        }
71        // Foot
72        if($cnt == 0){
73                echo "\n<p class='anz'>Kein Amtsgericht aus Liste ".$$liste_ag.".</p>";
74        } elseif ($cnt >= $linelimit) {
75                echo "\n<p title='Bitte eindeutiger qualifizieren'>".$cnt." Amtsgerichte ... und weitere</p>";
76        } elseif ($cnt > 1) {
77                echo "\n<p class='anz'>".$cnt." Amtsgerichte</p>";
78        }
79        return 0;
80}
81
82function ListGBBez($agkey) {
83        // Grundbuch-Bezirke zu einem Amtsgericht auflisten.
84        // Auch wenn BlÀtter da sind, kann es eine Sackgasse sein.
85        // Manchmal haben die BlÀtter keine FlurstÃŒcke im Filter-Bereich
86        global $debug;
87        $linelimit=100; // Bezirke/AG
88
89        // Head
90        ListAG("'".$agkey."'", true); // hier nur fÃŒr 1
91
92        // Body
93        $sql ="SELECT g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g ";
94        $sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle ";
95        $sql.="WHERE a.stelle = $1 AND a.stellenart = 1000 ";
96        // Diese Subquery stellt sicher, dass nur Bezirke aufgelistet werden, die auch BlÀtter enthalten:
97        $sql.="AND NOT (SELECT gml_id FROM ax_buchungsblatt b WHERE b.land=g.land and b.bezirk=g.bezirk LIMIT 1) IS NULL ";
98        $sql.="ORDER BY g.bezeichnung LIMIT $2 ;";
99        $v = array($agkey, $linelimit);
100        $res = pg_prepare("", $sql);
101        $res = pg_execute("", $v);
102        if (!$res) {
103                echo "\n<p class='err'>Fehler bei Grundbuch-Bezirk</p>";
104                #if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
105                return 0;
106        }
107        $cnt = 0;
108        while($row = pg_fetch_array($res)) { // Loop BEZIRK
109                $gnam=$row["bezeichnung"];
110                $gnr=$row["bezirk"];
111                zeile_gbbez($gnam, $gnr, false);
112                $cnt++;
113        }
114        // Foot
115        if($cnt == 0){
116                echo "\n<p class='anz'>Kein Bezirk mit Bl&auml;ttern.</p>";
117        } elseif ($cnt >= $linelimit) {
118                echo "\n<p class='anz' title='Bitte Name des Bezirks suchen lassen'>".$cnt." Bezirke ... und weitere</p>";
119        } elseif($cnt > 1) {
120                echo "\n<p class='anz'>".$cnt." Bezirke</p>"; // im Limit       
121        }
122        return;
123}
124
125function ag_bez_head($gbbez, $bezaktuell) {
126        // Zu einem Grundbuchbezirks-SchlÃŒssel die Zeilen AG und Bezirk ausgeben
127        // Parameter = SchlÃŒssel des Bezirks
128        #global $debug;
129        $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezeichnung FROM ax_buchungsblattbezirk g ";
130        $sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle WHERE g.bezirk= $1 LIMIT 1;";
131        $v=array($gbbez);
132        $res=pg_prepare("", $sql);
133        $res=pg_execute("", $v);
134        if (!$res) {
135                echo "\n<p class='err'>Fehler bei Amtsgericht und Grundbuchbezirk.</p>";
136                #if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
137        }
138        $row = pg_fetch_array($res);
139        if ($row) {
140                $gnam=$row["bezeichnung"]; // GB-Bezirk Bezeichnung
141                $ag=$row["ag"]; // AG Bezeichnung
142                $anr=$row["stelle"]; // AG Key
143                zeile_ag($ag, $anr, false); // Amtsgericht
144                zeile_gbbez($gnam, $gbbez, $bezaktuell); // Bezirk
145        } else {
146                echo "\n<div class='gk' title='Grundbuchbezirk'>";
147                        echo "\n\t\t<p class='err'><img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Bez.'>";
148                                echo  " Bezirk '".$gbbez."' ist unbekannt.</p>";
149                echo "\n</div>";
150                return;
151        }
152        return;
153}
154
155function SuchGBBezName() {
156        // Grundbuch-Bezirk suchen nach Name(-nsanfang)
157        global $gkz, $gemeinde, $debug, $gbkennz;
158        $linelimit=80;
159        $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g ";
160        $sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle ";
161        $sql.="WHERE g.bezeichnung ILIKE $1 "; //       "AND a.stellenart=1000 " // Amtsgericht
162        $sql.="ORDER BY a.bezeichnung, g.bezeichnung LIMIT $2 ;";
163        if ( $gbkennz == "") {
164                $match = "%";
165        } else {       
166                if(preg_match("/\*/",$gbkennz)){
167                        $match = trim(preg_replace("/\*/i","%", strtoupper($gbkennz)));
168                } else {
169                        $match = trim($gbkennz)."%";
170                }       
171        }
172        $v = array($match, $linelimit);
173        $res = pg_prepare("", $sql);
174        $res = pg_execute("", $v);
175        if (!$res) {
176                echo "\n<p class='err'>Fehler bei Grundbuch-Bezirk</p>";
177                return 1;
178        }
179        $cnt=0;
180        $gwag="";
181        while($row = pg_fetch_array($res)) { // Loop BEZIRK
182                $anr=$row["stelle"]; // Gruppierung AG
183                if ($gwag != $anr) {
184                        $gwag = $anr;
185                        $ag=$row["ag"];
186                        zeile_ag($ag, $anr, false);
187                }
188                $gnam=$row["bezeichnung"];
189                $gnr=$row["bezirk"];
190                zeile_gbbez ($gnam, $gnr, false);
191                $cnt++;
192        }
193        // Foot
194        if($cnt == 0){
195                echo "\n<p class='anz'>Kein Grundbuchbezirk.</p>";
196        } elseif ($cnt >= $linelimit) {
197                echo "\n<p title='Bitte eindeutiger qualifizieren'>".$cnt." Bezirke ... und weitere</p>";
198        } elseif ($cnt == 1) {
199                return $gnr; // Wenn eindeutig, gleich weiter
200        } elseif ($cnt > 1) {
201                echo "\n<p class='anz'>".$cnt." Bezirke</p>"; // im Limit       
202        }
203        return;
204}
205 
206function EinBezirk($showParent) {
207        // Kennzeichen bestehend nur aus GB-Bezirk-SchlÃŒssel wurde eingegeben
208        global $gemeinde, $debug, $zgbbez, $auskpath;
209        $linelimit=300; // max. Blatt je Bezirk
210        // Dies Limit ist nicht ausreichend fÃŒr alle BlÀtter eines Bezirks, aber ...
211        // Wenn man die Blatt-Nr nicht kennt, kommt man hier sowieso nicht weiter.
212        // Es nutzt also nichts, hier tausende Nummern aufzulisten.
213        // +++ BlÀtter-Funktion einfÃŒhren analog Modul _eig
214
215        // Head
216        if ($showParent) {
217                ag_bez_head($zgbbez, true); // AG und BEZ ausgeben
218        }
219        // Body
220        $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b ";
221        $sql.="WHERE b.bezirk= $1 ORDER BY b.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;";
222        $v=array($zgbbez, $linelimit);
223        $res=pg_prepare("", $sql);
224        $res=pg_execute("", $v);
225        if (!$res) {
226                echo "\n<p class='err'>Fehler bei Bezirk.</p>";
227                #if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
228        }
229        $cntbl=0; // Counter Blatt/Bezirk
230        while($row = pg_fetch_array($res)) { // Loop BLATT     
231                $blatt=$row["blatt"];
232                $blattgml=$row["gml_id"];
233                zeile_blatt($zgbbez, $gnam, $blattgml, $blatt, false, "", false);
234                $cntbl++;
235        }
236        // Foot
237        if($cntbl == 0) {
238                echo "\n<p class='anz'>Kein Blatt im Bezirk.</p>";
239        } elseif($cntbl >= $linelimit) {
240                echo "\n<p class='anz'>".$cntbl." Bl&auml;tter ... und weitere</p>";
241                // +++ Hier oft ÃŒberschritten! BlÀtter-Funktion einfÃŒhren
242                echo "\n<p>Geben sie ein: '".$zgbbez."-999A'<br>wobei '999A' = gesuchtes GB-Blatt</p>";
243                // Vorbelegen des Eingabefeldes fÃŒr neue Suche
244                echo "<script type='text/javascript'>parent.GrdGazetteerFrame.gbkennz.value='".$zgbbez."-?';</script>";
245        } elseif ($cntbl > 1) {
246                echo "\n<p class='anz'>".$cntbl." Bl&auml;tter</p>"; // im Limit       
247        }
248        return;
249}
250
251function gml_blatt() {
252        // Kennzeichen "Bezirk + Blatt" eingegeben. Dazu die gml_id des Blattes ermitteln.
253        global $debug, $zgbbez, $zblatt, $zblattn, $zblattz;
254        $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b ";
255        $sql.="WHERE b.bezirk= $1 AND b.buchungsblattnummermitbuchstabenerweiterung ";
256
257        if ($zblattz == "") { // Ohne Buchstabenerweiterung: Formate '123','000123 ','0000123'
258                $sql.="IN ('".$zblattn."','".str_pad($zblattn, 6, "0", STR_PAD_LEFT)." ','".str_pad($zblattn, 7, "0", STR_PAD_LEFT)."');";
259        } else { // Mit Buchstabenerweiterung: '000123A'
260                $sql.="='".str_pad($zblattn, 6, "0", STR_PAD_LEFT).$zblattz."';";
261        }
262        $v=array($zgbbez);
263        $res=pg_prepare("", $sql);
264        $res=pg_execute("", $v);
265        if (!$res) {
266                echo "\n<p class='err'>Fehler bei Blatt (Kennzeichen).</p>";
267                return;
268        }
269        $cntbl=0; // Counter Blatt
270        while($row = pg_fetch_array($res)) {   
271                $bl_gml=$row["gml_id"];
272                $zblatt=$row["blatt"]; // das tatsaechliche Format (mit/ohne fuehrende 0)
273                $cntbl++;
274        }
275        if($cntbl == 0) {
276                echo "\n<p class='err'>Grundbuchblatt '".$zgbbez."-".$zblatt."' nicht gefunden.</p>";
277        } elseif ($cntbl == 1) {
278                return $bl_gml;
279        }
280        return;
281}
282
283function EinBlatt($showParent) {
284        // Kennzeichen Bezirk + Blatt wurde eingegeben oder verlinkt
285        global $debug, $gemeinde, $zgbbez, $zblatt, $blattgml, $gbbeznam;
286        // Head
287        if ($showParent) {
288                ag_bez_head($zgbbez, false); // AG + BEZ
289                zeile_blatt ($zgbbez, $gbbeznam, $blattgml, $zblatt, false, "", true);
290        }
291        // Body
292        // 2013-12-12 Limit von ursprÃŒnglich 200 weit hoch gesetzt
293        GB_Buchung_FS(1000, $zgbbez."-".$zblatt); // Blatt -> Buchung -> Flurstueck (Limitiert)
294        // ++ besser Limit wieder runter und "BlÀttern"-Funktion einfÃŒhren
295        return;
296}
297
298function gml_buchungsstelle() {
299        // Kennzeichen "Bezirk + Blatt + BVNR" wurde eingegeben.
300        // Dazu die gml_id der Buchungsstelle ermitteln, um "function EinGrundstueck" benutzen zu können.
301        global $debug, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr;
302        // Blatt ->  B u c h u n g s s t e l l e
303        $sql ="SELECT s.gml_id FROM ax_buchungsstelle s ";
304        $sql.="JOIN alkis_beziehungen v ON s.gml_id=v.beziehung_von ";
305        $sql.="JOIN ax_buchungsblatt b ON b.gml_id=v.beziehung_zu ";
306        $sql.="WHERE v.beziehungsart='istBestandteilVon' ";
307        $sql.="AND b.bezirk= $1 AND b.buchungsblattnummermitbuchstabenerweiterung ";
308        if ($zblattz == "") { // Ohne Buchstabenerweiterung
309                //Formate '123','000123 ','0000123'
310                $sql.="IN ('".$zblattn."','".str_pad($zblattn, 6, "0", STR_PAD_LEFT)." ','".str_pad($zblattn, 7, "0", STR_PAD_LEFT)."')";
311        } else { // Mit Buchstabenerweiterung: '000123A'
312                $sql.="='".str_pad($zblattn, 6, "0", STR_PAD_LEFT).$zblattz."'";
313        }
314        $sql.=" AND s.laufendenummer= $2 ;";
315
316        $v=array($zgbbez, $zbvnr);
317        $res=pg_prepare("", $sql);
318        $res=pg_execute("", $v);
319        if (!$res) {
320                echo "\n<p class='err'>Fehler bei Buchungsstelle (Kennzeichen).</p>";
321                return;
322        }
323        $zbs=0;
324        while($row = pg_fetch_array($res)) {   
325                $bs_gml=$row["gml_id"];
326                $zbs++;
327        }
328        if($zbs == 0) {
329                echo "\n<p class='err'>Buchung ".$zgbbez."-".$zblattn.$zblattz."-".$zbvnr." nicht gefunden.</p>";
330                return;
331        } else {
332                return $bs_gml;
333        }
334}
335
336function EinGrundstueck($showParent) {
337        // Die gml_id der Buchungsstelle (BVNR, GrundstÃŒck) ist bekannt = $buchunggml
338        // Die gebuchten FlurstÃŒcke und dienende/herrschenden Buchungen werden ausgegeben.
339        global $debug, $gemeinde, $epsg, $buchunggml, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr, $gfilter;
340        // NoLimit?
341
342        // Head
343        if ($showParent) { // wenn Kennzeichen bekannt ist, dann auch Blatt ausgeben
344                if ($zgbbez.$zblatt != "") {
345                        ag_bez_head($zgbbez, false); // AG + BEZ
346                        zeile_blatt ($zgbbez, $gnam, "", $zblatt, false, "", false);
347                        // $gnam leer lassen Knoten "Bezirk" steht drÃŒber
348                } else {
349                        echo "<p class='err'>Kennzeichen Bezirk und Blatt nicht gesetzt</p>";
350                } // ++ suchen!
351                zeile_buchung($buchunggml, $zbvnr, $zgbbez."-".$zblattn.$zblattz, false, true);
352        }
353// SQL-Bausteine
354// dienend $1 gml_id von
355//         Buchungsstelle  <vs/an<  Buchungsstelle sh
356//         (dienend)                (herrschend)
357// direkt  $1 gml_id von
358//         Buchungsstelle                              <vs/istGebucht< FlurstÃŒck > Gemarkung
359// Recht   $1 gml_id von
360//         Buchungsstelle  >vs/an>  Buchungsstelle sd  <vf/istGebucht< FlurstÃŒck > Gemarkung
361//         (herrschend)             (dienend)      sd  >vd/istBestandteilVon> bd > gd
362
363        // Body
364        // Anfang (Select-Liste) gleich
365        $sqlanf ="SELECT g.gemeinde, g.gemarkungsname, f.gml_id, f.flurnummer, f.zaehler, f.nenner, ";
366        if($epsg == "25832") { // Transform nicht notwendig
367                $sqlanf.="st_x(st_Centroid(f.wkb_geometry)) AS x, ";
368                $sqlanf.="st_y(st_Centroid(f.wkb_geometry)) AS y ";
369        } else { 
370                $sqlanf.="st_x(st_transform(st_Centroid(f.wkb_geometry),".$epsg.")) AS x, ";
371                $sqlanf.="st_y(st_transform(st_Centroid(f.wkb_geometry),".$epsg.")) AS y ";                     
372        }
373        // Filter gleich
374        switch ($gfilter) { // Filter Gemeinde
375                case 1: // Einzelwert
376                        $sqlfitler="AND g.gemeinde=".$gemeinde." "; break;
377                case 2: // Liste
378                        $sqlfilter="AND g.gemeinde in (".$gemeinde.") "; break;
379        }
380
381        // Abfrage: Direkte Buchungen (FlurstÃŒcke)
382        $sql =$sqlanf."FROM alkis_beziehungen vs JOIN ax_flurstueck f ON vs.beziehung_von = f.gml_id ";
383        $sql.="JOIN pp_gemarkung  g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung ";
384        $sql.="WHERE vs.beziehung_zu= $1 AND vs.beziehungsart='istGebucht' ";
385        $sql.=$sqlfilter."ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
386
387        $v=array($buchunggml);
388        $res=pg_prepare("", $sql);
389        $res=pg_execute("", $v);
390        if (!$res) {
391                echo "\n<p class='err'>Fehler bei Buchungsstelle (gml, direkt).</p>";
392                if ($debug >= 3) {
393                        echo "\n<p class='err'>'".$sql."'<br>\nmit $1 ='".$buchunggml."'</p>";
394                }
395        }
396        $zfs1=0;
397        while($row = pg_fetch_array($res)) {   
398                $fs_gml=$row["gml_id"];
399                $gemei=$row["gemeinde"];
400                $gmkg=$row["gemarkungsname"];
401                $flur=$row["flurnummer"];
402                $fskenn=$row["zaehler"];
403                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // BruchNr
404                zeile_flurstueck ($fs_gml, $fskenn, $row["x"], $row["y"], $gmkg, $flur, false);
405                $zfs1++;
406        }
407        // Zwischen-Foot
408        if($zfs1 == 0) {
409                echo "\n<p class='anz'>Kein Flurst&uuml;ck direkt</p>";
410        } elseif($zfs1 > 1) {
411                echo "\n<p class='anz'>".$zfs1." Flurst&uuml;cke</p>";
412        }
413        if($zfs1 > 0) { // wenn's was zu trennen gibt
414                echo "<hr>"; // Trennen
415        }
416
417        // Abfrage: Rechte an (dienende Buchungen und ihre FlurstÃŒcke)
418        $sql =$sqlanf.", sd.gml_id AS diengml, sd.laufendenummer AS dienlfd, ";         // Stelle dienend
419        $sql.="bd.gml_id AS dienbltgml, bd.buchungsblattnummermitbuchstabenerweiterung AS dienblatt, "; // Blatt dienend
420        $sql.="gd.stelle, gd.gml_id AS dienbezgml, gd.bezirk, gd.bezeichnung AS diengbbez ";    // AG und Bezirk dazu
421        $sql.="FROM alkis_beziehungen vs ";
422        $sql.="JOIN ax_buchungsstelle sd ON vs.beziehung_zu=sd.gml_id ";
423        $sql.="JOIN alkis_beziehungen vf ON vf.beziehung_zu=sd.gml_id "; // sd=Stelle dienend
424        $sql.="JOIN ax_flurstueck f ON vf.beziehung_von = f.gml_id ";
425        $sql.="JOIN pp_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung ";
426
427        // Blatt und Bezirk (dienend)
428        $sql.="JOIN alkis_beziehungen vd ON vd.beziehung_von=sd.gml_id ";
429        $sql.="JOIN ax_buchungsblatt bd ON vd.beziehung_zu=bd.gml_id "; // Blatt dienend
430        $sql.="JOIN ax_buchungsblattbezirk gd ON bd.land=gd.land AND bd.bezirk=gd.bezirk "; // GB-Bez. dienend
431        $sql.="WHERE vs.beziehung_von = $1 AND vs.beziehungsart='an' AND vf.beziehungsart='istGebucht' AND vd.beziehungsart='istBestandteilVon' ";
432        $sql.=$sqlfilter."ORDER BY gd.bezeichnung, bd.buchungsblattnummermitbuchstabenerweiterung, cast(sd.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
433
434        $v=array($buchunggml);
435        $res=pg_prepare("", $sql);
436        $res=pg_execute("", $v);
437        if (!$res) {
438                echo "\n<p class='err'>Fehler bei Buchungsstelle (gml, Recht an).</p>";
439                if ($debug >= 3) {
440                        echo "\n<p class='err'>'".$sql."'<br>\nmit $1 ='".$buchunggml."'</p>";
441                }
442        }
443        $zfs2=0;
444        $gwblatt="";
445        while($row = pg_fetch_array($res)) {
446                $dienstelle=$row["stelle"];             // Stelle (AG) des dienenden GrundstÃŒcks
447                $dienbezgml=$row["dienbezgml"]; // Bezirks des dien. GS: gml, Nr. und Bezeichnung
448                $diengbbez=$row["diengbbez"];   // Bezeichnung
449                $dienbezirk=$row["bezirk"];     // Key
450                $dienbltgml=$row["dienbltgml"]; // dienendes Blatt, gml und Nr
451                $dienblatt=$row["dienblatt"];
452                $diengml=$row["diengml"];               // gml_id des dienenden GrundstÃŒcks
453                $dienlfd=$row["dienlfd"];               // BVNR (laufendNr) des dien. GS
454                if ($gwblatt != $dienblatt) { // Gruppierung Blatt - dienend
455                        $gwblatt = $dienblatt; // Steuerg GW Blatt
456                        zeile_blatt($dienbezirk, $diengbbez, $dienbltgml, $dienblatt, true, "");
457                        $gwbvnr="";
458                }
459                if ($gwbvnr != $dienlfd) { // Gruppierung Buchung (BVNR) - dienend
460                        $gwbvnr = $dienlfd; // Steuerg GW BVNR
461                        zeile_buchung($diengml, $dienlfd, $dienbezirk."-".$dienblatt, true);
462                } // ++ Buchungsart? Welches Recht?
463                $fs_gml=$row["gml_id"];
464                $gemei=$row["gemeinde"];
465                $gmkg=$row["gemarkungsname"];
466                $flur=$row["flurnummer"];
467                $fskenn=$row["zaehler"];
468                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // BruchNr
469                zeile_flurstueck ($fs_gml, $fskenn, $row["x"],$row["y"], $gmkg, $flur, false);
470                $zfs2++;
471        }
472
473// Teil 3
474// ++  Wenn nur 1 GrundstÃŒck untersucht wird, dann dazu auch die
475//     berechtigten (herrschenden) GrundbÃŒcher anzeigen und verlinken (ohne FS))
476
477        // Foot
478        if($zfs2 == 0 AND $zfs1 == 0) {
479                echo "\n<p class='anz'>Kein Recht an Flst.</p>";
480        } elseif($zfs2 > 1) {
481                echo "\n<p class='anz'>".$zfs2." Rechte an Flurst.</p>";
482        }
483        return;
484}
485
486// ===========
487// Start hier!
488// ===========
489if(isset($epsg)) {
490        $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]);   
491} else {
492        $epsg=$gui_epsg; // aus Conf
493}
494
495if ($gemeinde == "") {
496        $gfilter = 0; // ungefiltert
497} elseif(strpos($gemeinde, ",") === false) {
498        $gfilter = 1; // Einzelwert
499} else {
500        $gfilter = 2; // Liste
501}
502
503// Auch wenn redundant: Das Kennzeichen fÃŒr Anzeige und weitere Links zerlegen
504$kennztyp=ZerlegungGBKennz($gbkennz);
505
506// Wurde eine gml_id (internes Kennzeichen) aus einem Self-Link verwendet?
507// Dann hat das Prioritaet, also *nicht* nach $gbkennz suchen.
508if ($buchunggml != "") { // gml der Buchungsstelle
509        $trans="Flurst&uuml;cke zur Buchungsstelle"; // Link
510        EinGrundstueck(true);
511
512} elseif($blattgml != "") { // gml des GB-Blattes
513        $trans="GB-Blatt mit Buchungen und Flst.";
514        EinBlatt(true);
515
516} elseif($ag != "") { // Key des Amtsgerichtes
517        $trans="GB-Bezirke zum Amtsgericht";
518        ListGBBez($ag);
519
520} else { // Eingabe im Formular
521
522        switch ($kennztyp) {
523                case 0: // keine Eingabe
524                        $trans="Liste der Amtsgerichte";
525                        ListAG($ag_liste, false);
526                        break;
527                case 1: // Eingabe Bezirk-Name (-Teil) -> gefilterte Liste der Bezirke
528                        $trans="Bezirke suchen \"".$gbkennz."\"";
529                        $beznr=SuchGBBezName();
530                        if ($beznr > 0) {  // eindeutig
531                                $zgbbez=$beznr;
532                                $trans="Bezirk gefunden, Bl&auml;tter dazu";
533                                EinBezirk(false); // gleich weiter
534                        };
535                        break;
536                case 2: // Eingabe Bezirk-Nummer -> Liste der BlÀtter
537                        $trans="Bl&auml;tter im GB-Bezirk";
538                        EinBezirk(true);
539                        break;
540                case 3: // Eingabe Blatt -> Liste der Buchungen
541                        $trans="Buchungen auf GB-Blatt";
542                        $blattgml=gml_blatt(); // gml_id zum Blatt suchen
543                        if ($blattgml != "") { // gefunden             
544                                if (EinBlatt(true) == 1) { // darauf genau eine Buchung
545                                        $trans="GB-Blatt und 1 Buchung";
546                                        $buchunggml=gml_buchungsstelle(); // gml_id zum Kennzeichen
547                                        EinGrundstueck(false);
548                                }
549                        }
550                        break;
551                case 4: // Eingabe Buchung (GrundstÃŒck) -> Liste der FlurstÃŒcke
552                        $buchunggml=gml_buchungsstelle(); // gml_id zum Kennzeichen
553                        if ($buchunggml != "") {                // .. wurde geliefert
554                                $trans="Flurst&uuml;cke zur Buchungsstelle"; // Eingabe
555                                EinGrundstueck(true);   // mit Backlink
556                        } else{
557                                $trans="Suche Buchungsstelle";
558                        }
559                        break;
560                case 9: // Fehler
561                        $trans="fehlerhafte Eingabe";
562                        echo "\n<p class='err'>Bitte ein g&uuml;ltiges Grundbuchkennzeichen eingegeben, Format 'gggg-999999A-llll</p>";
563                        break;
564        }
565}
566// Titel im Kopf anzeigen
567echo "
568<script type='text/javascript'>
569        transtitle('".$trans."');
570</script>";
571 ?>
572
573</body>
574</html>
Note: See TracBrowser for help on using the repository browser.