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/info/info/alkis/alkisexport.php

    r355 r376  
    66        Der View verkettet Flurstueck - Buchungsstelle - Grundbuch - Eigentuemer 
    77        Die Lagebezeichnung des FlurstÃŒcks wird in ein Feld komprimiert. 
    8         Parameter: gkz=mandant&gmlid=DE...&tabtyp=flurstueck/grundbuch/person 
    9  
    10         2014-01-17 krz f.j. 
    11         2014-01-20 weitere Spalten und verbesserte Formatierung 
    12         2014-01-21 Der View liefert "Rechtsgemeinschaft" nun als Feld in allen Personen-SÀtzen  
    13                         eines GB-Blattes statt als eigenen "Satz ohne Person". 
    14         2014-01-27 Erweiterung auf Filter "strasse" ("gml_id" aus "ax_lagebezeichnungkatalogeintrag") 
    15         2014-09-04 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer 
    16         2014-09-10 Bei Relationen den Timestamp abschneiden 
    17         2014-09-30 RÃŒckbau substring(gml_id) 
    18         2015-12-09 LATIN1 in '' 
     8        Parameter Beispiele:  
     9                ?gkz=mandant&tabtyp=flurstueck/grundbuch/person&gmlid=DE... 
     10                ?gkz=270&tabtyp=gemarkung&gemarkung=2662    
     11                ?gkz=270&gemarkung=2662 
     12        Parameter Beispiele fÃŒr Fehler: 
     13                ?gkz=270&tabtyp=gemarkung&gmlid=2662 
     14                ?gkz=270&tabtyp=flurstueck&gemarkung=2662 
     15                ?gkz=270&tabtyp=flurstueck 
     16                ?gkz=270&gmlid=2662 
     17 
     18        Version 
     19        2016-02-23 Version fuer norGIS-ALKIS-Import 
     20        2016-10-18 Export einer ganzen Gemarkung zulassen (Sonderfall bei den Parametern) 
     21        2016-11-29 Gemeinsam genutzte Datenbanken ermöglichen 
     22 
     23++ ToDo: SQL "exp_csv_str" und "exp_csv_str" optimieren 
    1924*/ 
    2025 
     
    3136        $res=pg_prepare("", $sql); 
    3237        $res=pg_execute("", $v); 
    33         if (!$res) { 
    34                 return "** Fehler bei Lagebezeichnung **"; //.$sql; 
    35         } 
     38        if (!$res) {return "** Fehler bei Lagebezeichnung **";} 
    3639        $j=0; 
    3740        $lagehsnr=""; 
     
    5457// HIER START // 
    5558 
    56 $cntget = extract($_GET); // Parameter aus URL lesen 
     59$gkz=''; $tabtyp = ''; $gemarkung=''; $gmlid=''; // erwartete Parameter initialisieren 
     60$cntget = extract($_GET); // aktuelle Parameter aus URL auslesen 
     61require_once("alkis_conf_location.php"); // Konfiguration laden 
     62include("alkisfkt.php"); // Funktionen der ALKIS-Auskunft laden 
     63 
     64if ($tabtyp == '') { // Parameter (-kombinationen) pruefen 
     65        if ($gemarkung == '') { // Beim Wert "gmlid" MUSS man die Tabelle dazu nennen 
     66                exit ("Fehler: Art des Suchfilters nicht angeben."); 
     67        } else {  // Art des Wertes bestimmt eindeutig den Filter 
     68                $tabtyp = 'gemarkung'; 
     69        } 
     70} elseif ($tabtyp == 'gemarkung') { 
     71        if ($gemarkung == '') { 
     72                exit ("Fehler: Gemarkungsnummer nicht angeben."); 
     73        } 
     74} 
     75if ($gmlid == '') { 
     76        if ($gemarkung == '') { 
     77                exit ("Fehler: Kein Wert fuer die Suche angegeben."); 
     78        } else { // Wert fÃŒr Gemarkungsnummer angegeben 
     79                if ($tabtyp != 'gemarkung') { 
     80                        exit ("Fehler: Falsche Kombination Parameter tabtyp='".$tabtyp."' mit Wert fuer Gemarkungsnummer."); 
     81                } 
     82                $filename='alkis_'.$tabtyp.'_'.$gemarkung.'.csv'; 
     83        } 
     84} else { // alles gut 
     85        $filename='alkis_'.$tabtyp.'_'.$gmlid.'.csv'; 
     86} 
     87 
     88// DOWNLOAD der CSV-Datei vorbereiten (statt HTML-Ausgabe) 
    5789header('Content-type: application/octet-stream'); 
    58 header('Content-Disposition: attachment; filename="alkis_'.$tabtyp.'_'.$gmlid.'.csv"'); 
    59 require_once("alkis_conf_location.php"); 
    60 include("alkisfkt.php"); 
     90header('Content-Disposition: attachment; filename="'.$filename.'"'); 
    6191 
    6292// CSV-Ausgabe: Kopfzeile mit Feldnamen 
     
    6494 
    6595// Datenbank-Verbindung 
    66 $con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass); 
    67 if (!$con) { 
    68         exit("Fehler beim Verbinden der DB"); 
    69 } 
     96$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisexport.php'"); 
     97if (!$con) {exit("Fehler beim Verbinden der DB");} 
    7098pg_set_client_encoding($con, 'LATIN1'); // FÃŒr Excel kein UTF8 ausgeben 
     99 
     100$viewname="exp_csv"; // Standard-View, ist in der Datenbank gespeichert 
     101$v=array($gmlid); // Standard-Filter-Feld 
    71102 
    72103// Der Parameter "Tabellentyp" bestimmt den Namen des Filter-Feldes aus dem View "exp_csv". 
    73104switch ($tabtyp) { // zulaessige Werte fuer &tabtyp= 
    74         case 'flurstueck': $filter = "fsgml"; break; // ax_flurstueck.gml_id 
    75         case 'grundbuch':  $filter = "gbgml"; break; // ax_buchungsblatt.gml_id 
    76         case 'person':     $filter = "psgml"; break; // ax_person.gml_id 
    77         case 'strasse':    $filter = "stgml"; break; // ax_lagebezeichnungkatalogeintrag.gml_id = Straße-GML-ID 
    78         default: exit("Falscher Parameter '".$tabtyp."'"); break; 
     105        case 'flurstueck': // ax_flurstueck.gml_id 
     106                $filter = "fsgml"; 
     107                break; 
     108        case 'grundbuch': // ax_buchungsblatt.gml_id 
     109                $filter = "gbgml"; 
     110                break; 
     111        case 'person': // ax_person.gml_id 
     112                $filter = "psgml"; 
     113                break; 
     114        case 'strasse': // ax_lagebezeichnungkatalogeintrag.gml_id = Straße-GML-ID 
     115                $filter = "stgml"; 
     116                $viewname="exp_csv_str"; // alternativer View mit "_str", ist in der Datenbank gespeichert   
     117                break; 
     118        case 'gemarkung': // SONDERfall als Parameter wird "Gemarkungsnummer" und nicht "gml_id" geliefert 
     119                $filter = "gemarkungsnummer"; 
     120                $v=array($gemarkung); // anderes Filter-Feld, anderer Parameter 
     121                break; 
     122        default: 
     123                exit("Falscher Parameter '".$tabtyp."'"); 
     124                break; 
    79125} 
    80126 
    81127// Daten aus gespeichertem View, zusaetzlich Filter: "feld"='wert' mitgeben 
    82 if ($tabtyp == 'strasse') { // Sonderversion 
    83         $sql="SELECT * FROM exp_csv_str WHERE ".$filter." = $1 "; 
    84 } else { 
    85         $sql="SELECT * FROM exp_csv WHERE ".$filter." = $1 "; 
    86 } 
    87  
    88 $v=array($gmlid); 
     128$sql="SELECT * FROM ".$viewname." WHERE ".$filter." = $1 "; 
     129 
    89130$res=pg_prepare("", $sql); 
    90131$res=pg_execute("", $v); 
     
    106147        $flstnummer=$row["zaehler"]; 
    107148        $nenner=$row["nenner"]; 
    108         if ($nenner > 0) {$flstnummer.="/".$nenner;} // BruchNr 
     149        // Bruchnummer kann in Excel als Datum interpretiert werden. In '' setzen. 
     150        if ($nenner > 0) {$flstnummer="'".$flstnummer."/".$nenner."'";} // BruchNr 
    109151        $fs_flae=$row["fs_flae"]; // amtliche Fl. aus DB-Feld 
    110152 
     
    140182                        $rechtsg=$row["nam_bes"]; // Beschrieb der Rechtsgemeinschaft 
    141183                } else { 
    142                         $rechtsg=rechtsgemeinschaft($nam_adr); // EntschlÃŒsseln 
     184                //      $rechtsg=rechtsgemeinschaft($nam_adr); // EntschlÃŒsseln 
     185                        $rechtsg=$row["nam_adrv"]; // Art der Rechtsgemeischaft (Value zum Key) 
    143186                } 
    144187        } 
     
    148191        $nana=$row["nachnameoderfirma"]; 
    149192        $namteil=$row["namensbestandteil"]; 
    150         $name=anrede($row["anrede"]); 
     193        //$name=anrede($row["anrede"]);   
     194        $name=$row["anrv"]; // Anrede (Value zum Key) 
    151195        if ($name != "") {$name.=" ";} // Trenner 
    152196        if ($namteil != "") {$name.=$namteil." ";} // von und zu 
Note: See TracChangeset for help on using the changeset viewer.