Ignore:
Timestamp:
12/30/21 17:49:00 (2 years ago)
Author:
frank.jaeger
Message:

Web-GIS-Auskunft und Mapbender2-Navigation: neue Konfigurations-Parameter und verbessertes Grundbuch-Modul

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/mapbender/http/nav/alkisnav_adr.php

    r413 r425  
    88        2018-02-15 Strikte Input-Validation der Parameter 
    99        2018-11-12 Full-Schema 
     10        2021-11-24 Neue Var. $katamtmix  (Kataster-Amt-Mix). 
     11                   SchlÃŒsseltabellen sind mehrfach belegt. Dadurch doppelte Treffer bei der Suche. 
     12 
    1013ToDo: 
    1114        -       Gruppierung (mit Zeile) der Straßenliste nach Gemeinde 
     
    4750        $gfilter = 0; 
    4851} 
    49 // // http://skrzmaptest01.asp.krzwan.de/mapbender/nav/alkisnav_adr.php?gkz=210&gemeinde=004&epsg=25832&str_schl=0575800401798 
    5052if (isset($str_schl) ) { 
    5153        if (!preg_match('#^[0-9]{4,13}$#', $str_schl)) {die("Eingabefehler Stra&zlig;enschlüssel");} 
     
    9092function suchStrName() { 
    9193        // Strassen nach Name(-nsanfang) 
    92         global $street, $scalestr, $str_schl, $gkz, $gemeinde, $epsg, $gfilter, $debug, $auskpath; 
     94        global $street, $scalestr, $str_schl, $gkz, $gemeinde, $epsg, $gfilter, $debug, $auskpath, $katamtmix; 
    9395        //if ($debug > 1) {echo "<p class='dbg'>function suchStrName()<p>";} // Ablauf-Verfolgung 
    9496 
    9597        $linelimit=120;  // -> in Conf? 
    96         $str_schl=""; // Loeschen vorh. Ergebnis 
     98        $str_schl=""; // Löschen vorh. Ergebnis 
    9799        preg_match("/^(\D+)(\d*)(\D*)/",$street,$matches); # 4 matches name/nr/zusatz  
    98100        //echo "match: 1='".$matches[1]."', 2='".$matches[2]."', 3='".$matches[3]."'"; 
     
    108110        $sql ="SELECT g.gemeinde, g.bezeichnung AS gemname, k.gml_id, k.bezeichnung, k.schluesselgesamt, k.lage " 
    109111        ."FROM ax_lagebezeichnungkatalogeintrag k " 
    110         ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde " 
    111         ."WHERE k.bezeichnung ILIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 
     112        ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde "; 
     113        if ($katamtmix){$sql.="AND substr(k.gml_id,1,6) = substr(g.gml_id,1,6) ";} 
     114        $sql.="WHERE k.bezeichnung ILIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 
    112115 
    113116        switch ($gfilter) { 
     
    143146                        $gwgem=$gemname; 
    144147                } 
    145                 $gkey=$row["schluesselgesamt"]; // Land-RegBez-Kreis-Gem-Strasse - fÃŒr weitere Suche 
     148                $gkey=$row["schluesselgesamt"]; // Land-RegBez-Kreis-Gem-Straße - fÃŒr weitere Suche 
    146149                $skey=$row["lage"]; // Nur Str.-schl. daraus 
    147150                $kgml=$row["gml_id"]; // ID von Katalog 
     
    164167} 
    165168 
    166 function suchStrKey() { // Strassen nach num. Schluessel 
    167         global $street, $scalestr, $str_schl, $gkz, $gemeinde, $epsg, $gfilter, $debug, $auskpath; 
     169function suchStrKey() { // Straßen nach num. SchlÃŒssel 
     170        global $street, $scalestr, $str_schl, $gkz, $gemeinde, $epsg, $gfilter, $debug, $auskpath, $katamtmix; 
    168171        //if ($debug > 1) {echo "<p class='dbg'>function suchStrKey()<p>";} // Ablauf-Verfolgung 
    169172        $linelimit=60; 
     
    174177                $match=str_pad($street, 5, "0", STR_PAD_LEFT); // "Wie eine Zahl" verarbeiten  
    175178        } 
     179 
    176180        $sql ="SELECT g.bezeichnung AS gemname, k.gml_id, k.bezeichnung, k.schluesselgesamt, k.lage " 
    177181        ."FROM ax_lagebezeichnungkatalogeintrag as k " 
    178         ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde " 
    179         ."WHERE k.lage LIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 
     182        ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde "; 
     183        if ($katamtmix){$sql.="AND substr(k.gml_id,1,6) = substr(g.gml_id,1,6) ";} 
     184        $sql.="WHERE k.lage LIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 
    180185        switch ($gfilter) { 
    181186                case 1: // Einzelwert 
     
    217222} 
    218223 
    219 function suchHausZurStr($showParent) { // Haeuser zu einer Strasse 
    220         global $str_schl, $gkz, $scalestr, $scalehs, $epsg, $gemeinde, $epsg, $gfilter, $debug, $auskpath; 
     224function suchHausZurStr($showParent) { // HÀuser zu einer Straße 
     225        global $str_schl, $gkz, $scalestr, $scalehs, $epsg, $gemeinde, $epsg, $gfilter, $debug, $auskpath, $katamtmix; 
    221226        //if ($debug > 1) {echo "<p class='dbg'>function suchHausZurStr()<p>";} // Ablauf-Verfolgung 
    222227 
    223228        // Head 
    224         // Strasse zum Strassenschluessel 
     229        // Straße zum StrassenschlÃŒssel 
    225230        $sql ="SELECT g.bezeichnung AS gemname, k.gml_id AS kgml, k.bezeichnung, k.land, k.regierungsbezirk, k.kreis, k.gemeinde, k.lage " 
    226231        ."FROM ax_lagebezeichnungkatalogeintrag as k " 
    227         ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde " 
    228         ."WHERE k.schluesselgesamt = $1 AND k.endet IS NULL AND g.endet IS NULL LIMIT 1";  
    229  
    230         $v=array($str_schl);    // Schluessel-Gesamt .. 
     232        ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde "; 
     233        if ($katamtmix){$sql.="AND substr(k.gml_id,1,6) = substr(g.gml_id,1,6) ";} 
     234        $sql.="WHERE k.schluesselgesamt = $1 AND k.endet IS NULL AND g.endet IS NULL LIMIT 1";  
     235 
     236        $v=array($str_schl);    // SchlÃŒssel-Gesamt .. 
    231237        $res=pg_prepare("", $sql); 
    232238        $res=pg_execute("", $v); 
     
    238244 
    239245        if($row = pg_fetch_array($res)) { // .. gefunden 
    240                 $kgml=$row["kgml"]; // ID aus Katalog 
     246                $kgml=$row["kgml"];     // ID aus Katalog 
    241247                $sname=$row["bezeichnung"]; 
    242248                $land =$row["land"];    // Einzel-Felder fÃŒr JOIN _lagebezeichnung_ 
     
    247253                $gemname=htmlentities($row["gemname"], ENT_QUOTES, "UTF-8"); 
    248254                if ($showParent) { 
    249                         // EINE Koordinate zur Strasse besorgen 
     255                        // EINE Koordinate zur Straße besorgen 
    250256                        // ax_Flurstueck >zeigtAuf> ax_LagebezeichnungOhneHausnummer 
    251257                        $sqlko ="SELECT "; 
     
    300306 
    301307                // Body 
    302                 // Haeuser zum Strassenschluessel 
     308                // HÀuser zum StraßenschlÃŒssel 
    303309                $sql="SELECT min(replace(h.hausnummer,' ','')) AS hsnr, "; 
    304310                if($epsg == "25832") { // Transform nicht notwendig 
     
    348354                        $cnt++; 
    349355                        $count++; 
    350                         if($count == 7) { // Max. Hausnummern je Zeile (Test: 3stellige HsNr mit Zusatz) 
     356                        if($count == 7) { // Max. HausNr je Zeile (Test: 3stellige HsNr mit Zusatz) 
    351357                                echo "\n</tr>"; 
    352358                                $count = 0; 
     
    363369        return; 
    364370} 
    365 // =========== 
     371 
    366372// Start hier! 
    367 // =========== 
    368373 
    369374// Validation: Eingabefeld aus Formular. 
    370 // Suchbegriff (Straßenname) oder StraßenschlÃŒssel. 
     375// Suchbegriff Straßenname oder StraßenschlÃŒssel. 
    371376// Hier formatierte Meldung und html-Foot. 
    372377if (isset($street) and $street != "" ) { 
     
    398403} 
    399404 
    400 // Nach Durchlaufen des PHP-Scriptes die zuletzt ausgefÃŒhrte Transaktion  
    401 //  im Kopf des Ergebnisrahmens anzeigen. 
     405// Nach Durchlaufen des PHP-Scriptes die zuletzt ausgefÃŒhrte Transaktion im Kopf des Ergebnisrahmens anzeigen. 
    402406// Dazu die im HTML-Header definierte Javascript-Function benutzen. 
    403407// Alternativ wird auch aus dem Javascript "positionieren Karte" dieser Titel gesetzt. 
Note: See TracChangeset for help on using the changeset viewer.