Changeset 378 for trunk


Ignore:
Timestamp:
02/23/17 15:15:21 (3 years ago)
Author:
frank.jaeger
Message:

Sortierung und Filter bei CSV-Export zur "Straße"

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/import/norgis_alkis_pp/postcreate.de/x_classic2norgis.sql

    r376 r378  
    99--  2016-12-01 exp_csv: Fehlerkorrektur bei EntschlÃŒsselung der Buchungsart 
    1010--             Optimierte Version (ohne Doppelverbindung) 
     11--  2017-02-23 Spalte "fall" aus View "flst_an_strasse" im View "exp_csv_str" ausgeben. 
     12--             Darauf basiert ein neuer Filter im Programm "alkisexport.php". 
     13--                      Sortierung FS-Kennz. repariert in Views "exp_csv" und "exp_csv_str" 
    1114 
    1215-- ToDo: Auch den View "flst_an_strasse" möglist nicht in andere Views einbinden. 
     
    486489    AND dien.endet IS NULL 
    487490 
    488 ORDER BY fsgml,      -- f.flurstueckskennzeichen,  
     491ORDER BY fs_kennz,   -- f.flurstueckskennzeichen,  
     492      -- fsgml,       
    489493         gb_bezirk,  -- gb.bezirk,  
    490494         gb_blatt,   -- gb.buchungsblattnummermitbuchstabenerweiterung, 
     
    595599-- 2016-12-01: Neue schnellere Version unter Vermeidung von "doppelverbindung": 
    596600--              Etwa um den Faktor 2,5 schneller als die alte Version 
     601-- 2017-02-23: Spalte fall aus View "flst_an_strasse" als Spalte ausgeben. 
     602--             Darauf basiert ein neuer Filter im Programm "alkisexport.php" 
    597603 
    598604-- ToDo: Den View "flst_an_strasse" möglichst auch nicht im Views verwenden. 
    599 --       Ist 4-fach-Union schneller ?? 
     605--       Ist 4-fach-Union ectl. schneller ?? 
    600606 
    601607DROP VIEW IF EXISTS exp_csv_str; 
     
    606612    l.stgml,                                             -- Filter: gml_id aus "ax_lagebezeichnungkatalogeintrag" 
    607613                                                         -- UNTERSCHIED zu exp_csv 
     614    l.fall,                                              -- mit/ohne Hausnummer zur Lage 
    608615  -- F l u r s t ÃŒ c k 
    609616    f.gml_id                             AS fsgml,       -- möglicher Filter FlurstÃŒcks-GML-ID 
     
    687694    l.stgml,                                             -- Filter: gml_id aus "ax_lagebezeichnungkatalogeintrag" 
    688695                                                         -- UNTERSCHIED zu exp_csv 
     696    l.fall,                                              -- mit/ohne Hausnummer zur Lage 
    689697  -- F l u r s t ÃŒ c k 
    690698    f.gml_id                             AS fsgml,       -- möglicher Filter FlurstÃŒcks-GML-ID 
     
    764772    AND dien.endet IS NULL 
    765773 
    766 ORDER BY fsgml,      -- f.flurstueckskennzeichen,  
     774ORDER BY fs_kennz,   -- f.flurstueckskennzeichen,  
    767775         gb_bezirk,  -- gb.bezirk,  
    768776         gb_blatt,   -- gb.buchungsblattnummermitbuchstabenerweiterung, 
  • trunk/info/info/alkisn/alkisexport.php

    r377 r378  
    11<?php 
    22/*      Modul alkisexport.php 
    3         CSV-Export von ALKIS-Daten zu einem Flurstueck, Grundbuch oder EigentÃŒmer. 
     3        CSV-Export von ALKIS-Daten zu einem Flurstueck, Grundbuch, EigentÃŒmer oder Straße. 
    44        Es wird eine GML-ID ÃŒbergeben. 
    55        Es wird ein gespeicherter View verwendet, der nach der gml_id gefiltert wird.  
     
    77        Die Lagebezeichnung des FlurstÃŒcks wird in ein Feld komprimiert. 
    88        Parameter Beispiele:  
    9                 ?gkz=mandant&tabtyp=flurstueck/grundbuch/person&gmlid=DE... 
    10                 ?gkz=270&tabtyp=gemarkung&gemarkung=2662    
     9                ?gkz=mandant&tabtyp=flurstueck/grundbuch/person/strasse&gmlid=DE...  Standard 
     10                ?gkz=270&tabtyp=gemarkung&gemarkung=2662         Sonderfall ganze Gemarkung 
    1111                ?gkz=270&gemarkung=2662 
    12         Parameter Beispiele fÃŒr Fehler: 
     12                ?gkz=mandant&tabtyp=strasse&haus=m&gmlid=DE...   Filter &haus=m/o = mit oder ohne Hausnummer 
     13                ?gkz=mandant&tabtyp=strasse&haus=o               bei Strasse auch ohne gmlid zulÀssig - nicht verwenden wenn aus NBA unscharf geladen 
     14        Beispiele fÃŒr Fehler: 
    1315                ?gkz=270&tabtyp=gemarkung&gmlid=2662 
    1416                ?gkz=270&tabtyp=flurstueck&gemarkung=2662 
     
    1719 
    1820        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 
     21        2016-02-23      Version fuer norGIS-ALKIS-Import 
     22        2016-10-18      Export einer ganzen Gemarkung zulassen (Sonderfall bei den Parametern) 
     23        2016-11-29      Gemeinsam genutzte Datenbanken ermöglichen 
     24        2017-02-23      Filter mit/ohne Hausnummer zum Typ "strasse". 
     25                                Dazu muss der View "exp_csv_str" um die spalte "fall" erweitert werden. 
     26                                Siehe Datei "x_classic2norgis.sql" in /OSGeo4W64/apps/alkis-import/postcreate.d/ 
     27                                Sonderfall: Auch Export zu *allen* Straßen der Stadt ohne Filter "gmlid". 
    2428*/ 
    2529 
     
    5761// HIER START // 
    5862 
    59 $gkz=''; $tabtyp = ''; $gemarkung=''; $gmlid=''; // erwartete Parameter initialisieren 
     63$gkz=''; $tabtyp = ''; $gemarkung=''; $gmlid=''; $haus=''; // mögliche Parameter initialisieren 
    6064$cntget = extract($_GET); // aktuelle Parameter aus URL auslesen 
    6165require_once("alkis_conf_location.php"); // Konfiguration laden 
     
    6367 
    6468if ($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 
     69        if ($gemarkung != '') { // Dieser Parameters bestimmt auch eindeutig den $tabtyp 
    6870                $tabtyp = 'gemarkung'; 
     71        } else {  // Bei "gmlid" MUSS man zwingend die Tabelle dazu nennen 
     72                $err="Fehler: Art des Suchfilters nicht angeben."; 
     73                echo "\n".$err; exit ($err); 
    6974        } 
    7075} elseif ($tabtyp == 'gemarkung') { 
    7176        if ($gemarkung == '') { 
    72                 exit ("Fehler: Gemarkungsnummer nicht angeben."); 
    73         } 
    74 } 
    75 if ($gmlid == '') { 
    76         if ($gemarkung == '') { 
    77                 exit ("Fehler: Kein Wert fuer die Suche angegeben."); 
    78         } else { // Wert fÃŒr Gemarkungsnummer angegeben 
     77                $err="Fehler: Gemarkungsnummer nicht angeben."; 
     78                echo "\n".$err; exit ($err); 
     79        } 
     80} 
     81 
     82if ($gmlid != '') { // Angabe von gmlid ist der Normalfall, das passt fÃŒr fast jeden tabtyp 
     83        if ($tabtyp == 'strasse' and $haus != '') { // den Zusatzfilter m/o im Dateinamen dokumentieren 
     84                if ($haus == 'm') { 
     85                        $filename='alkis_'.$tabtyp.'_'.$gmlid.'_mit_hsnr.csv'; 
     86                } else {  // = o 
     87                        $filename='alkis_'.$tabtyp.'_'.$gmlid.'_ohne_hsnr.csv.csv'; 
     88                } 
     89        } else { 
     90                $filename='alkis_'.$tabtyp.'_'.$gmlid.'.csv'; 
     91        } 
     92} else { // Oh Oh! Keine gmlid! - Alternativen? 
     93        if ($gemarkung != '') { // Sonderfall 1 - Gemarkungsnummer statt gmlid als Filter 
    7994                if ($tabtyp != 'gemarkung') { 
    80                         exit ("Fehler: Falsche Kombination Parameter tabtyp='".$tabtyp."' mit Wert fuer Gemarkungsnummer."); 
     95                        $err = "Fehler: Falsche Kombination Parameter tabtyp='".$tabtyp."' mit Wert fuer Gemarkungsnummer."; 
     96                        echo "\n".$err; exit ($err); 
    8197                } 
    8298                $filename='alkis_'.$tabtyp.'_'.$gemarkung.'.csv'; 
    83         } 
    84 } else { // alles gut 
    85         $filename='alkis_'.$tabtyp.'_'.$gmlid.'.csv'; 
     99 
     100/*      // $gmlid zu strasse noch notwendig solange kein Filter auf "Gemeinde" verwendet wird. 
     101        } elseif ($haus == 'm' or $haus == 'o') { // Sonderfall 2 - alle mit/ohne Hausnummer, nur ÃŒber View "exp_csv_str" möglich 
     102                if ($tabtyp != 'strasse') { 
     103                        $err="Fehler: Falsche Kombination Parameter tabtyp='".$tabtyp."' mit Wert fuer Haus."; 
     104                        echo "\n".$err; exit ($err); 
     105                } 
     106                if ($haus == 'm') { // den Zusatzfilter m/o im Dateinamen dokumentieren 
     107                        $filename='alkis_'.$tabtyp.'_mit_hsnr.csv'; 
     108                } else { 
     109                        $filename='alkis_'.$tabtyp.'_ohne_hsnr.csv'; 
     110                } 
     111*/ 
     112        } else { 
     113                $err= "Fehler: Kein passender Wert fuer die Suche angegeben."; 
     114                echo "\n".$err; exit ($err); 
     115        } 
    86116} 
    87117 
     
    95125// Datenbank-Verbindung 
    96126$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisexport.php'"); 
    97 if (!$con) {exit("Fehler beim Verbinden der DB");} 
     127if (!$con) { 
     128        $err= "Fehler beim Verbinden der DB"; 
     129        echo "\n".$err; exit($err); 
     130} 
    98131pg_set_client_encoding($con, 'LATIN1'); // FÃŒr Excel kein UTF8 ausgeben 
    99132 
     
    121154                break; 
    122155        default: 
    123                 exit("Falscher Parameter '".$tabtyp."'"); 
     156                $err= "Falscher Parameter '".$tabtyp."'"; 
     157                echo "\n".$err; exit($err); 
    124158                break; 
    125159} 
     
    128162$sql="SELECT * FROM ".$viewname." WHERE ".$filter." = $1 "; 
    129163 
     164if ($haus != '') { // nur FS mit/ohne verschlÃŒsselter Lagebezeichnung 
     165        if ($gmlid == '') { // m/o-Filter als einziger Filter 
     166                $sql="SELECT * FROM ".$viewname." WHERE fall='".$haus."' "; // Ersetzen 
     167                $v=array(); // kein Filter-Feld 
     168                // ToDo: Filter auf Gemeinde notwendig, wenn nicht auf strasse gefiltert wird. 
     169                // - Sonst Ausgabe von Rand-FlurstÃŒcken (bei geometrischer Filterung des NBA-Verfahrens) 
     170                // - Sonst ggf. Ausgabe Kreisgebiet 
     171        } else { // als zusÀtzlicher Filter  
     172                $sql.="AND fall='".$haus."' "; // m/o-Filter AnhÀngen 
     173        } 
     174} 
     175 
    130176$res=pg_prepare("", $sql); 
    131177$res=pg_execute("", $v); 
    132 if (!$res) {exit("Fehler bei Datenbankabfrage");} 
     178if (!$res) { 
     179        $err= "Fehler bei Datenbankabfrage"; 
     180        echo "\n".$err; exit($err); 
     181} 
    133182$i=1; // Kopfzeile zÀhlt mit 
    134183$fsalt=''; 
     
    236285} 
    237286pg_free_result($res); 
    238 if ($i == 1) {exit ("Kein Treffer fuer gml_id=".$gmlid);} // nur Kopfzeile 
     287if ($i == 1) { // nur Kopf 
     288        $err= "Kein Treffer fuer gml_id='".$gmlid."'"; 
     289        echo "\n".$err; exit ($err); 
     290} 
    239291pg_close($con); 
    240292exit(0); 
  • trunk/info/info/alkisn/alkisstrasse.php

    r377 r378  
    99        2016-02-24 Version fuer norGIS-ALKIS-Import 
    1010        2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermöglichen, SQL optimiert (FS-Liste jetzt schneller) 
     11        2017-02-23 Neuer Parameter &haus=m/o zum alkisexport.php 
     12 
     13ToDo: Neuen Parameter haus=m/o zum ALKISexport (alkisexport.php) bedienen 
    1114*/ 
    1215session_start(); 
     
    2831        <link rel="shortcut icon" type="image/x-icon" href="ico/Strassen.ico"> 
    2932        <script type="text/javascript"> 
    30                 function ALKISexport() { 
    31                         window.open(<?php echo "'alkisexport.php?gkz=".$gkz."&tabtyp=strasse&gmlid=".$gmlid."'"; ?>); 
     33                function ALKISexport(phaus) { 
     34                        window.open(<?php echo "'alkisexport.php?gkz=".$gkz."&tabtyp=strasse&gmlid=".$gmlid."&haus='"; ?> + phaus); 
    3235                } 
    3336        </script> 
     
    219222        <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp; 
    220223        <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a>&nbsp; 
    221         <a title="Export als CSV" href='javascript:ALKISexport()'><img src="ico/download.png" width="16" height="16" alt="Export"></a>&nbsp; 
     224        <a title="Export als CSV" href='javascript:ALKISexport("")'><img src="ico/download.png" width="16" height="16" alt="Export"></a>&nbsp; 
     225        <a title="CSV - nur Flurst&uuml;cke mit Hausnummer" href='javascript:ALKISexport("m")'>mit HsNr<img src="ico/download.png" width="16" height="16" alt="Export"></a>&nbsp; 
     226        <a title="CSV - nur Flurst&uuml;cke ohne Hausnummer" href='javascript:ALKISexport("o")'>ohne<img src="ico/download.png" width="16" height="16" alt="Export"></a>&nbsp; 
    222227</div> 
    223228 
Note: See TracChangeset for help on using the changeset viewer.