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

Revision 115, 11.3 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.

RevLine 
[66]1<?php
[86]2/* Version vom
3        13.01.2011
4        11.04.2011 epsg in Link, transform nur wenn notwendig
[105]5        25.07.2011 PostNAS 0.5/0.6 Versionen unterscheiden
[115]6        24.10.2011 Nach Pos-Klick Highlight erneuern statt hideHighlight
[86]7*/
[68]8import_request_variables("PG");
[66]9include("../../conf/alkisnav_conf.php");
[105]10$con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password;
11$con = pg_connect ($con_string) or die ("<p class='err'>Fehler bei der Verbindung zur Datenbank</p>".$dbname.$dbvers.$gkz);
[68]12// ToDo: Buchung zwischen Blatt und Flst?
[66]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 Eigent&uuml;mer</title>
23        <link rel="stylesheet" type="text/css" href="alkisnav.css">
24</head>
25<body>
26
[68]27<?php
28
[66]29function getEigByName() {
30// 1 =============================
31// Eigentuemer nach Name(-nsanfang)
32// ===============================
[86]33        global $gkz, $gemeinde, $epsg, $con, $name, $person, $gb;
[66]34        $linelimit=120;
35        if(preg_match("/\*/",$name)){
36                $match = trim(preg_replace("/\*/i","%", strtoupper($name)));
37        } else {
38                $match = trim($name)."%";
39        }       
40        $sql ="SELECT p.nachnameoderfirma, p.vorname, p.gml_id FROM ax_person as p ";
41        $sql.="WHERE nachnameoderfirma ILIKE $1 ORDER BY p.nachnameoderfirma, p.vorname LIMIT $2 ;";
42        // +++ Adresse der Person zur eindeutigen Bestimmung?
43        $v=array($match, $linelimit);
44        $res=pg_prepare("", $sql);
45        $res=pg_execute("", $v);
46        if (!$res) {
47                echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>";
48                return;
49        }
50        $cnt = 0;
51        // einfache Liste ohne div und Icon     
52        while($row = pg_fetch_array($res)) {
53                $nnam=htmlentities($row["nachnameoderfirma"], ENT_QUOTES, "UTF-8");
54                $vnam=htmlentities($row["vorname"], ENT_QUOTES, "UTF-8");
55                $gml=$row["gml_id"];                 // +++ Icon mit Link auf Person-Auskunft, ÃŒber gml_id 
56                // Zur Zeit siehe unten: erst nach Auswahl einer einzelnen Person
57                echo "\n<a class='nam' 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>";                 $cnt++;
[86]58        }
[66]59        if($cnt == 0){
60                echo "\n<p class='err'>Keine Person.</p>";
61        } elseif($cnt >= $linelimit) {
62                echo "\n<p title='Bitte den Namen eindeutiger qualifizieren'>... und weitere</p>";
63        } elseif($cnt == 1){ // Eindeutig!
64                $person = $gml;
65        }
66        return;
67}
68
69function getGBbyPerson() {
70// 2 =================================
71// GrundbÌcher zur gewÀhlten Person
72// ===================================
73        global $gkz, $gemeinde, $epsg, $con, $name, $person, $gb, $auskpath;
74        $linelimit=120;
[86]75        if(isset($name)) { // Familiensuche
[66]76                echo "\n<div class='back' title='Andere Personen mit diesem Nachnamen'>";
77                        echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer_2.ico' width='16' height='16' alt='FAM'> ";
78                        echo "\n<a class='back' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;name=".$name."'>\"".$name."\"</a>";
79                echo "\n</div>\n<br>"; 
[86]80        }
[66]81        $sql="SELECT p.nachnameoderfirma, p.vorname, p.geburtsdatum, p.namensbestandteil, ";
82        $sql.="a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer ";
83        $sql.="FROM ax_person p ";
84        $sql.="JOIN alkis_beziehungen b ON p.gml_id=b.beziehung_von ";
85        $sql.="JOIN ax_anschrift a ON a.gml_id=b.beziehung_zu ";
86        $sql.="WHERE p.gml_id= $1 AND b.beziehungsart='hat';"; 
87        $v=array($person);
88        $res=pg_prepare("", $sql);
89        $res=pg_execute("", $v);
90        if (!$res) {echo "\n<p class='err'>Fehler bei Name</p>\n";}
91        // Daten der Person
[68]92        echo "\n<div class='nam'>";
[66]93                // Link zur Auskunft Person
94                echo "\n\t<a title='Nachweis' target='_blank' href='".$auskpath."alkisnamstruk.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$person."'>";
95                        echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'>";
96                echo "\n\t</a> ";
97                echo "\n\t<p class='nam'>";             
98                if ($row = pg_fetch_array($res)) {
99                        $namzeil=$row["nachnameoderfirma"].", ".$row["vorname"];
100                        $gebdat=$row["geburtsdatum"];
101                        if ($gebdat != "") {$namzeil.= ", geb. ".$gebdat;}
102                        $best=$row["namensbestandteil"];
103                        if ($best != "") {$namzeil.= ", ".$best;}
104                        echo htmlentities($namzeil, ENT_QUOTES, "UTF-8");
105                        $namzeil=$row["plz"]." ".$row["ort_post"];
106                        if (trim($namzeil) != "") {echo "\n\t<br>".htmlentities($namzeil, ENT_QUOTES, "UTF-8");}
107                        $namzeil=$row["strasse"]." ".$row["hausnummer"];
108                        if (trim($namzeil) != "") {echo "\n\t<br>".htmlentities($namzeil, ENT_QUOTES, "UTF-8");}
109                }
110                echo "\n\t</p>";
111        echo "\n</div>";
112
113        // Suche nach GrundbÃŒchern der Person
114        $sql ="SELECT g.gml_id AS gml_g, g.buchungsblattnummermitbuchstabenerweiterung as nr, b.bezeichnung AS beznam ";
115        $sql.="FROM alkis_beziehungen bpn ";
116        $sql.="JOIN ax_namensnummer n ON bpn.beziehung_von=n.gml_id ";
117        $sql.="JOIN alkis_beziehungen bng ON n.gml_id=bng.beziehung_von ";
118        $sql.="JOIN ax_buchungsblatt g ON bng.beziehung_zu=g.gml_id ";
119        $sql.="JOIN ax_buchungsblattbezirk b ON g.land = b.land AND g.bezirk = b.bezirk ";
120        $sql.="WHERE bpn.beziehung_zu= $1 AND bpn.beziehungsart='benennt' AND bng.beziehungsart='istBestandteilVon' ";
121        $sql.="ORDER BY g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;";         $v=array($person, $linelimit);
122        $res=pg_prepare("", $sql);
123        $res=pg_execute("", $v);
124        if (!$res) {
125                echo "\n<p class='err'>Fehler bei Grundbuch</p>";
126                return;
127        }
128        $cnt = 0;
129        while($row = pg_fetch_array($res)) {
130                $gml=$row["gml_g"];
131                $beznam=$row["beznam"];
132                $nr=$row["nr"];                 echo "\n<div class='gb'>";
133                        echo "\n\t<a title='Nachweis' target='_blank' href='".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$gml."'>";
134                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='GB'>";
135                        echo "\n\t</a> ";               
136                        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>";
137                echo "\n</div>";
138                $cnt++;
139        }
[86]140        if($cnt == 0){
[66]141                echo "\n<p class='err'>Kein Grundbuch.</p>";
142        } elseif($cnt >= $linelimit) {
143                echo "\n<p>... und weitere</p>";
144        } elseif($cnt == 1){ // Eindeutig!
145                $gb=$gml; // dann Stufe 3 gleich nachschieben
146        }
147        return;
148}
149       
150function getFSbyGB($backlink) {
151// 3 =================================
152// FlurstÌcke zum gewÀhlten Grundbuch
153// ===================================
154        global $gkz, $gemeinde, $con, $name, $person, $gb, $scalefs, $auskpath, $epsg;
155        $linelimit=120;
156
157        if($backlink) {
158                echo "\n\t<div class='back' title='zur&uuml;ck zur Person'>";
159                        echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'> ";
160                        echo "\n\t<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$person."'>";
161                        echo "zur&uuml;ck</a><br>";             
162                echo "</div>";
163                echo "<div class='gb'>";
[86]164                        echo "\n\t<a title='Nachweis' target='_blank' href='".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gb."'>";
[66]165                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='GB'>";
166                        echo "\n\t</a> Grundbuch";
167                echo "</div>"; 
168        }
169
170        // Blatt <vbg/istBestandteilVon<  Buchungsstelle <vfb/istGebucht< Flurstck.
171        $sql ="SELECT s.laufendenummer AS lfd, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ";
172        if($epsg == "25832") { // Transform nicht notwendig
173                $sql.="x(st_centroid(f.wkb_geometry)) AS x, ";
174                $sql.="y(st_centroid(f.wkb_geometry)) AS y, ";
175        } else { 
[86]176                $sql.="x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
177                $sql.="y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y, ";                 
178        }
179        $sql.="g.gemarkungsnummer, g.bezeichnung ";
180   $sql.="FROM alkis_beziehungen vbg ";
181        $sql.="JOIN ax_buchungsstelle s ON vbg.beziehung_von = s.gml_id ";
182        $sql.="JOIN alkis_beziehungen vfb ON s.gml_id = vfb.beziehung_zu ";
[66]183        $sql.="JOIN ax_flurstueck f  ON vfb.beziehung_von = f.gml_id ";
184   $sql.="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
185        $sql.="WHERE vbg.beziehung_zu= $1 AND vbg.beziehungsart='istBestandteilVon' AND vfb.beziehungsart='istGebucht' ";
186        $sql.="ORDER BY s.laufendenummer, f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;";
187
188        // +++ Sonderfall Fehlt noch: Blatt -> Buchung -> (Recht an) Buchung -> FlurstÃŒck
189        // +++ Ebene Buchung dazwischen wie im Teil 'Grundbuch' ?
190        $v=array($gb, $linelimit);
191        $res=pg_prepare("", $sql);
192        $res=pg_execute("", $v);
193        if (!$res) {
194                echo "\n<p class='err'>Fehler bei Buchung und Flurst&uuml;ck.</p>";
195                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
196                return;
197        }
198        $zfs=0;
199        while($row = pg_fetch_array($res)) {   
200                $fs_gml=$row["gml_id"];
201                $bvnr=$row["lfd"];
202                if ($bvnr > 0) {               
203                        $bvnr=str_pad($bvnr, 4, "0", STR_PAD_LEFT);
204                } else {
205                        $bvnr="";
206                }
207                $gmkg=$row["bezeichnung"];
208                $flur=$row["flurnummer"];
209                $fskenn=$row["zaehler"];
210                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
211                $x=$row["x"];
212                $y=$row["y"];
213                echo "\n<div class='fs'>";
214                        echo "\n\t<a title='Nachweis' target='_blank' href='".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."'>";
215                                echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
216                        echo "\n\t</a> ";       
217                        echo "\n\tFlst. <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
218                                        echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); ";                                         echo "parent.parent.showHighlight(".$x.",".$y.");' ";
219                                echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
220                                echo "onmouseout='parent.parent.hideHighlight()'>";
221                        echo $bvnr." ".$gmkg." ".$flur."-".$fskenn."</a>";
[115]222                echo "\n</div>";
223                $zfs++;
[66]224        }
225        if($zfs == 0) {
226                echo "\n<p class='err'>Kein Flurst&uuml;ck.</p>";
227                echo "\n<p class='hilfe'>Hinweis: Sonderf&auml;lle wie 'Erbbaurecht' sind noch nicht umgesetzt.</p>";
228        } elseif($zfs >= $linelimit) {
229                echo "\n<p>... und weitere</p>";
230        }
231        return;
232}
233
234// ===========
235// Start hier!
236// ===========
237// Parameter: 
238// 1. name   = Suche nach Namensanfang oder -bestandteil.
239// 2. person = gml_id der Person      -> Suche nach GrundbÃŒchern
240// 3. gb     = gml_id des Grundbuches -> Suche nach FlurstÃŒcken
241if(isset($epsg)) {
242        if ($debug >= 2) {echo "<p>aktueller EPSG='".$epsg."'</p>";} // aus MB
243        $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]);   
244} else {
245        if ($debug >= 1) {echo "<p class='err'>kein EPSG gesetzt</p>";}
246        $epsg=$gui_epsg; // aus Conf
247}
[86]248if ($debug >= 2) {echo "<p>Filter Gemeinde = ".$gemeinde."</p>";}
[66]249
[86]250// Welche Parameter?
[66]251// 3. Stufe: FlurstÃŒcke zum Grundbuch
252if(isset($gb)) { // gml_id
253        // Das Programm hat sich selbst verlinkt aus einer Liste der GB zu einem EigentÃŒmer.
254        // Wenn Parameter mitgegeben wurden, können diese fÃŒr einen "Link zurÃŒck" verwendet werden.
255        getFSbyGB(true);
256} elseif(isset($person)) { // gml_id - 2. Stufe: GrundbÃŒcher zur Person
257        // Das Programm hat sich selbst verlinkt aus einer Liste der Personen zu einer Suchmaske.
258        getGBbyPerson();
259        if(isset($gb) ) { getFSbyGB(false);} // Es wurde nur EIN Grundbuch zu der Person gefunden.
260} elseif(isset($name)) { // Suchbegriff aus Form - 1. Stufe: Suche nach Name
261        getEigByName();
262        if(isset($person)) { getGBbyPerson();}
263} elseif ($debug >= 2) {
264        echo "\n<p>Parameter?</p>"; // Programmfehler
265}
266?>
267
268</body>
269</html>
Note: See TracBrowser for help on using the repository browser.