Ignore:
Timestamp:
12/09/11 14:29:57 (12 years ago)
Author:
frank.jaeger
Message:

Filter auf Gemeinde bei Navigation bei Suche nach Eigentümer. Dazu Hilfstabelle aufbauen.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/data/mapbender/http/nav/alkisnav_eig.php

    r135 r140  
    11<?php 
    22/* Version vom  
    3         13.01.2011  
    4         11.04.2011 epsg in Link, transform nur wenn notwendig 
    5         25.07.2011 PostNAS 0.5/0.6 Versionen unterscheiden 
    6         24.10.2011 Nach Pos-Klick Highlight erneuern statt hideHighlight 
    7         17.11.2011 Nachweis-Links ÃŒber javascript im neuen Hochformat-Fenster 
    8         02.12.2011 Suche nach Vorname Nachname oder Nachname 
     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        ToDo: Auf der Stufe 2 "getGBbyPerson" noch Filtern nach Gemeinde 
    910*/ 
    1011import_request_variables("PG"); 
     
    1213$con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password; 
    1314$con = pg_connect ($con_string) or die ("<p class='err'>Fehler bei der Verbindung zur Datenbank</p>".$dbname.$dbvers.$gkz); 
    14 // ToDo: Buchung zwischen Blatt und Flst? 
    1515?> 
    1616 
     
    3939// Eigentuemer nach Name(-nsanfang) 
    4040// =============================== 
    41         global $gkz, $gemeinde, $epsg, $con, $name, $person, $gb; 
     41        global $gkz, $gemeinde, $epsg, $con, $name, $person, $gb, $gfilter, $persfilter, $auskpath; 
    4242        $linelimit=120; 
    4343        $arr = explode(",", $name); 
     
    4949                $match = trim($name0)."%"; 
    5050        }        
    51          
    5251        if(preg_match("/\*/",$name1)){ 
    5352                $match1 = trim(preg_replace("/\*/i","%", strtoupper($name1))); 
     
    5655        }                
    5756         
    58         $sql ="SELECT p.nachnameoderfirma, p.vorname, p.gml_id FROM ax_person as p "; 
     57        $sql ="SELECT p.nachnameoderfirma, p.vorname, p.gml_id FROM ax_person p "; 
     58 
     59        if ($persfilter and ($gfilter > 0)) { 
     60                $sql.="JOIN gemeinde_person g ON p.gml_id = g.person WHERE "; 
     61                switch ($gfilter) { 
     62                        case 1: // Einzelwert 
     63                                $sql.="g.gemeinde=".$gemeinde." AND "; break; 
     64                        case 2: // Liste 
     65                                $sql.="g.gemeinde in (".$gemeinde.") AND "; break; 
     66                } 
     67        } else { 
     68                $sql.="WHERE "; 
     69        } 
    5970        if($match1 != '%'){ 
    60                 $sql.="WHERE nachnameoderfirma ILIKE $1 AND p.vorname ILIKE $2 ";                
     71                $sql.="nachnameoderfirma ILIKE $1 AND p.vorname ILIKE $2 ";              
    6172                $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $3 ;"; 
    6273                $v=array($match, $match1, $linelimit); 
    6374        }else{ 
    64                 $sql.="WHERE nachnameoderfirma ILIKE $1 ";               
     75                $sql.="nachnameoderfirma ILIKE $1 ";             
    6576                $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $2 ;"; 
    6677                $v=array($match, $linelimit); 
    6778        }  
    68         // +++ Adresse der Person zur eindeutigen Bestimmung? 
    6979        $res=pg_prepare("", $sql); 
    7080        $res=pg_execute("", $v); 
     
    7484        } 
    7585        $cnt = 0; 
    76         // einfache Liste ohne div und Icon      
    7786        while($row = pg_fetch_array($res)) { 
    7887                $nnam=htmlentities($row["nachnameoderfirma"], ENT_QUOTES, "UTF-8"); 
    7988                $vnam=htmlentities($row["vorname"], ENT_QUOTES, "UTF-8"); 
    8089                $gml=$row["gml_id"]; 
    81                 // +++ Icon mit Link auf Person-Auskunft, ÃŒber gml_id   
    82                 // Zur Zeit siehe unten: erst nach Auswahl einer einzelnen Person 
    83                 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>"; 
     90                // Link zur Auskunft Person  +++ Icon differenzieren? Firma/Person 
     91                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisnamstruk.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$gml."\")'>"; 
     92                        echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'>"; 
     93                echo "\n\t</a> ";                
     94                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>"; 
    8495                $cnt++; 
    8596        } 
     
    117128        if (!$res) {echo "\n<p class='err'>Fehler bei Name</p>\n";} 
    118129        // Daten der Person 
    119         echo "\n<div class='nam'>"; 
    120                 // Link zur Auskunft Person 
     130        echo "\n\t<table>\n\t<tr>\n\t\t<td valign='top'>"; 
     131                // Sp. 1: Icon, Link zur Auskunft Person 
    121132                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisnamstruk.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$person."\")'>"; 
    122133                        echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'>"; 
    123                 echo "\n\t</a> "; 
    124                 echo "\n\t<p class='nam'>";              
     134                echo "\n\t</a></td>\n\t\t<td>"; 
     135                echo "\n\t<p class='nam'>"; // Sp. 2: Rahmen 
    125136                if ($row = pg_fetch_array($res)) { 
    126137                        $namzeil=$row["nachnameoderfirma"].", ".$row["vorname"]; 
     
    135146                        if (trim($namzeil) != "") {echo "\n\t<br>".htmlentities($namzeil, ENT_QUOTES, "UTF-8");} 
    136147                } 
    137                 echo "\n\t</p>"; 
    138         echo "\n</div>"; 
     148        echo "\n\t</p></td></tr>\n\t</table>"; 
    139149 
    140150        // Suche nach GrundbÃŒchern der Person 
     
    181191// FlurstÃŒcke zum gewÀhlten Grundbuch 
    182192// =================================== 
    183         global $gkz, $gemeinde, $con, $name, $person, $gb, $scalefs, $auskpath, $epsg; 
     193        global $gkz, $gemeinde, $con, $name, $person, $gb, $scalefs, $auskpath, $epsg, $gfilter, $persfilter; 
    184194        $linelimit=120; 
    185195 
     
    197207        } 
    198208 
     209        // SQL-Bausteine vorbereiten 
     210        $sql1 ="SELECT s1.laufendenummer AS lfd, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, "; 
     211        if($epsg == "25832") { // Transform nicht notwendig 
     212                $sql1.="x(st_centroid(f.wkb_geometry)) AS x, "; 
     213                $sql1.="y(st_centroid(f.wkb_geometry)) AS y, "; 
     214        } else {   
     215                $sql1.="x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, "; 
     216                $sql1.="y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y, ";                         
     217        } 
     218        $sql1.="g.gemarkungsnummer, g.bezeichnung "; 
     219   $sql1.="FROM alkis_beziehungen vbg "; 
     220        $sql1.="JOIN ax_buchungsstelle s1 ON vbg.beziehung_von = s1.gml_id ";  
     221 
     222        // Zwischen-JOIN (zusÀtzlich nur bei zweiter Abfrage) 
     223        $sqlz ="JOIN alkis_beziehungen vss ON vss.beziehung_von = s1.gml_id "; 
     224        $sqlz.="JOIN ax_buchungsstelle s2 ON vss.beziehung_zu = s2.gml_id "; 
     225 
     226        $sqla1 ="JOIN alkis_beziehungen vfb ON s1.gml_id = vfb.beziehung_zu "; 
     227        $sqla2 ="JOIN alkis_beziehungen vfb ON s2.gml_id = vfb.beziehung_zu "; 
     228 
     229        $sql2.="JOIN ax_flurstueck f  ON vfb.beziehung_von = f.gml_id "; 
     230   $sql2.="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer "; 
     231 
     232        if ($persfilter and ($gfilter > 0)) { 
     233                $sql2.="JOIN gemeinde_gemarkung v ON g.land=v.land AND g.gemarkungsnummer=v.gemarkung "; 
     234        } 
     235 
     236        $sql2.="WHERE vbg.beziehung_zu= $1 AND vbg.beziehungsart='istBestandteilVon' AND vfb.beziehungsart='istGebucht' "; 
     237 
     238        if ($persfilter and ($gfilter > 0)) { 
     239                switch ($gfilter) { 
     240                        case 1: // Einzelwert 
     241                                $sql2.="AND v.gemeinde=".$gemeinde." "; break; 
     242                        case 2: // Liste 
     243                                $sql2.="AND v.gemeinde in (".$gemeinde.") "; break; 
     244                } 
     245        } 
     246        $sql2.="ORDER BY s1.laufendenummer, f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;"; 
     247 
    199248        // Blatt <vbg/istBestandteilVon<  Buchungsstelle <vfb/istGebucht< Flurstck. 
    200         $sql ="SELECT s.laufendenummer AS lfd, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, "; 
    201         if($epsg == "25832") { // Transform nicht notwendig 
    202                 $sql.="x(st_centroid(f.wkb_geometry)) AS x, "; 
    203                 $sql.="y(st_centroid(f.wkb_geometry)) AS y, "; 
    204         } else {   
    205                 $sql.="x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, "; 
    206                 $sql.="y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y, ";                  
    207         } 
    208         $sql.="g.gemarkungsnummer, g.bezeichnung "; 
    209    $sql.="FROM alkis_beziehungen vbg "; 
    210         $sql.="JOIN ax_buchungsstelle s ON vbg.beziehung_von = s.gml_id ";  
    211         $sql.="JOIN alkis_beziehungen vfb ON s.gml_id = vfb.beziehung_zu ";  
    212         $sql.="JOIN ax_flurstueck f  ON vfb.beziehung_von = f.gml_id "; 
    213    $sql.="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer "; 
    214         $sql.="WHERE vbg.beziehung_zu= $1 AND vbg.beziehungsart='istBestandteilVon' AND vfb.beziehungsart='istGebucht' "; 
    215         $sql.="ORDER BY s.laufendenummer, f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;"; 
    216  
    217         // +++ Sonderfall Fehlt noch: Blatt -> Buchung -> (Recht an) Buchung -> FlurstÃŒck 
    218         // +++ Ebene Buchung dazwischen wie im Teil 'Grundbuch' ? 
     249        $sql=$sql1.$sqla1.$sql2; // Direkte Buchungen 
     250 
    219251        $v=array($gb, $linelimit); 
    220252        $res=pg_prepare("", $sql); 
     
    225257                return; 
    226258        } 
    227         $zfs=0; 
     259        $zfs1=0; 
    228260        while($row = pg_fetch_array($res)) {     
    229261                $fs_gml=$row["gml_id"]; 
    230262                $bvnr=$row["lfd"]; 
    231                 if ($bvnr > 0) {                 
    232                         $bvnr=str_pad($bvnr, 4, "0", STR_PAD_LEFT); 
    233                 } else { 
    234                         $bvnr=""; 
    235                 } 
     263                if ($bvnr > 0) {$bvnr=str_pad($bvnr, 4, "0", STR_PAD_LEFT);} else {$bvnr="";} 
    236264                $gmkg=$row["bezeichnung"]; 
    237265                $flur=$row["flurnummer"]; 
     
    251279                        echo $bvnr." ".$gmkg." ".$flur."-".$fskenn."</a>"; 
    252280                echo "\n</div>"; 
    253                 $zfs++; 
    254         } 
    255         if($zfs == 0) {  
    256                 echo "\n<p class='err'>Kein Flurst&uuml;ck.</p>"; 
    257                 echo "\n<p class='hilfe'>Hinweis: Sonderf&auml;lle wie 'Erbbaurecht' sind noch nicht umgesetzt.</p>"; 
     281                $zfs1++; 
     282        } 
     283 
     284        // Zweite Abfrage (Variante) aus den Bausteinen zusammen bauen 
     285        // buchungsStelle2 < an < buchungsStelle1 
     286        $sql=$sql1.$sqlz.$sqla2.$sql2; // Rechte an 
     287 
     288        $v=array($gb, $linelimit); 
     289        $res=pg_prepare("", $sql); 
     290        $res=pg_execute("", $v); 
     291        if (!$res) { 
     292                echo "\n<p class='err'>Fehler bei Recht an Buchung.</p>"; 
     293                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";} 
     294                return; 
     295        } 
     296        $zfs2=0; 
     297        while($row = pg_fetch_array($res)) {     
     298                $fs_gml=$row["gml_id"]; 
     299                $bvnr=$row["lfd"]; 
     300                if ($bvnr > 0) {$bvnr=str_pad($bvnr, 4, "0", STR_PAD_LEFT);} else {$bvnr="";} 
     301                $gmkg=$row["bezeichnung"]; 
     302                $flur=$row["flurnummer"]; 
     303                $fskenn=$row["zaehler"]; 
     304                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer 
     305                $x=$row["x"]; 
     306                $y=$row["y"]; 
     307                echo "\n<div class='fs'>"; 
     308                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>"; 
     309                                echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>"; 
     310                        echo "\n\t</a> ";        
     311                        echo "\n\tRecht an <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='"; 
     312                                        echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); "; 
     313                                        echo "parent.parent.showHighlight(".$x.",".$y.");' "; 
     314                                echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' "; 
     315                                echo "onmouseout='parent.parent.hideHighlight()'>"; 
     316                        echo $bvnr." ".$gmkg." ".$flur."-".$fskenn."</a>"; 
     317                echo "\n</div>"; 
     318                $zfs2++; 
     319        } 
     320 
     321        if($zfs1 + $zfs2 == 0) {  
     322                echo "\n<p class='err'>Kein Flurst&uuml;ck im berechtigten Bereich.</p>"; 
     323        //      echo "\n<p class='hilfe'>Hinweis: Sonderf&auml;lle wie 'Erbbaurecht' sind noch nicht umgesetzt.</p>"; 
    258324        } elseif($zfs >= $linelimit) { 
    259325                echo "\n<p>... und weitere</p>";  
     
    277343} 
    278344if ($debug >= 2) {echo "<p>Filter Gemeinde = ".$gemeinde."</p>";} 
     345if ($gemeinde == "") { 
     346        $gfilter = 0; // ungefiltert 
     347} elseif(strpos($gemeinde, ",") === false) { 
     348        $gfilter = 1; // Einzelwert 
     349} else { 
     350        $gfilter = 2; // Liste 
     351} 
    279352 
    280353// Welche Parameter? 
Note: See TracChangeset for help on using the changeset viewer.