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

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