Ignore:
Timestamp:
12/01/16 12:43:03 (7 years ago)
Author:
frank.jaeger
Message:

Verbesserungen an der ALKIS-Buchauskunft (Geschwindigkeit, Fehlerkorrekturen, Mandantenfähigkeit) und an der Mapbender2-Navigation.

File:
1 edited

Legend:

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

    r356 r376  
    11<?php 
    2 /* Version vom  
    3         2013-04-26      "import_request_variables" entfÀllt in PHP 5.4. 
    4                                 ZurÃŒck-Link, Titel der Transaktion anzeigen 
    5         2013-04-29      Test mit IE 
    6         2013-05-07      Strukturierung des Programms 
    7         2013-05-14      Feinkorrekturen 
    8         2013-05-15      Gruppierung nach Gemeinde, mehrfache HsNr (ap_pto.advstandardmodell) unterdrÃŒcken, Icon f. Straße 
    9         2014-01-23      Link zum Auskunft-Modul fÃŒr Straße 
    10         2014-09-03      PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer 
    11         2014-09-15      Bei Relationen den Timestamp abschneiden, mehr "endet IS NULL" 
    12         2014-09-30      RÃŒckbau substring(gml_id) 
    13         2015-12-10      Umstellen .ico auf .png, Vermeidung nicht initialisierter Variable 
     2/*      Navigation mit ALKIS-Daten im Mapbender 2.7 - Teil Adressen-Suche  
     3        Diese Version des Programms verwendet die Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 
     4 
     5Version vom  
     6        2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 
     7        2016-03-02 $gemeinde auf feste LÀnge korrigieren 
     8        2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen 
    149 
    1510        ToDo: 
     
    2722 
    2823$cntget = extract($_GET); 
     24$gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); // temporÀr 
    2925include("../../conf/alkisnav_conf.php"); 
    3026include("alkisnav_fkt.php"); // Funktionen 
    31 $con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password; 
    32 $con = pg_connect ($con_string) or die ("Fehler bei der Verbindung zur Datenbank ".$$dbname.$dbvers.$gkz); 
     27$con = pg_connect ($dbconn) or die ("Fehler bei der Verbindung zur Datenbank ".$dbpre.$dbgkz); 
    3328 
    3429echo <<<END 
    35  
    36 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    37 <html> 
     30<!doctype html> 
     31<html lang="de"> 
    3832<head> 
    3933        <meta http-equiv="cache-control" content="no-cache"> 
    4034        <meta http-equiv="pragma" content="no-cache"> 
    4135        <meta http-equiv="expires" content="0"> 
    42         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     36        <meta charset="utf-8"> 
    4337        <title>ALKIS-Suche Adressen</title> 
    4438        <link rel="stylesheet" type="text/css" href="alkisnav.css"> 
     
    6357END; 
    6458 
    65 function suchStrName() { // Strassen nach Name(-nsanfang) 
     59function suchStrName() { 
     60        // Strassen nach Name(-nsanfang) 
    6661        global $street, $scalestr, $str_schl, $gkz, $gemeinde, $epsg, $gfilter, $debug, $auskpath; 
    67         $linelimit=120;  // -> in die Conf? 
    68         $str_schl=""; // Loeschen vorheriges Ergebnis 
    69         preg_match("/^(\D+)(\d*)(\D*)/",$street,$matches); # 4 matches name/nr/zusatz echo "match: ".$matches[1].",".$matches[2].",".$matches[3]; 
     62        //if ($debug > 1) {echo "<p class='dbg'>function suchStrName()<p>";} // Ablauf-Verfolgung 
     63 
     64        $linelimit=120;  // -> in Conf? 
     65        $str_schl=""; // Loeschen vorh. Ergebnis 
     66        preg_match("/^(\D+)(\d*)(\D*)/",$street,$matches); # 4 matches name/nr/zusatz  
     67        //echo "match: 1='".$matches[1]."', 2='".$matches[2]."', 3='".$matches[3]."'"; 
    7068        $matches[1] = preg_replace("/strasse/i","str", $matches[1]); 
    7169        $matches[1] = preg_replace("/str\./i","str", $matches[1]);  
     70 
    7271        if(preg_match("/\*/",$matches[1])){ 
    7372                $match=trim(preg_replace("/\*/i","%", strtoupper($matches[1]))); 
     
    7574                $match=trim($matches[1])."%"; 
    7675        } 
     76 
    7777        $sql ="SELECT g.gemeinde, g.bezeichnung AS gemname, k.gml_id, k.bezeichnung, k.schluesselgesamt, k.lage  
    7878        FROM ax_lagebezeichnungkatalogeintrag k  
    7979        JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde  
    8080        WHERE k.bezeichnung ILIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 
     81 
    8182        switch ($gfilter) { 
    8283                case 1: // Einzelwert 
     
    114115                $skey=$row["lage"]; // Nur Str.-schl. daraus 
    115116                $kgml=$row["gml_id"]; // ID von Katalog 
    116  
    117 // +++ in function_zeile_strasse() 
    118                 $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");   
    119                 echo "\n\t<div class='stl' title='Stra&szlig;enschl&uuml;ssel ".$skey."'>"; 
    120                 // Icon -> Buchnachweis 
    121                 echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$kgml."\")'>"; 
    122                         echo "\n\t\t<img class='nwlink' src='ico/Lage_mit_Haus.png' width='16' height='16' alt='STR' title='Stra&szlig;e'>"; 
    123                 echo "\n\t</a>"; 
    124                 echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;str_schl=".$gkey."'>".$sname."</a>"; 
    125                 echo "</div>"; 
    126 // +++ function ende 
     117                $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); 
     118                zeile_strasse ($gkey, $skey, $sname, $kgml, $gemname); 
    127119                $cnt++; 
    128120        } 
    129121 
    130122        if($cnt == 0) { 
    131                 echo "<pclass='anz'>Keine Stra&szlig;e</p>"; 
     123                echo "\n<p class='anz'>Keine Stra&szlig;e</p>"; 
     124                //if ($debug > 2) {echo "<p class='err'>SQL = '".$sql."'<br>$1 = '".$match."'<p>";} 
    132125        } elseif($cnt == 1) { // Eindeutig 
    133126                $str_schl=$gkey; // dann gleich weiter 
    134127        } elseif($cnt >= $linelimit) { 
    135                 echo "<p class='anz'>".$cnt." Stra&szlig;en ... und weitere</p>";                        
     128                echo "\n<p class='anz'>".$cnt." Stra&szlig;en ... und weitere</p>";                      
    136129        } elseif ($cnt > 1) { 
    137130                echo "\n<p class='anz'>".$cnt." Stra&szlig;en</p>";      
     
    142135function suchStrKey() { // Strassen nach num. Schluessel 
    143136        global $street, $scalestr, $str_schl, $gkz, $gemeinde, $epsg, $gfilter, $debug, $auskpath; 
     137        //if ($debug > 1) {echo "<p class='dbg'>function suchStrKey()<p>";} // Ablauf-Verfolgung 
    144138        $linelimit=60; 
    145139        if(preg_match("/\*/",$street)) { 
     
    177171                $skey=$row["lage"]; 
    178172                $kgml=$row["gml_id"]; // ID von Katalog  
    179                  
    180 // +++ in function_zeile_strasse() 
    181                 echo "\n\t<div class='stl' title='Stra&szlig;enschl&uuml;ssel ".$skey."'>"; 
    182  
    183                         // Icon -> Buchnachweis 
    184                         echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$kgml."\")'>"; 
    185                                 echo "\n\t\t<img class='nwlink' src='ico/Lage_mit_Haus.png' width='16' height='16' alt='STR' title='Stra&szlig;e'>"; 
    186                         echo "\n\t</a>"; 
    187                  
    188                         echo $skey." <a class='st' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;str_schl=".$gkey."' title='".$gemname."'>".$sname; 
    189                         echo "</a>"; 
    190                         switch ($gfilter) { 
    191                                 case 0: // Kein Filter 
    192                                         echo " in ".$gemname; 
    193                                         break; 
    194                                 case 2: // Liste 
    195                                         echo " in ".$gemname; 
    196                                         break; 
    197                         } 
    198                 echo "</div>"; 
    199 // function ende 
    200  
     173                zeile_strasse ($gkey, $skey, $sname, $kgml, $gemname); 
    201174                $cnt++; 
    202175        } 
     
    215188function suchHausZurStr($showParent) { // Haeuser zu einer Strasse 
    216189        global $str_schl, $gkz, $scalestr, $scalehs, $epsg, $gemeinde, $epsg, $gfilter, $debug, $auskpath; 
     190        //if ($debug > 1) {echo "<p class='dbg'>function suchHausZurStr()<p>";} // Ablauf-Verfolgung 
    217191 
    218192        // Head 
     
    256230                        $sqlko.="WHERE o.land= $1 AND o.regierungsbezirk= $2 AND o.kreis= $3 AND o.gemeinde= $4 AND o.lage= $5 ";        
    257231                        $sqlko.="LIMIT 1;"; // die erstbeste Koordinate 
     232 
    258233                        $v=array($land,$regb,$kreis,$gemnd,$nr); 
    259234                        $resko=pg_prepare("", $sqlko); 
     
    267242                        } 
    268243 
     244                        // "function zeile_strasse()" hier nicht verwendbar. ZusÀtzlicher Map-Link mit Koordinate  
    269245                        // Icon -> Buchnachweis 
    270246                        echo "\n\t<br><a href='javascript:imFenster(\"".$auskpath."alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$kgml."\")'>"; 
     
    371347        $epsg=$gui_epsg; // aus Conf 
    372348} 
     349 
     350// Filter auf Zustaendigkeit z.B. ein Stadtgebiet 
    373351if ($gemeinde == "") { 
    374352        $gfilter = 0; // ungefiltert 
     
    378356        $gfilter = 2; // Liste 
    379357} 
    380  
    381 // +++  Zerlegung Eingabe aus "Balken" von Buchauskunft "Lage": 
    382 //              Numerisch: Gem-Str-Haus-lfd 
    383  
    384 if ($str_schl != "") { // aus Link 
     358// ax_lagebezeichnungkatalogeintrag.gemeinde: z.B. Classic='40' / NorBit  = '040' 
     359// Im Mapbender mit fuehrenden Nullen eingeben: gazetteer_alkis.SRC 
     360// alkisnav.htm?..&gemeinde=040&.. 
     361 
     362// +++Zerlegung Eingabe aus "Balken" von Buchauskunft "Lage": Numerisch: Gem-Str-Haus-lfd 
     363 
     364if ($str_schl != "") { // Wert kommt aus aus Link 
    385365        $trans="Hausnummern zur Stra&szlig;e"; 
    386366        suchHausZurStr(true); 
    387 } elseif($street != "") { // Eingabe in Form 
    388         if (trim($street, "*,0..9") == "") { // Zahl, ggf. mit Wildcard 
     367// Wert aus Eingabe in Formular 
     368} elseif($street != "") {  
     369        if (trim($street, "*,0..9, ") == "") { // Zahl, ggf. mit Wildcard 
    389370                $trans="Suche Stra&szlig;enschl&uuml;ssel \"".$street."\""; 
    390371                suchStrKey(); 
    391         } else { 
     372        } else { // Name suchen 
    392373                $trans="Suche Stra&szlig;enname \"".$street."*\""; 
    393374                suchStrName(); 
     
    402383 
    403384// Nach Durchlaufen des PHP-Scriptes die zuletzt ausgefÃŒhrte Transaktion  
    404 // im Kopf des Ergebnisrahmens anzeigen. 
     385//  im Kopf des Ergebnisrahmens anzeigen. 
    405386// Dazu die im HTML-Header definierte Javascript-Function benutzen. 
    406387// Alternativ wird auch aus dem Javascript "positionieren Karte" dieser Titel gesetzt. 
Note: See TracChangeset for help on using the changeset viewer.