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_grd.php

    r420 r425  
    1010        2018-11-12 Full-Schema 
    1111        2019-02-12 Sortierung FlurstÃŒcksnummer repariert 
     12        2021-11-24 Neue Var. $katamtmix  (Kataster-Amt-Mix). 
     13                   SchlÃŒsseltabellen sind mehrfach belegt. Dadurch doppelte Treffer bei der Suche. 
    1214*/ 
    1315 
     
    107109        $linelimit=40; 
    108110 
    109         $sql="SELECT stelle, bezeichnung AS ag FROM ax_dienststelle " 
     111        $sql="SELECT DISTINCT stelle, bezeichnung AS ag FROM ax_dienststelle " 
    110112        ."WHERE stelle IN (".$liste_ag.") AND stellenart = 1000 AND endet IS NULL ORDER BY bezeichnung LIMIT $1 ;"; 
    111113        $res = pg_prepare("", $sql); 
     
    138140        // Auch wenn BlÀtter vorhanden sind, kann es eine "Sackgasse" sein. 
    139141        // Manchmal haben die BlÀtter keine FlurstÃŒcke im Filter-Bereich (Gemeinde). 
    140         global $debug; 
     142        global $debug, $katamtmix; 
    141143        $linelimit=100; // Bezirke/AG 
    142144 
     
    146148        // Body 
    147149        // Die Subquery stellt sicher, dass nur Bezirke aufgelistet werden, die auch BlÀtter enthalten 
    148         $sql ="SELECT g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g JOIN ax_dienststelle a ON g.gehoertzu_stelle = a.stelle " 
    149         ."WHERE a.stelle = $1 AND a.stellenart = 1000 AND a.endet IS NULL AND g.endet IS NULL " 
     150        $sql ="SELECT DISTINCT g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g JOIN ax_dienststelle a ON g.gehoertzu_stelle = a.stelle "; 
     151        if ($katamtmix){$sql.="AND substr(g.gml_id,1,6) = substr(a.gml_id,1,6) ";} 
     152        $sql.="WHERE a.stelle = $1 AND a.stellenart = 1000 AND a.endet IS NULL AND g.endet IS NULL " 
    150153        ."AND NOT (SELECT gml_id FROM ax_buchungsblatt b WHERE b.land=g.land AND b.bezirk=g.bezirk AND b.endet IS NULL LIMIT 1) IS NULL " 
    151154        ."ORDER BY g.bezeichnung LIMIT $2 ;"; 
     
    180183        // Zu einem Grundbuchbezirks-SchlÃŒssel die Zeilen "AG" und "Bezirk" ausgeben 
    181184        // Parameter = SchlÃŒssel des Bezirks 
    182         #global $debug; 
     185        global $katamtmix; 
    183186        $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezeichnung FROM ax_buchungsblattbezirk g " 
    184         ."JOIN ax_dienststelle a ON g.gehoertzu_stelle = a.stelle WHERE g.bezirk= $1 AND g.endet IS NULL AND a.endet IS NULL LIMIT 1;"; 
     187        ."JOIN ax_dienststelle a ON g.gehoertzu_stelle = a.stelle "; 
     188        if ($katamtmix){$sql.="AND substr(g.gml_id,1,6) = substr(a.gml_id,1,6) ";} 
     189        $sql.="WHERE g.bezirk= $1 AND g.endet IS NULL AND a.endet IS NULL LIMIT 1;"; 
    185190        $v=array($gbbez); 
    186191        $res=pg_prepare("", $sql); 
     
    209214function SuchGBBezName() { 
    210215        // Grundbuch-Bezirk suchen nach Name(-nsanfang) 
    211         global $gkz, $gemeinde, $debug, $gbkennz; 
     216        global $gkz, $gemeinde, $debug, $gbkennz, $katamtmix; 
    212217        $linelimit=80; 
    213218 
    214         $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g " 
    215         ."JOIN ax_dienststelle a ON g.gehoertzu_stelle = a.stelle " 
    216         ."WHERE g.bezeichnung ILIKE $1 AND g.endet IS NULL AND a.endet IS NULL " 
     219        $sql ="SELECT DISTINCT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g " 
     220        ."JOIN ax_dienststelle a ON g.gehoertzu_stelle = a.stelle "; 
     221        if ($katamtmix){$sql.="AND substr(g.gml_id,1,6) = substr(a.gml_id,1,6) ";} 
     222        $sql.="WHERE g.bezeichnung ILIKE $1 AND g.endet IS NULL AND a.endet IS NULL " 
    217223        ."ORDER BY a.bezeichnung, g.bezeichnung LIMIT $2 ;"; // "AND a.stellenart=1000 " Amtsgericht 
    218224        if ( $gbkennz == "") { 
     
    307313function gml_blatt() { 
    308314        // Kennzeichen "Bezirk + Blatt" eingegeben. Dazu die gml_id des Blattes ermitteln. 
    309         // 2018-10: Sonderfall Buchstabe: Auch finden wenn der nicht eingegeben wurde. 
    310315        global $debug, $zgbbez, $zblatt, $zblattn, $zblattz; 
    311316        $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b " 
     
    380385                $gef_blatt=$row["blatt"];       // gefunden ggf. mit Buchstabe (Wildcard) 
    381386                if ($zblatt != $gef_blatt) { 
    382                         echo "\n<p class='dbg'>Blatt mit Buchstabenerweiterung gefunden.</p>"; 
     387                //      echo "\n<p class='dbg'>Blatt mit Buchstabenerweiterung gefunden.</p>"; 
    383388                        $zblatt=$gef_blatt; 
    384389                        $zblattz=substr($zblatt, strlen($zblatt)-1, 1); 
     
    397402        // Die gml_id der Buchungsstelle (BVNR, GrundstÃŒck) ist bekannt = $buchunggml 
    398403        // Die gebuchten FlurstÃŒcke und dienende/herrschenden Buchungen werden ausgegeben. 
    399         global $debug, $gemeinde, $epsg, $buchunggml, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr, $gfilter; 
     404        global $debug, $gemeinde, $epsg, $buchunggml, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr, $gfilter, $katamtmix; 
    400405        // NoLimit? 
    401406 
     
    409414                        echo "<p class='err'>Kennzeichen Bezirk und Blatt nicht gesetzt</p>"; 
    410415                } // ++ suchen! 
    411         //      zeile_buchung($buchunggml, $zbvnr, $zgbbez."-".$zblattn.$zblattz, false, true); 
    412416                zeile_buchung($buchunggml, $zbvnr, $zgbbez."-".$zblatt, false, true); // $zblatt wird aktualisiert, wenn Buchstabe gefunden wurde 
    413417        } 
     
    445449        // Direkte Buchungen (Flurst.) 
    446450        $sql =$sqlanf."FROM ax_flurstueck f JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer "; 
     451        if ($katamtmix){$sql.="AND substr(g.gml_id,1,6) = substr(f.gml_id,1,6) ";} 
    447452        $sql.="WHERE f.istgebucht = $1 AND f.endet IS NULL ".$sqlfilter."ORDER BY f.gemarkungsnummer, f.flurnummer, cast(f.zaehler AS integer), cast(f.nenner AS integer);"; 
    448453 
     
    482487        ."FROM ax_buchungsstelle sh JOIN ax_buchungsstelle sd ON sd.gml_id=ANY(sh.an) " 
    483488        ."JOIN ax_flurstueck f ON f.istgebucht=sd.gml_id " 
    484         ."JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer " 
    485         ."JOIN ax_buchungsblatt bd ON sd.istbestandteilvon=bd.gml_id " 
    486         ."JOIN ax_buchungsblattbezirk gd ON bd.land=gd.land AND bd.bezirk=gd.bezirk " 
    487         ."WHERE sh.gml_id = $1 AND sh.endet IS NULL AND sd.endet IS NULL AND f.endet IS NULL AND bd.endet IS NULL AND gd.endet IS NULL " 
     489        ."JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer "; 
     490        if ($katamtmix){$sql.="AND substr(f.gml_id,1,6) = substr(g.gml_id,1,6) ";} 
     491        $sql.="JOIN ax_buchungsblatt bd ON sd.istbestandteilvon=bd.gml_id " 
     492        ."JOIN ax_buchungsblattbezirk gd ON bd.land=gd.land AND bd.bezirk=gd.bezirk "; 
     493        if ($katamtmix){$sql.="AND substr(bd.gml_id,1,6) = substr(gd.gml_id,1,6) ";} 
     494        $sql.="WHERE sh.gml_id = $1 AND sh.endet IS NULL AND sd.endet IS NULL AND f.endet IS NULL AND bd.endet IS NULL AND gd.endet IS NULL " 
    488495 
    489496        .$sqlfilter."ORDER BY gd.bezeichnung, bd.buchungsblattnummermitbuchstabenerweiterung, cast(sd.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, cast(f.zaehler AS integer), cast(f.nenner AS integer);"; 
     
    494501        if (!$res) { 
    495502                echo "\n<p class='err'>Fehler bei Buchungsstelle (gml, Recht an).</p>"; 
    496                 if ($debug >= 3) { 
    497                         echo "\n<p class='err'>'".$sql."'<br>\nmit $1 ='".$buchunggml."'</p>"; 
    498                 } 
     503                if ($debug >= 3) {echo "\n<p class='err'>'".$sql."'<br>\nmit $1 ='".$buchunggml."'</p>";} 
    499504        } 
    500505        $zfs2=0; 
     
    544549} 
    545550 
    546 // =========== 
    547551// Start hier! 
    548 // =========== 
    549552 
    550553// Validation: Eingabefeld aus Formular. 
Note: See TracChangeset for help on using the changeset viewer.