Ignore:
Timestamp:
11/09/18 14:17:35 (5 years ago)
Author:
frank.jaeger
Message:

Anpassung der ALKIS-Auskunft (PHP) an die Full-Schema-Version des ALKIS-Importers 3.0

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/info/info/alkisn/alkisexport.php

    r405 r412  
    1212                ?gkz=mandant&tabtyp=strasse&haus=m&gmlid=DE...   Filter &haus=m/o = mit oder ohne Hausnummer 
    1313                ?gkz=mandant&tabtyp=strasse&haus=o               bei Strasse auch ohne gmlid zulÀssig - nicht verwenden wenn aus NBA unscharf geladen 
     14                ?gkz240,tabtyp=flstliste&gmlliste=DE...,DE.... 
    1415        Beispiele fÃŒr Fehler: 
    1516                ?gkz=270&tabtyp=gemarkung&gmlid=2662 
     
    2930        2017-12-20 Nur eine Adresse zur Person (Siehe Views in "views_exp_csv.sql") 
    3031        2018-05-03 Aufruf aus neuem GrundstÃŒcksnachweis: tabtyp='buchung', angepasster View "exp_csv" notwendig 
     32        2018-10-16 Neuer Aufruf-Typ aus der rÀumlichen Selektion, &tabtyp=flstliste&prefix=DENW15&gmlliste=AL...,AL.... 
    3133 
    3234        ToDo: 
     
    7375 
    7476// strikte Validierung aller Parameter 
    75 if (!isset($gmlid) or !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
     77if ( isset($gmlid) ) { 
     78        if ( !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
     79} else { 
     80        $gmlid=""; 
     81} 
     82 
     83// FS-Limit? x (16+1) =  
     84if ( isset($gmlliste) ) { 
     85        if (!preg_match("#^[0-9A-Za-z,]{16,2000}$#", $gmlliste)) { 
     86        //      echo "\n<p>gmlliste=".$gmlliste."</p>\n";   // NUR TEST 
     87                die("Eingabefehler gmlliste"); 
     88        } 
     89} 
     90 
    7691if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
    7792if (isset($gemarkung)) { 
     
    118133                $filename='alkis_'.$tabtyp.'_'.$gemarkung.'.csv'; 
    119134 
    120 /*      // $gmlid zu strasse noch notwendig solange kein Filter auf "Gemeinde" verwendet wird. 
     135/*      // $gmlid zu strasse ist noch notwendig solange kein Filter auf "Gemeinde" verwendet wird. 
    121136        } elseif ($haus == 'm' or $haus == 'o') { // Sonderfall 2 - alle mit/ohne Hausnummer, nur ÃŒber View "exp_csv_str" möglich 
    122137                if ($tabtyp != 'strasse') { 
     
    130145                } 
    131146*/ 
     147        } elseif ($gmlliste != '') { // Sonderfall 3 - FlurstÃŒcke aus rÀumlicher Selection 
     148                if ($tabtyp != 'flstliste') { 
     149                        $err = "Fehler: Falsche Kombination Parameter tabtyp='".$tabtyp."' mit Liste der GML-ID."; 
     150                        echo "\n".$err; exit ($err); 
     151                } 
     152                if (!isset($prefix) or !preg_match("#^[A-Z0-9,]{6}$#", $prefix)) { 
     153                        die("Eingabefehler prefix"); 
     154                } 
     155                $filename='alkis_gebiet.csv'; // RÀumliche Selection 
     156 
    132157        } else { 
    133158                $err="\nFehler: Kein passender Wert fuer die Suche angegeben."; 
     
    151176pg_set_client_encoding($con, 'LATIN1'); // FÃŒr Excel kein UTF8 
    152177 
    153 $viewname="exp_csv"; // Standard-View, in der DB gespeichert 
     178//$viewname="exp_csv"; // Standard-View, in der DB gespeichert 
    154179$v=array($gmlid); // Standard-Filter-Feld 
    155180 
    156181// Der Parameter "Tabellentyp" bestimmt den Namen des Filter-Feldes aus dem View "exp_csv". 
    157182switch ($tabtyp) { // zulaessige Werte fuer &tabtyp= 
     183 
    158184        case 'flurstueck': // ax_flurstueck.gml_id 
    159                 $filter = "fsgml"; 
    160                 break; 
     185                $sql="SELECT * FROM exp_csv WHERE fsgml = $1 "; 
     186                break; 
     187 
    161188        case 'grundbuch': // ax_buchungsblatt.gml_id 
    162                 $filter = "gbgml"; 
    163                 break; 
     189                $sql="SELECT * FROM exp_csv WHERE gbgml = $1 "; 
     190                break; 
     191 
    164192        case 'buchung': // ax_buchungsstelle.gml_id 
    165                 $filter = "gsgml"; 
    166                 break; 
     193                $sql="SELECT * FROM exp_csv WHERE gsgml = $1 "; 
     194                break; 
     195 
    167196        case 'person': // ax_person.gml_id 
    168                 $filter = "psgml"; 
    169                 break; 
     197                $sql="SELECT * FROM exp_csv WHERE psgml = $1 "; 
     198                break; 
     199 
    170200        case 'strasse': // ax_lagebezeichnungkatalogeintrag.gml_id = Straße-GML-ID 
    171                 $filter = "stgml"; 
    172                 $viewname="exp_csv_str"; // alternativer View mit "_str", ist in der Datenbank gespeichert   
    173                 break; 
     201                // alternativer View mit "_str", ist in der Datenbank gespeichert 
     202                $sql="SELECT * FROM exp_csv_str WHERE stgml = $1 "; 
     203                break; 
     204 
    174205        case 'gemarkung': // SONDERfall als Parameter wird "Gemarkungsnummer" und nicht "gml_id" geliefert 
    175                 $filter = "gemarkungsnummer"; 
    176                 $v=array($gemarkung); // anderes Filter-Feld, anderer Parameter 
    177                 break; 
     206                $sql="SELECT * FROM exp_csv WHERE gemarkungsnummer = $1 "; 
     207                $v=array($gemarkung); 
     208                break; 
     209 
     210        case 'flstliste': 
     211        // Ganze IN-Liste als $1 in SQL bringt kein Ergebnis. 
     212        // GML-ID aufgeteilt: 6 Byte konstant, 10 Byte variabel in Liste 
     213        //$prefix vor JEDES Element setzen oder mit Substrings suchen? 
     214        //      $sql="SELECT * FROM exp_csv WHERE fsgml IN ('".str_replace(",", "','", $gmlliste)."')"; // komplette GML-ID in Liste 
     215                $sql="SELECT * FROM exp_csv WHERE substring(fsgml from 1 for 6) = $1 " 
     216                        ." AND substring(fsgml from 7 for 10) IN ('".str_replace(",", "','", $gmlliste)."')"; 
     217                $v=array($prefix); 
     218                break; 
     219 
    178220        default: 
    179221                $err="\nFalscher Parameter '".$tabtyp."'"; 
     
    182224} 
    183225 
    184 // Daten aus gespeichertem View, zusaetzlich Filter: "feld"='wert' mitgeben 
    185 $sql="SELECT * FROM ".$viewname." WHERE ".$filter." = $1 "; 
    186  
    187226if ($haus == 'm' or $haus == 'o') { // nur FS mit/ohne verschl. Lagebez. 
    188         if ($gmlid == '') { // m/o-Filter als einziger Filter 
    189                 $sql="SELECT * FROM ".$viewname." WHERE fall='".$haus."' "; // Ersetzen 
    190                 $v=array(); // kein Filter-Feld 
    191                 // ToDo: Filter auf Gemeinde notwendig, wenn nicht auf strasse gefiltert wird. 
    192                 // - Sonst Ausgabe von Rand-FlurstÃŒcken (bei geometrischer Filterung des NBA-Verfahrens) 
    193                 // - Sonst ggf. Ausgabe Kreisgebiet 
    194         } else { // als zusÀtzlicher Filter AND 
    195                 $sql.="AND fall='".$haus."' "; // m/o-Filter AnhÀngen 
    196         } 
     227//      if ($gmlid == '') { // m/o-Filter als einziger Filter 
     228//              $sql="SELECT * FROM ".$viewname." WHERE fall='".$haus."' "; // Ersetzen 
     229//              $v=array(); // kein Filter-Feld 
     230//              // ToDo: Filter auf Gemeinde notwendig, wenn nicht auf strasse gefiltert wird. 
     231//              // - Sonst Ausgabe von Rand-FlurstÃŒcken (bei geometrischer Filterung des NBA-Verfahrens) 
     232//              // - Sonst ggf. Ausgabe Kreisgebiet 
     233//      } else { // als zusÀtzlicher Filter AND 
     234                $sql.=" AND fall='".$haus."' "; // m/o-Filter AnhÀngen 
     235//      } 
    197236} 
    198237 
     
    311350pg_free_result($res); 
    312351if ($i == 1) { // nur Kopf 
    313         $err="\nKein Treffer fuer gml_id='".$gmlid."'"; 
     352        if ( $gmlid == '' ) { 
     353                $err="\nKein Treffer"; 
     354        //      echo "\n".$sql."\n".$v[0]."\n".$dbconn."\n"; 
     355        } else { 
     356                $err="\nKein Treffer fuer gml_id='".$gmlid."'"; 
     357        } 
    314358        exit ($err); 
    315359} 
Note: See TracChangeset for help on using the changeset viewer.