source: trunk/mapbender/http/nav/alkisnav_eig.php @ 276

Revision 276, 15.0 KB checked in by frank.jaeger, 8 years ago (diff)

Views um Thema "Bodenschätzung" erweitert, Mapbender-Nav korrigiert, sichten.sql wurde geteilt

Line 
1<?php
2/* Version vom
3        24.10.2011      Nach Pos-Klick Highlight erneuern statt hideHighlight
4        17.11.2011      Nachweis-Links ÃŒber javascript im neuen Hochformat-Fenster
5        02.12.2011      Suche nach Vorname Nachname oder Nachname
6        09.12.2011      Filter "Gemeinde" fÃŒr Ebene FlurstÃŒcke.
7                                        Filter "Gemeinde" fÃŒr Personen ÃŒber neue Hilfstabelle "gemeinde_person".
8                                        Format css Person (Rahmen).
9        2013-04-16 "import_request_variables" entfÀllt in PHP 5.4
10        ToDo: Auf der Stufe 2 "getGBbyPerson" noch Filtern nach Gemeinde
11*/
12$cntget = extract($_GET);
13include("../../conf/alkisnav_conf.php");
14$con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password;
15$con = pg_connect ($con_string) or die ("<p class='err'>Fehler bei der Verbindung zur Datenbank</p>".$dbname.$dbvers.$gkz);
16?>
17
18<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
19<html>
20<head>
21        <meta http-equiv="cache-control" content="no-cache">
22        <meta http-equiv="pragma" content="no-cache">
23        <meta http-equiv="expires" content="0">
24        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
25        <title>ALKIS-Suche Eigent&uuml;mer</title>
26        <link rel="stylesheet" type="text/css" href="alkisnav.css">
27        <script type="text/javascript">
28                function imFenster(dieURL) {
29                        var link = encodeURI(dieURL);
30                        window.open(link,'','left=10,top=10,width=620,height=800,resizable=yes,menubar=no,toolbar=no,location=no,status=no,scrollbars=yes');
31                }
32        </script>
33</head>
34<body>
35
36<?php
37
38function getEigByName() {
39// 1 =============================
40// Eigentuemer nach Name(-nsanfang)
41// ===============================
42        global $gkz, $gemeinde, $epsg, $con, $name, $person, $gb, $gfilter, $persfilter, $auskpath;
43        $linelimit=120;
44        $arr = explode(",", $name);
45        $name0 = trim($arr[0]);
46        $name1 = trim($arr[1]);
47        if(preg_match("/\*/",$name0)){
48                $match = trim(preg_replace("/\*/i","%", strtoupper($name0)));
49        } else {
50                $match = trim($name0)."%";
51        }       
52        if(preg_match("/\*/",$name1)){
53                $match1 = trim(preg_replace("/\*/i","%", strtoupper($name1)));
54        } else {
55                $match1 = trim($name1)."%";
56        }               
57       
58        $sql ="SELECT p.nachnameoderfirma, p.vorname, p.gml_id FROM ax_person p ";
59
60        if ($persfilter and ($gfilter > 0)) {
61                $sql.="JOIN gemeinde_person g ON p.gml_id = g.person WHERE ";
62                switch ($gfilter) {
63                        case 1: // Einzelwert
64                                $sql.="g.gemeinde=".$gemeinde." AND "; break;
65                        case 2: // Liste
66                                $sql.="g.gemeinde in (".$gemeinde.") AND "; break;
67                }
68        } else {
69                $sql.="WHERE ";
70        }
71        if($match1 != '%'){
72                $sql.="nachnameoderfirma ILIKE $1 AND p.vorname ILIKE $2 ";             
73                $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $3 ;";
74                $v=array($match, $match1, $linelimit);
75        }else{
76                $sql.="nachnameoderfirma ILIKE $1 ";           
77                $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $2 ;";
78                $v=array($match, $linelimit);
79        }
80        $res=pg_prepare("", $sql);
81        $res=pg_execute("", $v);
82        if (!$res) {
83                echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>";
84                return;
85        }
86        $cnt = 0;
87        while($row = pg_fetch_array($res)) {
88                $nnam=htmlentities($row["nachnameoderfirma"], ENT_QUOTES, "UTF-8");
89                $vnam=htmlentities($row["vorname"], ENT_QUOTES, "UTF-8");
90                $gml=$row["gml_id"];
91                // Link zur Auskunft Person  +++ Icon differenzieren? Firma/Person
92                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisnamstruk.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$gml."\")'>";
93                        echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'>";
94                echo "\n\t</a> ";               
95                echo "\n<a title='Person' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$gml."&amp;name=".$nnam."'>".$nnam.", ".$vnam."</a>\n<br>";
96                $cnt++;
97        }
98        if($cnt == 0){
99                echo "\n<p class='err'>Keine Person.</p>";
100        } elseif($cnt >= $linelimit) {
101                echo "\n<p title='Bitte den Namen eindeutiger qualifizieren'>... und weitere</p>";
102        } elseif($cnt == 1){ // Eindeutig!
103                $person = $gml;
104        }
105        return;
106}
107
108function getGBbyPerson() {
109// 2 =================================
110// GrundbÌcher zur gewÀhlten Person
111// ===================================
112        global $gkz, $gemeinde, $epsg, $con, $name, $person, $gb, $auskpath;
113        $linelimit=120;
114        if(isset($name)) { // Familiensuche
115                echo "\n<div class='back' title='Andere Personen mit diesem Nachnamen'>";
116                        echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer_2.ico' width='16' height='16' alt='FAM'> ";
117                        echo "\n<a class='back' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;name=".$name."'>\"".$name."\"</a>";
118                echo "\n</div>\n<br>"; 
119        }
120        $sql="SELECT p.nachnameoderfirma, p.vorname, p.geburtsdatum, p.namensbestandteil, ";
121        $sql.="a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer ";
122        $sql.="FROM ax_person p ";
123        $sql.="JOIN alkis_beziehungen b ON p.gml_id=b.beziehung_von ";
124        $sql.="JOIN ax_anschrift a ON a.gml_id=b.beziehung_zu ";
125        $sql.="WHERE p.gml_id= $1 AND b.beziehungsart='hat';"; 
126        $v=array($person);
127        $res=pg_prepare("", $sql);
128        $res=pg_execute("", $v);
129        if (!$res) {echo "\n<p class='err'>Fehler bei Name</p>\n";}
130        // Daten der Person
131        echo "\n\t<table>\n\t<tr>\n\t\t<td valign='top'>";
132                // Sp. 1: Icon, Link zur Auskunft Person
133                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisnamstruk.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$person."\")'>";
134                        echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'>";
135                echo "\n\t</a></td>\n\t\t<td>";
136                echo "\n\t<p class='nam'>"; // Sp. 2: Rahmen
137                if ($row = pg_fetch_array($res)) {
138                        $namzeil=$row["nachnameoderfirma"].", ".$row["vorname"];
139                        $gebdat=$row["geburtsdatum"];
140                        if ($gebdat != "") {$namzeil.= ", geb. ".$gebdat;}
141                        $best=$row["namensbestandteil"];
142                        if ($best != "") {$namzeil.= ", ".$best;}
143                        echo htmlentities($namzeil, ENT_QUOTES, "UTF-8");
144                        $namzeil=$row["plz"]." ".$row["ort_post"];
145                        if (trim($namzeil) != "") {echo "\n\t<br>".htmlentities($namzeil, ENT_QUOTES, "UTF-8");}
146                        $namzeil=$row["strasse"]." ".$row["hausnummer"];
147                        if (trim($namzeil) != "") {echo "\n\t<br>".htmlentities($namzeil, ENT_QUOTES, "UTF-8");}
148                }
149        echo "\n\t</p></td></tr>\n\t</table>";
150
151        // Suche nach GrundbÃŒchern der Person
152        $sql ="SELECT g.gml_id AS gml_g, g.buchungsblattnummermitbuchstabenerweiterung as nr, b.bezeichnung AS beznam ";
153        $sql.="FROM alkis_beziehungen bpn ";
154        $sql.="JOIN ax_namensnummer n ON bpn.beziehung_von=n.gml_id ";
155        $sql.="JOIN alkis_beziehungen bng ON n.gml_id=bng.beziehung_von ";
156        $sql.="JOIN ax_buchungsblatt g ON bng.beziehung_zu=g.gml_id ";
157        $sql.="JOIN ax_buchungsblattbezirk b ON g.land = b.land AND g.bezirk = b.bezirk ";
158        $sql.="WHERE bpn.beziehung_zu= $1 AND bpn.beziehungsart='benennt' AND bng.beziehungsart='istBestandteilVon' ";
159        $sql.="ORDER BY g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;";
160        $v=array($person, $linelimit);
161        $res=pg_prepare("", $sql);
162        $res=pg_execute("", $v);
163        if (!$res) {
164                echo "\n<p class='err'>Fehler bei Grundbuch</p>";
165                return;
166        }
167        $cnt = 0;
168        while($row = pg_fetch_array($res)) {
169                $gml=$row["gml_g"];
170                $beznam=$row["beznam"];
171                $nr=$row["nr"];
172                echo "\n<div class='gb'>";
173                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$gml."\")'>";
174                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='GB'>";
175                        echo "\n\t</a> ";               
176                        echo "\n\t".$beznam."<a title='Grundbuch' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gb=".$gml."&amp;person=".$person."'> Blatt ".$nr."&nbsp;</a>";
177                echo "\n</div>";
178                $cnt++;
179        }
180        if($cnt == 0){
181                echo "\n<p class='err'>Kein Grundbuch.</p>";
182        } elseif($cnt >= $linelimit) {
183                echo "\n<p>... und weitere</p>";
184        } elseif($cnt == 1){ // Eindeutig!
185                $gb=$gml; // dann Stufe 3 gleich nachschieben
186        }
187        return;
188}
189       
190function getFSbyGB($backlink) {
191// 3 =================================
192// FlurstÌcke zum gewÀhlten Grundbuch
193// ===================================
194        global $gkz, $gemeinde, $con, $name, $person, $gb, $scalefs, $auskpath, $epsg, $gfilter, $persfilter;
195        $linelimit=120;
196
197        if($backlink) {
198                echo "\n\t<div class='back' title='zur&uuml;ck zur Person'>";
199                        echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'> ";
200                        echo "\n\t<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$person."'>";
201                        echo "zur&uuml;ck</a><br>";             
202                echo "</div>";
203                echo "<div class='gb'>";
204                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gb."\")'>";
205                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='GB'>";
206                        echo "\n\t</a> Grundbuch";
207                echo "</div>"; 
208        }
209
210        // SQL-Bausteine vorbereiten
211        $sql1 ="SELECT s1.laufendenummer AS lfd, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ";
212        if($epsg == "25832") { // Transform nicht notwendig
213                $sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, ";
214                $sql1.="st_y(st_centroid(f.wkb_geometry)) AS y, ";
215        } else { 
216                $sql1.="st_x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
217                $sql1.="st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y, ";                     
218        }
219        $sql1.="g.gemarkungsnummer, g.bezeichnung ";
220   $sql1.="FROM alkis_beziehungen vbg ";
221        $sql1.="JOIN ax_buchungsstelle s1 ON vbg.beziehung_von = s1.gml_id ";
222
223        // Zwischen-JOIN (zusÀtzlich nur bei zweiter Abfrage)
224        $sqlz ="JOIN alkis_beziehungen vss ON vss.beziehung_von = s1.gml_id ";
225        $sqlz.="JOIN ax_buchungsstelle s2 ON vss.beziehung_zu = s2.gml_id ";
226
227        $sqla1 ="JOIN alkis_beziehungen vfb ON s1.gml_id = vfb.beziehung_zu ";
228        $sqla2 ="JOIN alkis_beziehungen vfb ON s2.gml_id = vfb.beziehung_zu ";
229
230        $sql2.="JOIN ax_flurstueck f  ON vfb.beziehung_von = f.gml_id ";
231   $sql2.="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
232
233        if ($persfilter and ($gfilter > 0)) {
234                $sql2.="JOIN gemeinde_gemarkung v ON g.land=v.land AND g.gemarkungsnummer=v.gemarkung ";
235        }
236
237        $sql2.="WHERE vbg.beziehung_zu= $1 AND vbg.beziehungsart='istBestandteilVon' AND vfb.beziehungsart='istGebucht' ";
238
239        if ($persfilter and ($gfilter > 0)) {
240                switch ($gfilter) {
241                        case 1: // Einzelwert
242                                $sql2.="AND v.gemeinde=".$gemeinde." "; break;
243                        case 2: // Liste
244                                $sql2.="AND v.gemeinde in (".$gemeinde.") "; break;
245                }
246        }
247        $sql2.="ORDER BY s1.laufendenummer, f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;";
248
249        // Blatt <vbg/istBestandteilVon<  Buchungsstelle <vfb/istGebucht< Flurstck.
250        $sql=$sql1.$sqla1.$sql2; // Direkte Buchungen
251
252        $v=array($gb, $linelimit);
253        $res=pg_prepare("", $sql);
254        $res=pg_execute("", $v);
255        if (!$res) {
256                echo "\n<p class='err'>Fehler bei Buchung und Flurst&uuml;ck.</p>";
257                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
258                return;
259        }
260        $zfs1=0;
261        while($row = pg_fetch_array($res)) {   
262                $fs_gml=$row["gml_id"];
263                $bvnr=$row["lfd"];
264                if ($bvnr > 0) {$bvnr=str_pad($bvnr, 4, "0", STR_PAD_LEFT);} else {$bvnr="";}
265                $gmkg=$row["bezeichnung"];
266                $flur=$row["flurnummer"];
267                $fskenn=$row["zaehler"];
268                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
269                $x=$row["x"];
270                $y=$row["y"];
271                echo "\n<div class='fs'>";
272                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>";
273                                echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
274                        echo "\n\t</a> ";       
275                        echo "\n\tFlst. <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
276                                        echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); ";
277                                        echo "parent.parent.showHighlight(".$x.",".$y.");' ";
278                                echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
279                                echo "onmouseout='parent.parent.hideHighlight()'>";
280                        echo $bvnr." ".$gmkg." ".$flur."-".$fskenn."</a>";
281                echo "\n</div>";
282                $zfs1++;
283        }
284
285        // Zweite Abfrage (Variante) aus den Bausteinen zusammen bauen
286        // buchungsStelle2 < an < buchungsStelle1
287        $sql=$sql1.$sqlz.$sqla2.$sql2; // Rechte an
288
289        $v=array($gb, $linelimit);
290        $res=pg_prepare("", $sql);
291        $res=pg_execute("", $v);
292        if (!$res) {
293                echo "\n<p class='err'>Fehler bei Recht an Buchung.</p>";
294                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
295                return;
296        }
297        $zfs2=0;
298        while($row = pg_fetch_array($res)) {   
299                $fs_gml=$row["gml_id"];
300                $bvnr=$row["lfd"];
301                if ($bvnr > 0) {$bvnr=str_pad($bvnr, 4, "0", STR_PAD_LEFT);} else {$bvnr="";}
302                $gmkg=$row["bezeichnung"];
303                $flur=$row["flurnummer"];
304                $fskenn=$row["zaehler"];
305                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
306                $x=$row["x"];
307                $y=$row["y"];
308                echo "\n<div class='fs'>";
309                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>";
310                                echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
311                        echo "\n\t</a> ";       
312                        echo "\n\tRecht an <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
313                                        echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); ";
314                                        echo "parent.parent.showHighlight(".$x.",".$y.");' ";
315                                echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
316                                echo "onmouseout='parent.parent.hideHighlight()'>";
317                        echo $bvnr." ".$gmkg." ".$flur."-".$fskenn."</a>";
318                echo "\n</div>";
319                $zfs2++;
320        }
321
322        if($zfs1 + $zfs2 == 0) {
323                echo "\n<p class='err'>Kein Flurst&uuml;ck im berechtigten Bereich.</p>";
324        //      echo "\n<p class='hilfe'>Hinweis: Sonderf&auml;lle wie 'Erbbaurecht' sind noch nicht umgesetzt.</p>";
325        } elseif($zfs >= $linelimit) {
326                echo "\n<p>... und weitere</p>";
327        }
328        return;
329}
330
331// ===========
332// Start hier!
333// ===========
334// Parameter: 
335// 1. name   = Suche nach Namensanfang oder -bestandteil.
336// 2. person = gml_id der Person      -> Suche nach GrundbÃŒchern
337// 3. gb     = gml_id des Grundbuches -> Suche nach FlurstÃŒcken
338if(isset($epsg)) {
339        if ($debug >= 2) {echo "<p>aktueller EPSG='".$epsg."'</p>";} // aus MB
340        $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]);   
341} else {
342        if ($debug >= 1) {echo "<p class='err'>kein EPSG gesetzt</p>";}
343        $epsg=$gui_epsg; // aus Conf
344}
345if ($debug >= 2) {echo "<p>Filter Gemeinde = ".$gemeinde."</p>";}
346if ($gemeinde == "") {
347        $gfilter = 0; // ungefiltert
348} elseif(strpos($gemeinde, ",") === false) {
349        $gfilter = 1; // Einzelwert
350} else {
351        $gfilter = 2; // Liste
352}
353
354// Welche Parameter?
355// 3. Stufe: FlurstÃŒcke zum Grundbuch
356if(isset($gb)) { // gml_id
357        // Das Programm hat sich selbst verlinkt aus einer Liste der GB zu einem EigentÃŒmer.
358        // Wenn Parameter mitgegeben wurden, können diese fÃŒr einen "Link zurÃŒck" verwendet werden.
359        getFSbyGB(true);
360} elseif(isset($person)) { // gml_id - 2. Stufe: GrundbÃŒcher zur Person
361        // Das Programm hat sich selbst verlinkt aus einer Liste der Personen zu einer Suchmaske.
362        getGBbyPerson();
363        if(isset($gb) ) { getFSbyGB(false);} // Es wurde nur EIN Grundbuch zu der Person gefunden.
364} elseif(isset($name)) { // Suchbegriff aus Form - 1. Stufe: Suche nach Name
365        getEigByName();
366        if(isset($person)) { getGBbyPerson();}
367} elseif ($debug >= 2) {
368        echo "\n<p>Parameter?</p>"; // Programmfehler
369}
370?>
371
372</body>
373</html>
Note: See TracBrowser for help on using the repository browser.