Ignore:
Timestamp:
04/12/11 09:58:26 (13 years ago)
Author:
frank.jaeger
Message:

ALKIS-Navigation fuer Mapbender erweitert: EPSG aus Mapframe entnehmen, Liste der Gemeinden oder Amtsgerichte bei leerer Eingabe

File:
1 edited

Legend:

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

    r85 r86  
    33        13.01.2011 
    44        25.03.2011 Filter als Gemeinde-Liste 
     5        12.04.2011 epsg in Link, transform nur wenn notwendig 
    56*/ 
    67import_request_variables("PG"); 
     
    3738        $zfsnr=trim($arr[2]); 
    3839        if ($zgemkg == "") { 
    39                 return 1; // alle Gmkg listen 
     40                return 0; // Gemeinden oder Gemarkungen listen 
    4041        } elseif ( ! is_ne_zahl($zgemkg)) { 
    4142                return 1; // Such Name 
     
    4445        } elseif ( ! is_ne_zahl($zflur)) { 
    4546                echo "<p class='err>Die Flurnummer '".$zflur."' ist nicht numerisch</p>"; 
    46                 return 0; 
     47                return 9; 
    4748        } elseif ($zfsnr == "") {                
    4849                return 3; // Flur                                
     
    5354                if ( ! is_ne_zahl($zzaehler)) { 
    5455                        echo "<p class='err>FlurstÃŒcksnummer '".$zzaehler."' ist nicht numerisch</p>"; 
    55                         return 0; 
     56                        return 9; 
    5657                } elseif ($znenner == "") { 
    5758                        return 4; 
     
    6061                } else { 
    6162                        echo "<p class='err>FlurstÃŒcks-Nenner '".$znenner."' ist nicht numerisch</p>"; 
    62                         return 0; 
     63                        return 9; 
    6364                } 
    6465        } 
     66} 
     67 
     68function ListGemeinden() { 
     69        // bei Leereingabe die Gemeinden anlisten 
     70        global $con, $gkz, $gemeinde, $epsg, $debug, $gfilter; 
     71        $linelimit=50; 
     72        $sql ="SELECT DISTINCT g.gemeinde AS key, g.bezeichnung FROM ax_gemeinde g "; 
     73        $sql.="JOIN gemeinde_gemarkung v ON g.regierungsbezirk=v.regierungsbezirk AND g.kreis=v.kreis AND g.gemeinde=v.gemeinde "; 
     74        // "ax_gemeinde" enthÀlt mehrfache Gemeinde-Schluessel (Filtern regierungsbezirk, kreis)        
     75        // "gemeinde_gemarkung" enthaelt nur gefÃŒllte Gemarkungen aber Gemeinde mehrfach 
     76        switch ($gfilter) { 
     77                case 1: // Einzelwert 
     78                        $sql.="WHERE g.gemeinde=".$gemeinde." "; 
     79                        break; 
     80                case 2: // Liste 
     81                        $sql.="WHERE g.gemeinde in (".$gemeinde.") "; 
     82                        break; 
     83                default: // kein Filter 
     84                        break; 
     85        } 
     86        $sql.=" ORDER BY g.bezeichnung LIMIT $1 ;"; 
     87        $res=pg_prepare("", $sql); 
     88        $res=pg_execute("", array($linelimit)); 
     89        if (!$res) { 
     90                echo "\n<p class='err'>Fehler bei Gemeinde</p>"; 
     91                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";} 
     92                return 0; 
     93        } 
     94        $cnt = 0; 
     95        while($row = pg_fetch_array($res)) { 
     96                $stadt=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); 
     97                $bez=urlencode($row["bezeichnung"]);  // Uebergeben an ListGmkgInGemeinde 
     98                $gnr=$row["key"]; 
     99                echo "\n<div class='gm' title='Gemeinde'>"; 
     100                        echo "\n\t\t<img class='nwlink' src='ico/Gemeinde.ico' width='16' height='16' alt='Stadt'>"; 
     101                        echo " Gem. <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gm=".$gnr."&amp;bez=".$bez."'>";                 
     102                        echo  " ".$stadt."</a> (".$gnr.")"; 
     103                echo "\n</div>"; 
     104                $cnt++; 
     105        } 
     106        if($cnt == 0){  
     107                echo "\n<p class='err'>Keine Gemeinde.</p>"; 
     108        } elseif($cnt >= $linelimit) { 
     109                echo "\n<p title='Bitte eindeutiger qualifizieren'>... und weitere</p>"; 
     110        } elseif($cnt == 1) { // Eindeutig! 
     111                return $gnr;  
     112        } 
     113        return 0; 
     114} 
     115 
     116function ListGmkgInGemeinde($gkey) { 
     117// Die (gefuellten) Gemarkungen zu einem Gemeinde-Key (aus Link) listen 
     118        global $con, $gkz, $gemeinde, $epsg, $debug, $gfilter, $bez; 
     119        $linelimit=70; 
     120        $sql ="SELECT g.gemarkungsnummer, g.bezeichnung "; 
     121        $sql.="FROM ax_gemarkung g JOIN gemeinde_gemarkung v ON g.gemarkungsnummer=v.gemarkung "; 
     122   $sql.="WHERE v.gemeinde= $1 ORDER BY g.bezeichnung LIMIT $2 ;"; 
     123        $res=pg_prepare("", $sql); 
     124        $res=pg_execute("", array($gkey, $linelimit)); 
     125        if (!$res) { 
     126                echo "\n<p class='err'>Fehler bei Gemarkungen</p>"; 
     127                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";} 
     128                return 0; 
     129        } 
     130        // Hierarchie Dokumentieren, Gemeinde-Name? 
     131        echo "\n<div class='gm' title='Gemeinde'>"; 
     132                echo "\n\t\t<img class='nwlink' src='ico/Gemeinde.ico' width='16' height='16' alt='Stadt'>";     
     133                echo  " Gem. ".$bez." (".$gkey.")"; // .urldecode($bez). ?? 
     134        echo "\n</div>"; 
     135        $cnt = 0; 
     136        while($row = pg_fetch_array($res)) { 
     137                $gnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); 
     138                $gnr=$row["gemarkungsnummer"]; 
     139                echo "\n<div class='gk' title='Gemarkung'>"; 
     140                        echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemarkung'>"; 
     141                        echo " OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$gnr."'>";               
     142                        echo  " ".$gnam."</a> (".$gnr.")"; 
     143                echo "\n</div>"; 
     144                $cnt++; 
     145        } 
     146        if($cnt == 0){  
     147                echo "\n<p class='err'>Keine Gemarkung.</p>"; 
     148        } elseif($cnt >= $linelimit) { 
     149                echo "\n<p title='Bitte eindeutiger qualifizieren'>... und weitere</p>"; 
     150        } elseif($cnt == 1) { // Eindeutig! 
     151                return $gnr;  
     152        } 
     153        return 0; 
    65154} 
    66155 
    67156function SuchGmkgName() { 
    68157// Gemarkung suchen nach Name(-nsanfang) 
    69         global $con, $gkz, $gemeinde, $debug, $fskennz, $gfilter; 
     158        global $con, $gkz, $gemeinde, $epsg, $debug, $fskennz, $gfilter; 
    70159        $linelimit=120; 
    71160        if(preg_match("/\*/",$fskennz)){ 
     
    77166        $sql.="FROM ax_gemarkung g JOIN gemeinde_gemarkung v ON g.gemarkungsnummer=v.gemarkung "; 
    78167   $sql.="WHERE bezeichnung ILIKE $1 "; 
    79  
    80 //      if($gemeinde > 0) { 
    81 //              $sql.=" AND v.gemeinde=".$gemeinde; 
    82 //      } // wie prepared? 
    83  
    84168        switch ($gfilter) { 
    85169                case 1: // Einzelwert 
     
    92176                        break; 
    93177        } 
    94  
    95178        $sql.=" ORDER BY g.bezeichnung LIMIT $2 ;"; 
    96179        $v=array($match, $linelimit); 
     
    108191                $stadt=$row["gemeindename"]; 
    109192                echo "\n<div class='gk' title='Gemarkung'>"; 
    110                         echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemkg'>"; 
    111                         echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$gnr."'>";              
     193                        echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemarkung'>"; 
     194                        echo " OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$gnr."'>";               
    112195                        echo  " ".$gnam."</a> (".$gnr.")"; 
    113  
    114 //                      if ($gemeinde == 0) {echo " ".$stadt;} // Kreisweit 
    115196                        switch ($gfilter) { 
    116197                                case 0: // Kein Filter 
     
    123204                                        break; 
    124205                        } 
    125  
    126206                echo "\n</div>"; 
    127207                $cnt++; 
     
    139219function EineGemarkung($AuchGemkZeile) { 
    140220        // Kennzeichen bestehend nur aus Gemarkung-SchlÃŒssel wurde eingegeben 
    141         global $con, $gkz, $gemeinde, $debug, $zgemkg; 
     221        global $con, $gkz, $gemeinde, $epsg, $debug, $zgemkg; 
    142222        $linelimit=120; // max. Fluren je Gemarkung 
    143223        if ($AuchGemkZeile) { 
     
    154234                if ($zgmk == 0) { 
    155235                        echo "\n<div class='gk' title='Gemarkung'>"; 
    156                                 echo "\n\t\t<p class='err'><img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemkg'>"; 
     236                                echo "\n\t\t<p class='err'><img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemarkung'>"; 
    157237                                        echo  " Gemarkung ".$zgemkg." ist unbekannt.</p>"; 
    158238                        echo "\n</div>"; 
    159239                        return; 
    160240                } 
    161                 // > 1 auch möglich ??? 
     241                // > 1 auch möglich? 
    162242                echo "\n<div class='gk' title='Gemarkung'>"; 
    163                         echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemkg'> "; 
    164                         echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$zgemkg."'>";           
     243                        echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemarkung'> "; 
     244                        echo " OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$zgemkg."'>";            
    165245                        echo $gmkg."</a>  (".$zgemkg.")"; // in Gemeinde? 
    166246                echo "\n</div>"; 
     
    177257                echo "\n<div class='fl' title='Flur'>"; 
    178258                        echo "\n\t\t<img class='nwlink' src='ico/Flur.ico' width='16' height='16' alt='Flur'> "; 
    179                         echo "Flur<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$zgemkg."-".$flur."'>&nbsp;".$flur."&nbsp;</a>"; 
     259                        echo "Flur<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$zgemkg."-".$flur."'>&nbsp;".$flur."&nbsp;</a>"; 
    180260                echo "\n</div>"; 
    181261                $zfl++; 
     
    191271function EineFlur() { 
    192272        // Kennzeichen aus Gemarkung und FlurNr wurde eingegeben 
    193         global $con, $gkz, $gemeinde, $debug, $scalefs, $epsg, $auskpath, $zgemkg, $zflur; 
     273        global $con, $gkz, $gemeinde, $epsg, $debug, $scalefs, $auskpath, $zgemkg, $zflur; 
    194274        $linelimit=600; // Wie groß kann eine Flur sein? 
    195275        $sql ="SELECT bezeichnung FROM ax_gemarkung g WHERE g.gemarkungsnummer= $1 ;"; 
     
    205285        if ($zgmk == 0) { 
    206286                echo "\n<div class='gk' title='Gemarkung'>"; 
    207                         echo "\n\t\t<p class='err'><img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemkg'>"; 
     287                        echo "\n\t\t<p class='err'><img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemarkung'>"; 
    208288                                echo  " Gemarkung ".$zgemkg." ist unbekannt.</p>"; 
    209289                echo "\n</div>"; 
     
    211291        } 
    212292        echo "\n<div class='gk' title='Gemarkung'>"; 
    213                 echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemkg'> "; 
    214                 echo "Gemarkung <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$zgemkg."'> ".$gmkg." (".$zgemkg.")</a>"; 
     293                echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemarkung'>"; 
     294                echo " OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$zgemkg."'> ".$gmkg." (".$zgemkg.")</a>"; 
    215295        echo "\n</div>"; 
    216296        echo "\n<div class='fl' title='Flur'>"; 
    217297                echo "\n\t\t<img class='nwlink' src='ico/Flur.ico' width='16' height='16' alt='Flur'> "; 
    218                 echo "Flur <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$zgemkg."-".$zflur."'> ".$zflur."</a>"; 
     298                echo "Flur <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$zgemkg."-".$zflur."'> ".$zflur."</a>"; 
    219299        echo "\n</div>"; 
    220300 
    221301        $sql ="SELECT f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, "; 
    222         $sql.="x(st_transform (st_centroid(f.wkb_geometry), ".$epsg.")) AS x, "; 
    223         $sql.="y(st_transform (st_centroid(f.wkb_geometry), ".$epsg.")) AS y "; 
     302        //      $sql.="x(st_transform (st_centroid(f.wkb_geometry), ".$epsg.")) AS x, "; 
     303        //      $sql.="y(st_transform (st_centroid(f.wkb_geometry), ".$epsg.")) AS y "; 
     304        if($epsg == "25832") { // Transform nicht notwendig 
     305                $sql.="x(st_Centroid(f.wkb_geometry)) AS x, "; 
     306                $sql.="y(st_Centroid(f.wkb_geometry)) AS y "; 
     307        } 
     308        else {   
     309                $sql.="x(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS x, "; 
     310                $sql.="y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y ";                   
     311        } 
    224312   $sql.="FROM ax_flurstueck f WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 "; 
    225313        $sql.="ORDER BY f.zaehler, f.nenner LIMIT $3 ;"; // WHERE f.land= ? 
     
    262350 
    263351        $sql ="SELECT f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, "; 
    264         $sql.="x(st_transform (st_centroid(f.wkb_geometry), ".$epsg.")) AS x, "; 
    265         $sql.="y(st_transform (st_centroid(f.wkb_geometry), ".$epsg.")) AS y, "; 
     352        //      $sql.="x(st_transform (st_centroid(f.wkb_geometry), ".$epsg.")) AS x, "; 
     353        //      $sql.="y(st_transform (st_centroid(f.wkb_geometry), ".$epsg.")) AS y, "; 
     354        if($epsg == "25832") { // Transform nicht notwendig 
     355                $sql.="x(st_Centroid(f.wkb_geometry)) AS x, "; 
     356                $sql.="y(st_Centroid(f.wkb_geometry)) AS y, "; 
     357        } 
     358        else {   
     359                $sql.="x(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS x, "; 
     360                $sql.="y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y ";                   
     361        } 
     362 
    266363        $sql.="g.gemarkungsnummer, g.bezeichnung "; 
    267364   $sql.="FROM ax_flurstueck f JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer "; 
     
    304401if(isset($epsg)) { 
    305402        if ($debug >= 2) {echo "<p>aktueller EPSG='".$epsg."'</p>";     } // aus MB 
    306         if (substr($epsg, 0, 5) == "EPSG:") {$epsg=substr($epsg, 5);} 
     403        $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]);    
    307404} else { 
    308         if ($debug >= 2) {echo "<p class='err'>kein EPSG gesetzt</p>";}  
     405        if ($debug >= 1) {echo "<p class='err'>kein EPSG gesetzt</p>";}  
    309406        $epsg=$gui_epsg; // aus Conf 
    310407} 
     
    320417} 
    321418 
    322 // Eingabe interpretieren 
    323 switch (ZerlegungFsKennz($fskennz)) { 
    324 case 0: 
    325         echo "<p class='err'>Bitte ein Flurst&uuml;ckskennzeichen eingegeben, Format 'gggg-fff-zzzz/nnn</p>"; 
    326         break; 
    327 case 1: 
    328         if ($debug >= 2) {echo "<p>Gemarkungsname ".$zgemkg."</p>";} 
    329         $gnr=SuchGmkgName(); 
     419if(isset($gm)) { // Self-Link aus Gemeinde-Liste  
     420        $gnr=ListGmkgInGemeinde($gm); // Gemarkungen zu dieser Gemeinde listen 
    330421        if ($gnr > 0) { 
    331422                $zgemkg=$gnr; 
    332423                EineGemarkung(false); 
    333424        };       
    334         break; 
    335 case 2: 
    336         if ($debug >= 2) {echo "<p>Gemarkungsnummer ".$zgemkg."</p>";}   
    337         EineGemarkung(true); 
    338         break; 
    339 case 3: 
    340         if ($debug >= 2) {echo "<p>Gemarkung ".$zgemkg." Flur ".$zflur."</p>";} 
    341         EineFlur(); 
    342         break; 
    343 case 4: 
    344         if ($debug >= 2) {echo "<p>Gemarkung ".$zgemkg." Flur ".$zflur." FlurstÃŒck ".$zzaehler."</p>";} 
    345         EinFlurstueck(); 
    346         break; 
    347 case 5: 
    348         if ($debug >= 2) {echo "<p>Gemarkung ".$zgemkg." Flur ".$zflur." FlurstÃŒck ".$zzaehler."/".$znenner."</p>";} 
    349         EinFlurstueck(); 
    350         break; 
     425} else { 
     426        // Die Formular-Eingabe interpretieren (kann auch ein Link sein) 
     427        switch (ZerlegungFsKennz($fskennz)) { 
     428        case 0: // leere Eingabe 
     429                if ($gfilter == 1) { // Die GUI ist bereits auf eine Gemeinde gefiltert 
     430                        SuchGmkgName(); // Gemarkungen listen 
     431                } else { 
     432                        ListGemeinden(); // alle Gemeinden Listen 
     433                } 
     434                break; 
     435        case 1: 
     436                if ($debug >= 2) {echo "<p>Gemarkungsname ".$zgemkg."</p>";} 
     437                $gnr=SuchGmkgName(); 
     438                if ($gnr > 0) { 
     439                        $zgemkg=$gnr; 
     440                        EineGemarkung(false); 
     441                };       
     442                break; 
     443        case 2: 
     444                if ($debug >= 2) {echo "<p>Gemarkungsnummer ".$zgemkg."</p>";}   
     445                EineGemarkung(true); 
     446                break; 
     447        case 3: 
     448                if ($debug >= 2) {echo "<p>Gemarkung ".$zgemkg." Flur ".$zflur."</p>";} 
     449                EineFlur(); 
     450                break; 
     451        case 4: 
     452                if ($debug >= 2) {echo "<p>Gemarkung ".$zgemkg." Flur ".$zflur." FlurstÃŒck ".$zzaehler."</p>";} 
     453                EinFlurstueck(); 
     454                break; 
     455        case 5: 
     456                if ($debug >= 2) {echo "<p>Gemarkung ".$zgemkg." Flur ".$zflur." FlurstÃŒck ".$zzaehler."/".$znenner."</p>";} 
     457                EinFlurstueck(); 
     458                break; 
     459        case 9: 
     460                echo "<p class='err'>Bitte ein Flurst&uuml;ckskennzeichen eingegeben, Format 'gggg-fff-zzzz/nnn</p>"; 
     461                break; 
     462        } 
    351463} 
    352464 
Note: See TracChangeset for help on using the changeset viewer.