Changeset 425 for trunk/mapbender


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

Location:
trunk/mapbender
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/mapbender/conf/alkisnav_conf.php

    r400 r425  
    66        2016-08-17 GKZ in ALKIS-DB-Name 4stellig 
    77        2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen (mehrere Gemeinden in Kreis-Datenbank) 
     8        2021-11-22 Parameter $katamtmix (Kataster-Amt-Mix) 
    89*/ 
    910 
     
    1112        $dbgkz = $gkz;                          // eine Datenbank je Mandant 
    1213        $dbhost = '10.0.___';   // Datenbank-Server aus Produktion 
     14 
     15        $katamtmix = false;     // Default. Sind Daten aus verschiedenen Katasteramts-Bezirken in der DB? 
    1316 
    1417        switch ($gkz) { // lokale und temporäre Besonderheiten je Mandant 
     
    2730                        $filtgem = '16';        // Gebiets-Filter kommen derzeit noch aus der Mapbender-Konfiguration 
    2831                        break; 
     32 
     33                case "418": 
     34                        $katamtmix = true;      // Katasteramt Mix 
     35                        break; 
     36 
    2937        } 
    3038 
  • trunk/mapbender/http/nav/alkisnav.css

    r356 r425  
    55        2014-02-06 kosmetische Überarbeitung 
    66        2015-12-10 Rahmen breiter, mehr HsNr je Zeile 
     7        2021-12-29 Abstand vor .hn 
    78*/ 
    8 body,p,a,.textfield,.sbutton    {font-family: Verdana, Arial, Helvetica, sans-serif;} 
     9body,p,a,.textfield,.sbutton {font-family: Verdana, Arial, Helvetica, sans-serif;} 
    910body {font-size: 11px; color: #000000; margin: 0px; border: 0px;} 
    1011p {font-size: 10px;} 
    11 p.hilfe         {font-size:  9px; text-align: right; color: gray; padding-right: 3px;} /* Programmier-Hilfsfelder */ 
    12 p.start         {font-size:  9px; color: gray; padding: 2px; margin: 2px; border: 0px;} 
     12p.hilfe {font-size:  9px; text-align: right; color: gray; padding-right: 3px;} /* Programmier-Hilfsfelder */ 
     13p.start {font-size:  9px; color: gray; padding: 2px; margin: 2px; border: 0px;} 
    1314p.nam {font-size: 10px; border: 1px solid navy; padding: 3px; margin: 0px; color: maroon;} 
    1415p.err {font-size: 11px; color: red;} /* Fehler -> Anwender */ 
    1516p.dbg {font-size: 10px; color: gray;} /* Debug -> Entwickler */ 
    16 p.ein, p.anz, p.blt     {font-size: 9px; text-align: right;} /* Einleitung, Anzahl am Ende, BlÀttern weitere ... */ 
    17 p.ein  {color: navy; font-weight: bold;} 
     17p.ein, p.anz, p.blt {font-size: 9px; text-align: right;} /* Einleitung, Anzahl am Ende, BlÀttern weitere ... */ 
     18p.ein {color: navy; font-weight: bold;} 
    1819p.anz, p.blt {color: purple;} 
     20p.hn {color: gray; margin-left: 28px; margin-top: 8px; margin-bottom: 2px;} /* Hist.-Nachf. Überschr. */ 
    1921 
    2022a {text-decoration: none;} 
    2123a:hover, a:active {color: red;} 
    2224a.hislnk {color: gray; font-style: italic; text-align: right; padding-left: 50px;} /* Link zur Historie */ 
    23 a.hsnro {color: gray; font-style: italic;} /* HsNr ohne Haus */ 
     25a.hsnro {color: gray; font-style: italic;} /* HsNr ohne Haus */ 
    2426a.blt {color: maroon; background-color: yellow;} /* Link weitere ... */ 
    2527 
     
    3739div.fs {color: navy; margin-left: 28px; margin-top: 0px;} /* Flurstueck */ 
    3840div.hi {color: gray; margin-left: 28px; margin-top: 0px;} /* Historie */ 
    39 div.hn, p.hn    {color: gray; margin-left: 28px; margin-top: 0px;} /* Historie-Nachfolger */ 
     41div.hn {color: gray; margin-left: 28px; margin-top: 0px;} /* Historie-Nachfolger */ 
    4042 
    4143div.stu {color: maroon; font-size: 13px;} /* Strasse - Ueberschrift */ 
  • trunk/mapbender/http/nav/alkisnav_adr.php

    r413 r425  
    88        2018-02-15 Strikte Input-Validation der Parameter 
    99        2018-11-12 Full-Schema 
     10        2021-11-24 Neue Var. $katamtmix  (Kataster-Amt-Mix). 
     11                   SchlÃŒsseltabellen sind mehrfach belegt. Dadurch doppelte Treffer bei der Suche. 
     12 
    1013ToDo: 
    1114        -       Gruppierung (mit Zeile) der Straßenliste nach Gemeinde 
     
    4750        $gfilter = 0; 
    4851} 
    49 // // http://skrzmaptest01.asp.krzwan.de/mapbender/nav/alkisnav_adr.php?gkz=210&gemeinde=004&epsg=25832&str_schl=0575800401798 
    5052if (isset($str_schl) ) { 
    5153        if (!preg_match('#^[0-9]{4,13}$#', $str_schl)) {die("Eingabefehler Stra&zlig;enschlüssel");} 
     
    9092function suchStrName() { 
    9193        // Strassen nach Name(-nsanfang) 
    92         global $street, $scalestr, $str_schl, $gkz, $gemeinde, $epsg, $gfilter, $debug, $auskpath; 
     94        global $street, $scalestr, $str_schl, $gkz, $gemeinde, $epsg, $gfilter, $debug, $auskpath, $katamtmix; 
    9395        //if ($debug > 1) {echo "<p class='dbg'>function suchStrName()<p>";} // Ablauf-Verfolgung 
    9496 
    9597        $linelimit=120;  // -> in Conf? 
    96         $str_schl=""; // Loeschen vorh. Ergebnis 
     98        $str_schl=""; // Löschen vorh. Ergebnis 
    9799        preg_match("/^(\D+)(\d*)(\D*)/",$street,$matches); # 4 matches name/nr/zusatz  
    98100        //echo "match: 1='".$matches[1]."', 2='".$matches[2]."', 3='".$matches[3]."'"; 
     
    108110        $sql ="SELECT g.gemeinde, g.bezeichnung AS gemname, k.gml_id, k.bezeichnung, k.schluesselgesamt, k.lage " 
    109111        ."FROM ax_lagebezeichnungkatalogeintrag k " 
    110         ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde " 
    111         ."WHERE k.bezeichnung ILIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 
     112        ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde "; 
     113        if ($katamtmix){$sql.="AND substr(k.gml_id,1,6) = substr(g.gml_id,1,6) ";} 
     114        $sql.="WHERE k.bezeichnung ILIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 
    112115 
    113116        switch ($gfilter) { 
     
    143146                        $gwgem=$gemname; 
    144147                } 
    145                 $gkey=$row["schluesselgesamt"]; // Land-RegBez-Kreis-Gem-Strasse - fÃŒr weitere Suche 
     148                $gkey=$row["schluesselgesamt"]; // Land-RegBez-Kreis-Gem-Straße - fÃŒr weitere Suche 
    146149                $skey=$row["lage"]; // Nur Str.-schl. daraus 
    147150                $kgml=$row["gml_id"]; // ID von Katalog 
     
    164167} 
    165168 
    166 function suchStrKey() { // Strassen nach num. Schluessel 
    167         global $street, $scalestr, $str_schl, $gkz, $gemeinde, $epsg, $gfilter, $debug, $auskpath; 
     169function suchStrKey() { // Straßen nach num. SchlÃŒssel 
     170        global $street, $scalestr, $str_schl, $gkz, $gemeinde, $epsg, $gfilter, $debug, $auskpath, $katamtmix; 
    168171        //if ($debug > 1) {echo "<p class='dbg'>function suchStrKey()<p>";} // Ablauf-Verfolgung 
    169172        $linelimit=60; 
     
    174177                $match=str_pad($street, 5, "0", STR_PAD_LEFT); // "Wie eine Zahl" verarbeiten  
    175178        } 
     179 
    176180        $sql ="SELECT g.bezeichnung AS gemname, k.gml_id, k.bezeichnung, k.schluesselgesamt, k.lage " 
    177181        ."FROM ax_lagebezeichnungkatalogeintrag as k " 
    178         ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde " 
    179         ."WHERE k.lage LIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 
     182        ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde "; 
     183        if ($katamtmix){$sql.="AND substr(k.gml_id,1,6) = substr(g.gml_id,1,6) ";} 
     184        $sql.="WHERE k.lage LIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 
    180185        switch ($gfilter) { 
    181186                case 1: // Einzelwert 
     
    217222} 
    218223 
    219 function suchHausZurStr($showParent) { // Haeuser zu einer Strasse 
    220         global $str_schl, $gkz, $scalestr, $scalehs, $epsg, $gemeinde, $epsg, $gfilter, $debug, $auskpath; 
     224function suchHausZurStr($showParent) { // HÀuser zu einer Straße 
     225        global $str_schl, $gkz, $scalestr, $scalehs, $epsg, $gemeinde, $epsg, $gfilter, $debug, $auskpath, $katamtmix; 
    221226        //if ($debug > 1) {echo "<p class='dbg'>function suchHausZurStr()<p>";} // Ablauf-Verfolgung 
    222227 
    223228        // Head 
    224         // Strasse zum Strassenschluessel 
     229        // Straße zum StrassenschlÃŒssel 
    225230        $sql ="SELECT g.bezeichnung AS gemname, k.gml_id AS kgml, k.bezeichnung, k.land, k.regierungsbezirk, k.kreis, k.gemeinde, k.lage " 
    226231        ."FROM ax_lagebezeichnungkatalogeintrag as k " 
    227         ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde " 
    228         ."WHERE k.schluesselgesamt = $1 AND k.endet IS NULL AND g.endet IS NULL LIMIT 1";  
    229  
    230         $v=array($str_schl);    // Schluessel-Gesamt .. 
     232        ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde "; 
     233        if ($katamtmix){$sql.="AND substr(k.gml_id,1,6) = substr(g.gml_id,1,6) ";} 
     234        $sql.="WHERE k.schluesselgesamt = $1 AND k.endet IS NULL AND g.endet IS NULL LIMIT 1";  
     235 
     236        $v=array($str_schl);    // SchlÃŒssel-Gesamt .. 
    231237        $res=pg_prepare("", $sql); 
    232238        $res=pg_execute("", $v); 
     
    238244 
    239245        if($row = pg_fetch_array($res)) { // .. gefunden 
    240                 $kgml=$row["kgml"]; // ID aus Katalog 
     246                $kgml=$row["kgml"];     // ID aus Katalog 
    241247                $sname=$row["bezeichnung"]; 
    242248                $land =$row["land"];    // Einzel-Felder fÃŒr JOIN _lagebezeichnung_ 
     
    247253                $gemname=htmlentities($row["gemname"], ENT_QUOTES, "UTF-8"); 
    248254                if ($showParent) { 
    249                         // EINE Koordinate zur Strasse besorgen 
     255                        // EINE Koordinate zur Straße besorgen 
    250256                        // ax_Flurstueck >zeigtAuf> ax_LagebezeichnungOhneHausnummer 
    251257                        $sqlko ="SELECT "; 
     
    300306 
    301307                // Body 
    302                 // Haeuser zum Strassenschluessel 
     308                // HÀuser zum StraßenschlÃŒssel 
    303309                $sql="SELECT min(replace(h.hausnummer,' ','')) AS hsnr, "; 
    304310                if($epsg == "25832") { // Transform nicht notwendig 
     
    348354                        $cnt++; 
    349355                        $count++; 
    350                         if($count == 7) { // Max. Hausnummern je Zeile (Test: 3stellige HsNr mit Zusatz) 
     356                        if($count == 7) { // Max. HausNr je Zeile (Test: 3stellige HsNr mit Zusatz) 
    351357                                echo "\n</tr>"; 
    352358                                $count = 0; 
     
    363369        return; 
    364370} 
    365 // =========== 
     371 
    366372// Start hier! 
    367 // =========== 
    368373 
    369374// Validation: Eingabefeld aus Formular. 
    370 // Suchbegriff (Straßenname) oder StraßenschlÃŒssel. 
     375// Suchbegriff Straßenname oder StraßenschlÃŒssel. 
    371376// Hier formatierte Meldung und html-Foot. 
    372377if (isset($street) and $street != "" ) { 
     
    398403} 
    399404 
    400 // Nach Durchlaufen des PHP-Scriptes die zuletzt ausgefÃŒhrte Transaktion  
    401 //  im Kopf des Ergebnisrahmens anzeigen. 
     405// Nach Durchlaufen des PHP-Scriptes die zuletzt ausgefÃŒhrte Transaktion im Kopf des Ergebnisrahmens anzeigen. 
    402406// Dazu die im HTML-Header definierte Javascript-Function benutzen. 
    403407// Alternativ wird auch aus dem Javascript "positionieren Karte" dieser Titel gesetzt. 
  • trunk/mapbender/http/nav/alkisnav_eig.php

    r420 r425  
    1111        2018-11-12 Full-Schema 
    1212        2019-02-12 Sortierung FlurstÃŒcksnummer repariert 
     13        2021-12-01 Fehlerkorrektur "benennt". Neue Var. $katamtmix  (Kataster-Amt-Mix). 
     14                   SchlÃŒsseltabellen sind mehrfach belegt. Dadurch doppelte Treffer bei der Suche. 
     15                           Weitere Buchstaben fÃŒr Namen-Suche zugelassen. 
    1316*/ 
    1417 
     
    110113function personendaten() {  
    111114        // Adresse und Geburtsdatum der aktuellen Person ausgeben 
    112         global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath; // $debug 
     115        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath; 
    113116        $sql ="SELECT p.nachnameoderfirma, p.vorname, to_char(cast(p.geburtsdatum AS date),'DD.MM.YYYY') AS geburtsdatum, p.namensbestandteil, " 
    114117        ."a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer " 
     
    162165        $linelimit=150; 
    163166        $arr = explode(",", $name); 
    164         $name0 = trim($arr[0]); // Nachname 
     167        $name0 = trim($arr[0]);         // Nachname 
    165168        if (count($arr) > 1) { 
    166169                $name1=trim($arr[1]);   // Vorname 
     
    245248// Alternativ wÃŒrde eine Hilfstabelle benötigt, in der im PostProcessing  
    246249// das GB-zu-Gemeinde-VerhÀltnis vorbereitet wird. 
    247         global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $debug, $bltbez, $bltblatt, $bltseite, $kennztyp, $zgbbez; 
     250        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $debug, $bltbez, $bltblatt, $bltseite, $kennztyp, $zgbbez, $katamtmix; 
    248251        $linelimit=150; 
    249252 
     
    256259        $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam " 
    257260        ."FROM ax_namensnummer n JOIN ax_buchungsblatt gb ON n.istbestandteilvon=gb.gml_id " 
    258         ."JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk " 
    259         ."WHERE n.bennennt = $1 AND n.endet IS NULL AND gb.endet IS NULL AND b.endet IS NULL;"; 
     261        ."JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk "; 
     262        if ($katamtmix){$sql.="AND substr(gb.gml_id,1,6) = substr(b.gml_id,1,6) ";} 
     263        $sql.="WHERE n.benennt = $1 AND n.endet IS NULL AND gb.endet IS NULL AND b.endet IS NULL "; 
    260264 
    261265        // Parameter $gbkennz, z.B. nach Klick auf Zeile "Bezirk" 
    262266        if ($kennztyp > 1) { // 2=Such Bezirk-Nummer, 3=Such Blatt, 4=Such Buchung BVNR 
    263                 #if ($debug > 0) {echo "<p class='dbg'>Filter Bezirk '".$zgbbez."'<p>";} 
     267                #if ($debug > 1) {echo "<p class='dbg'>Filter Bezirk '".$zgbbez."'<p>";} 
    264268                $sql.="AND b.bezirk='".$zgbbez."' "; 
    265269                $bezirkaktuell = true; 
     
    333337// Im zweiten Schritt wird gesucht nach Rechten einer Buchungstelle des durchsuchten Blattes an anderen 
    334338// Buchungstellen. 
    335         global $gkz, $gemeinde, $name, $person, $blattgml, $epsg, $gfilter, $debug; 
     339        global $gkz, $gemeinde, $name, $person, $blattgml, $epsg, $gfilter, $debug, $katamtmix; 
    336340        if($backlink) { // Erneuter Ansatz bei Person oder GB möglich. 
    337341 
     
    347351                // Grundbuch-Daten ermitteln 
    348352                $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam " 
    349                 ."FROM ax_buchungsblatt gb JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk " 
    350                 ."WHERE gb.gml_id= $1 AND gb.endet IS NULL and b.endet IS NULL LIMIT 1 ;"; 
     353                ."FROM ax_buchungsblatt gb JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk "; 
     354                if ($katamtmix){$sql.="AND substr(gb.gml_id,1,6) = substr(b.gml_id,1,6) ";} 
     355                $sql.="WHERE gb.gml_id= $1 AND gb.endet IS NULL and b.endet IS NULL LIMIT 1 ;"; 
    351356                $v=array($blattgml); 
    352357                $res=pg_prepare("", $sql); 
     
    376381// weil "ungefiltert" in "2+3" zu lange Listen entstehen wÃŒrden, die durchblÀttert werden mÃŒssen.  
    377382 
    378         global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $gfilter, $debug, $bltbez, $bltblatt, $bltbvnr, $bltseite, $bltrecht, $kennztyp, $zgbbez; 
     383        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $gfilter, $debug, $bltbez, $bltblatt, $bltbvnr, $bltseite, $bltrecht, $kennztyp, $zgbbez, $katamtmix; 
    379384        $linelimit=80; // als Limit "Anzahl FlurstÃŒcke" in den beiden folgenden Abfragen 
    380385        // darf nun etwas knapper sein, weil man jetzt blÀttern kann 
     
    406411        $sql1.="FROM ax_namensnummer nn " 
    407412        ."JOIN ax_buchungsblatt gb ON gb.gml_id=nn.istbestandteilvon " 
    408         ."JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk " 
    409         ."JOIN ax_buchungsstelle s1 ON gb.gml_id=s1.istbestandteilvon "; 
     413        ."JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk "; 
     414        if ($katamtmix){$sql.="AND substr(gb.gml_id,1,6) = substr(b.gml_id,1,6) ";} 
     415        $sql1.="JOIN ax_buchungsstelle s1 ON gb.gml_id=s1.istbestandteilvon "; 
    410416 
    411417        // Baustein A: Auswahl 1 oder 2 
     
    621627} 
    622628 
    623 // =========== 
    624629// Start hier! 
    625 // =========== 
     630 
    626631// Parameter:   
    627632// 1. name   = Suche nach Namensanfang oder -bestandteil. 
     
    633638// Hier formatierte Meldung und html-Foot. 
    634639if (isset($name) and $name != "" ) {  
    635         if (!preg_match('#^[a-zA-Z0-9ÀöÌÄÖÜß*,. \-&/]{1,50}$#', $name)) { 
     640        if (!preg_match('#^[a-zA-Z0-9ÀöÌÄÖÜßşŜšŠ*,. \-&/]{1,50}$#', $name)) { 
    636641                echo "<p class='err'>Eingabe unzul&auml;ssig!</p>"; 
    637642        //      if ($debug > 1) {echo "<p class='err'>Name='".$name."' LÀnge='".strlen($name)."</p>";} 
  • trunk/mapbender/http/nav/alkisnav_fkt.php

    r420 r425  
    1111        2018-11-09 Full-Schema 
    1212        2019-02-12 Sortierung FlurstÃŒcksnummer repariert 
     13        2021-11-23 Neue Var. $katamtmix  (Kataster-Amt-Mix). 
     14                   SchlÃŒsseltabellen sind mehrfach belegt. Dadurch doppelte Treffer bei der Suche. 
    1315*/ 
    1416 
     
    316318        // Zu einem Grundbuch-Blatt (identifiziert ÃŒber seine gml_id) suchen der  
    317319        // Buchungen (Gruppenwechsel) und FlurstÃŒcke (Links) 
    318         global $gemeinde, $blattgml, $epsg, $gfilter, $debug; 
     320        global $gemeinde, $blattgml, $epsg, $gfilter, $debug, $katamtmix; 
    319321 
    320322        // SQL-Bausteine 
     
    337339 
    338340        // hinten gleich 
    339         $sql2="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer " 
    340                 ."WHERE s1.istbestandteilvon = $1 AND f.endet IS NULL AND s1.endet IS NULL "; 
     341        $sql2 ="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer "; 
     342        if ($katamtmix){$sql2.="AND substr(f.gml_id, 1, 6) = substr(g.gml_id, 1, 6) ";} 
     343        $sql2.="WHERE s1.istbestandteilvon = $1 AND f.endet IS NULL AND s1.endet IS NULL "; 
    341344 
    342345        switch ($gfilter) { 
  • trunk/mapbender/http/nav/alkisnav_fls.php

    r420 r425  
    1010        2018-11-12 Full-Schema 
    1111        2019-02-12 Sortierung FlurstÃŒcksnummer wieder hergestellt (kaputt gegangen bei Umstellung Full-Schema) 
     12        2021-11-24 fÃŒhrende '0' Trimmen bei Flur, ZÀhler, Nenner in der Zerlegung 
     13        2021-12-29 Sortierung der Nachfolger eines hist. FS 
     14         
     15ToDo: 
     16        Vermeiden der Tabellen "gema_shl" und "gem_shl". Das sind NorBIT/ALB-Relikte, die irgendwann entfallen werden. 
     17        Besser primÀre ax_*-Tabellen verwenden. 
    1218*/ 
    1319 
     
    129135 
    130136        if (count($arr) > 1) { 
    131                 $zflur=h_hinten($arr[1]); 
     137                $zflur=ltrim(h_hinten($arr[1]), '0'); 
    132138                if (count($arr) > 2) { 
    133139                        $zfsnr=trim($arr[2]); 
     
    172178        } else { 
    173179                $zn=explode("/", $zfsnr, 2); // Bruchnummer? 
    174                 $zzaehler=h_hinten(trim($zn[0])); 
    175                 if (count($zn) > 1) {$znenner=h_hinten(trim($zn[1]));} else {$znenner="";} 
     180                $zzaehler=ltrim(h_hinten(trim($zn[0])), '0'); 
     181                if (count($zn) > 1) { 
     182                        $znenner=ltrim(h_hinten(trim($zn[1])), '0'); 
     183                } else { 
     184                        $znenner=""; 
     185                } 
     186        //      if ($debug > 1) {echo "<p class='dbg'>Gemkg: '".$gemkg."' Flur: '".$zflur."' Zaehler: '".$zzaehler."' Nenner: '".$znenner."'</p>";} 
    176187                if ( ! is_ne_zahl($zzaehler)) { 
    177188                        echo "<p class='err'>FlurstÃŒcksnummer '".$zzaehler."' ist nicht numerisch</p>"; 
     
    283294                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath.$auskprog.".php?gkz=".$gkz."&amp;gmlid=".$gml."\")'>"; 
    284295                        echo "\n\t\t<img class='nwlink' src='ico/".$ico."' width='16' height='16' alt='FS' title='Nachweis'>"; 
    285                 echo "\n\t</a> ";                
    286                 echo "Flst. <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$fs.$hisparm."'>".$fskenn."</a>";                                      
     296                echo "\n\t</a>&nbsp;";           
     297                echo "hist. Flst. <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$fs.$hisparm."'>".$fskenn."</a>";                                        
    287298        echo "\n</div>"; 
    288299        return; 
     
    418429                echo "\n<p class='anz'>Keine Gemarkung.</p>"; 
    419430                if ($debug > 1) { 
    420 /* 
    421                         // Nach Umstellung auf NorGIS-Struktur muss im Mapbender die Gemeinde 3stellig konfiguriert werden 
     431/*                      // Nach Umstellung auf NorGIS-Struktur muss im Mapbender die Gemeinde 3stellig konfiguriert werden 
    422432                        if (strlen($gemeinde) < 3) { 
    423433                                echo "<p class='err'>URL-Parameter &gemeinde=nnn im Mapbender gazetteer_alkis.SRC muss 3stellig sein!<br>Ist aber '".$gemeinde."'.</p>"; 
    424                         } 
    425 */ 
     434                        } */ 
    426435                        if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = ".$match."</p>";} 
    427436                } 
     
    473482        if ($AuchGemkZeile) { // Kopf davor ausgeben 
    474483                if (! gg_head($zgemkg6, true)) { 
    475                         if ($debug >= 1) {echo "\n<p class='dbg'>Gem.-Gemkg.-Kopf abgebrochen</p>";}     
     484                        if ($debug > 0) {echo "\n<p class='dbg'>Gem.-Gemkg.-Kopf abgebrochen</p>";}      
    476485                        return false; 
    477486                }  
     
    479488 
    480489        // Body 
     490        // ++ ToDo: (optional) nur Fluren ausgeben, in denen auch FlurstÃŒcke enthalten sind. 
    481491        $sql ="SELECT gemarkungsteilflur AS flur FROM ax_gemarkungsteilflur f WHERE gemarkung= $1 ORDER BY gemarkungsteilflur LIMIT $2 ;"; 
    482492        $v=array($zgemkg4, $linelimit); 
     
    621631        } 
    622632        $sql.="FROM ax_flurstueck f WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 AND f.zaehler= $3 "; 
    623  
    624633        If ($znenner != "") { 
    625                 $suchnenn = ltrim($znenner, '0'); 
    626                 If ($suchnenn != "") { 
    627                         $sql.="AND f.nenner='".$suchnenn."' "; 
    628                 } 
     634                $sql.="AND f.nenner='".$znenner."' "; 
    629635        } 
    630636        $sql.="AND endet IS NULL ORDER BY cast(f.zaehler AS integer), cast(f.nenner AS integer);"; 
     
    732738                        $nasql ="SELECT 'a' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_flurstueck ".$nawhcl 
    733739                        ."UNION SELECT 'h' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_historischesflurstueck ".$nawhcl 
    734                         ."UNION SELECT 'o' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_historischesflurstueckohneraumbezug ".$nawhcl; 
     740                        ."UNION SELECT 'o' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_historischesflurstueckohneraumbezug ".$nawhcl 
     741                        ."ORDER BY gemarkungsnummer, flurnummer, zaehler, nenner"; 
    735742 
    736743                        $v=array(); 
     
    773780} 
    774781 
    775 // =========== 
    776782// Start hier! 
    777 // =========== 
    778 if ($debug >= 1) {echo "\n<p class='dbg'>gemeinde='".$gemeinde."'. gfilter='".$gfilter."'</p>";} 
     783 
     784// if ($debug >= 1) {echo "\n<p class='dbg'>gemeinde='".$gemeinde."'. gfilter='".$gfilter."'</p>";} 
    779785 
    780786// Validation: Eingabefeld aus Formular. 
     
    800806} else { // Die Formular-Eingabe interpretieren (kann auch ein Link sein) 
    801807        $retzer=ZerlegungFsKennz($fskennz); 
    802         if ($debug >= 1) {echo "\n<p class='dbg'>Return Zerlegung: ".$retzer."</p>";}    
     808        if ($debug > 1) {echo "\n<p class='dbg'>Return Zerlegung: ".$retzer."</p>";}     
    803809        switch ($retzer) { // Returnwert der Zerlegung des FS-Kennz. 
    804810        case 0: // leere Eingabe 
  • 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.