Changeset 376 for trunk/mapbender


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.

Location:
trunk/mapbender
Files:
55 deleted
7 edited

Legend:

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

    r331 r376  
    11<?php 
    2 /*      Einstellungen fuer Mapbender-Navigation mit ALKIS-Daten 
    3         ALKIS-PostGIS-Datenbank aus Konverter PostNAS 0.8 
    4         krz Mi.-Ra./Li. 
    5         2014-09-10 PostNAS 0.8: ohne "alkis_beziehungen" 
     2/*      Navigation mit ALKIS-Daten im Mapbender 2.7 - Teil "Einstellungen" 
     3        Diese Version des Programms verwendet die Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 
     4 
     5Version vom 
     6        2016-08-17 GKZ in ALKIS-DB-Name 4stellig 
     7        2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen (mehrere Gemeinden in Kreis-Datenbank) 
    68*/ 
    79 
    8 #       DB-Connection 
    9         $host="localhost"; 
    10         $port="5432"; 
    11         $dbname="alkis";        // .$dbvers.$gkz - Mandant 
    12         $dbvers="08";           // 05 oder 06 (steuert Format von .lage) 
    13         $user="***"; 
    14         $password="***"; 
     10//      im Normalfall  ... 
     11        $dbgkz = $gkz;                          // eine Datenbank je Mandant 
     12        $dbhost = '10.0.___';   // Datenbank-Server aus Produktion 
     13 
     14        switch ($gkz) { // lokale und temporäre Besonderheiten je Mandant 
     15                case "150": // Testfall 
     16                        $dbhost = 'localhost'; // Datenbank auf dem DIESEM TEST-Server verwenden 
     17                        break; 
     18                case "rlp":  
     19                        $dbhost = 'localhost'; // Datenbank auf dem DIESEM TEST-Server verwenden 
     20                        break; 
     21                case "320": 
     22                        $dbgkz = '300';         // gemeinsame Datenbank für das Kreisgebiet 
     23                        $filtkreis='70'; 
     24                        $filtgem = '16';        // Gebiets-Filter kommen derzeit noch aus der Mapbender-Konfiguration 
     25                        break; 
     26        } 
     27 
     28//      DB-Connection 
     29        $dbport="5432"; 
     30        $dbpre="alkis0"; // Datenbanken aus dem norGIS-ALKIS-Importer 
     31        $dbuser="___"; 
     32        $dbpass="___"; 
    1533 
    1634#       Pfad zu den ALKIS-Auskunft-Programmen 
    17         $auskpath="../../../info/alkis"; 
     35        $auskpath="../../../alkisn/";           // AUSKUNFT auf norBIT-DB 
    1836 
    1937#       Massstab zum Positionieren auf Flurstueck, Strasse, Hausnummer 
     
    3149#       Filter: 
    3250#       Liste der relevanten Amtsgerichts-Nummern aus ax_dienststelle.stelle 
    33 #       Form: WHERE IN () 
     51#       Form: SQL WHERE IN () 
    3452#       Bei leerer Eingabe in Tab 'Grundb.' 
    3553        $ag_liste = "'2102','2105','2106','2107','2108','2110','2303','2307'"; 
     
    4159#       hausnummernohnegebaeude - sollen Hausnummern ohne Gebäude ausgegeben werden? 
    4260#       1 ja / 0 nein 
    43         $hausnummernohnegebaeude=1; 
     61        $hausnummernohnegebaeude = 1; 
    4462 
    4563#       Entwicklungsumgebung 
    46         $debug=0; // 0=Produktion, 1=mit Fehlermeldungen, 2=mit Informationen, 3=mit SQL 
     64        $debug=1; // 0=Produktion, 1=mit Fehlermeldungen, 2=mit Informationen, 3=mit SQL 
     65 
     66//      Datenbank-Connection-String aus den oben konfigurierten Parametern bilden 
     67        $dbconn = "host=".$dbhost." port=".$dbport." dbname=".$dbpre.$dbgkz." user=".$dbuser." password=".$dbpass." options='--application_name=alkisnav'"; 
    4768 
    4869?> 
  • trunk/mapbender/http/nav/alkisnav.htm

    r356 r376  
    11<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    22<html> 
     3<!-- Vorsicht mit HTML5: Frame-Hoehe geht verloren --> 
    34<head> 
    4         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     5        <meta charset="utf-8"> 
    56        <link rel="stylesheet" type="text/css" href="alkisnav.css"> 
    67        <script type="text/javascript" language="JavaScript"> 
  • trunk/mapbender/http/nav/alkisnav_adr.php

    r356 r376  
    11<?php 
    2 /* Version vom  
    3         2013-04-26      "import_request_variables" entfÀllt in PHP 5.4. 
    4                                 ZurÃŒck-Link, Titel der Transaktion anzeigen 
    5         2013-04-29      Test mit IE 
    6         2013-05-07      Strukturierung des Programms 
    7         2013-05-14      Feinkorrekturen 
    8         2013-05-15      Gruppierung nach Gemeinde, mehrfache HsNr (ap_pto.advstandardmodell) unterdrÃŒcken, Icon f. Straße 
    9         2014-01-23      Link zum Auskunft-Modul fÃŒr Straße 
    10         2014-09-03      PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer 
    11         2014-09-15      Bei Relationen den Timestamp abschneiden, mehr "endet IS NULL" 
    12         2014-09-30      RÃŒckbau substring(gml_id) 
    13         2015-12-10      Umstellen .ico auf .png, Vermeidung nicht initialisierter Variable 
     2/*      Navigation mit ALKIS-Daten im Mapbender 2.7 - Teil Adressen-Suche  
     3        Diese Version des Programms verwendet die Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 
     4 
     5Version vom  
     6        2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 
     7        2016-03-02 $gemeinde auf feste LÀnge korrigieren 
     8        2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen 
    149 
    1510        ToDo: 
     
    2722 
    2823$cntget = extract($_GET); 
     24$gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); // temporÀr 
    2925include("../../conf/alkisnav_conf.php"); 
    3026include("alkisnav_fkt.php"); // Funktionen 
    31 $con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password; 
    32 $con = pg_connect ($con_string) or die ("Fehler bei der Verbindung zur Datenbank ".$$dbname.$dbvers.$gkz); 
     27$con = pg_connect ($dbconn) or die ("Fehler bei der Verbindung zur Datenbank ".$dbpre.$dbgkz); 
    3328 
    3429echo <<<END 
    35  
    36 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    37 <html> 
     30<!doctype html> 
     31<html lang="de"> 
    3832<head> 
    3933        <meta http-equiv="cache-control" content="no-cache"> 
    4034        <meta http-equiv="pragma" content="no-cache"> 
    4135        <meta http-equiv="expires" content="0"> 
    42         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     36        <meta charset="utf-8"> 
    4337        <title>ALKIS-Suche Adressen</title> 
    4438        <link rel="stylesheet" type="text/css" href="alkisnav.css"> 
     
    6357END; 
    6458 
    65 function suchStrName() { // Strassen nach Name(-nsanfang) 
     59function suchStrName() { 
     60        // Strassen nach Name(-nsanfang) 
    6661        global $street, $scalestr, $str_schl, $gkz, $gemeinde, $epsg, $gfilter, $debug, $auskpath; 
    67         $linelimit=120;  // -> in die Conf? 
    68         $str_schl=""; // Loeschen vorheriges Ergebnis 
    69         preg_match("/^(\D+)(\d*)(\D*)/",$street,$matches); # 4 matches name/nr/zusatz echo "match: ".$matches[1].",".$matches[2].",".$matches[3]; 
     62        //if ($debug > 1) {echo "<p class='dbg'>function suchStrName()<p>";} // Ablauf-Verfolgung 
     63 
     64        $linelimit=120;  // -> in Conf? 
     65        $str_schl=""; // Loeschen vorh. Ergebnis 
     66        preg_match("/^(\D+)(\d*)(\D*)/",$street,$matches); # 4 matches name/nr/zusatz  
     67        //echo "match: 1='".$matches[1]."', 2='".$matches[2]."', 3='".$matches[3]."'"; 
    7068        $matches[1] = preg_replace("/strasse/i","str", $matches[1]); 
    7169        $matches[1] = preg_replace("/str\./i","str", $matches[1]);  
     70 
    7271        if(preg_match("/\*/",$matches[1])){ 
    7372                $match=trim(preg_replace("/\*/i","%", strtoupper($matches[1]))); 
     
    7574                $match=trim($matches[1])."%"; 
    7675        } 
     76 
    7777        $sql ="SELECT g.gemeinde, g.bezeichnung AS gemname, k.gml_id, k.bezeichnung, k.schluesselgesamt, k.lage  
    7878        FROM ax_lagebezeichnungkatalogeintrag k  
    7979        JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde  
    8080        WHERE k.bezeichnung ILIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 
     81 
    8182        switch ($gfilter) { 
    8283                case 1: // Einzelwert 
     
    114115                $skey=$row["lage"]; // Nur Str.-schl. daraus 
    115116                $kgml=$row["gml_id"]; // ID von Katalog 
    116  
    117 // +++ in function_zeile_strasse() 
    118                 $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");   
    119                 echo "\n\t<div class='stl' title='Stra&szlig;enschl&uuml;ssel ".$skey."'>"; 
    120                 // Icon -> Buchnachweis 
    121                 echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$kgml."\")'>"; 
    122                         echo "\n\t\t<img class='nwlink' src='ico/Lage_mit_Haus.png' width='16' height='16' alt='STR' title='Stra&szlig;e'>"; 
    123                 echo "\n\t</a>"; 
    124                 echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;str_schl=".$gkey."'>".$sname."</a>"; 
    125                 echo "</div>"; 
    126 // +++ function ende 
     117                $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); 
     118                zeile_strasse ($gkey, $skey, $sname, $kgml, $gemname); 
    127119                $cnt++; 
    128120        } 
    129121 
    130122        if($cnt == 0) { 
    131                 echo "<pclass='anz'>Keine Stra&szlig;e</p>"; 
     123                echo "\n<p class='anz'>Keine Stra&szlig;e</p>"; 
     124                //if ($debug > 2) {echo "<p class='err'>SQL = '".$sql."'<br>$1 = '".$match."'<p>";} 
    132125        } elseif($cnt == 1) { // Eindeutig 
    133126                $str_schl=$gkey; // dann gleich weiter 
    134127        } elseif($cnt >= $linelimit) { 
    135                 echo "<p class='anz'>".$cnt." Stra&szlig;en ... und weitere</p>";                        
     128                echo "\n<p class='anz'>".$cnt." Stra&szlig;en ... und weitere</p>";                      
    136129        } elseif ($cnt > 1) { 
    137130                echo "\n<p class='anz'>".$cnt." Stra&szlig;en</p>";      
     
    142135function suchStrKey() { // Strassen nach num. Schluessel 
    143136        global $street, $scalestr, $str_schl, $gkz, $gemeinde, $epsg, $gfilter, $debug, $auskpath; 
     137        //if ($debug > 1) {echo "<p class='dbg'>function suchStrKey()<p>";} // Ablauf-Verfolgung 
    144138        $linelimit=60; 
    145139        if(preg_match("/\*/",$street)) { 
     
    177171                $skey=$row["lage"]; 
    178172                $kgml=$row["gml_id"]; // ID von Katalog  
    179                  
    180 // +++ in function_zeile_strasse() 
    181                 echo "\n\t<div class='stl' title='Stra&szlig;enschl&uuml;ssel ".$skey."'>"; 
    182  
    183                         // Icon -> Buchnachweis 
    184                         echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$kgml."\")'>"; 
    185                                 echo "\n\t\t<img class='nwlink' src='ico/Lage_mit_Haus.png' width='16' height='16' alt='STR' title='Stra&szlig;e'>"; 
    186                         echo "\n\t</a>"; 
    187                  
    188                         echo $skey." <a class='st' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;str_schl=".$gkey."' title='".$gemname."'>".$sname; 
    189                         echo "</a>"; 
    190                         switch ($gfilter) { 
    191                                 case 0: // Kein Filter 
    192                                         echo " in ".$gemname; 
    193                                         break; 
    194                                 case 2: // Liste 
    195                                         echo " in ".$gemname; 
    196                                         break; 
    197                         } 
    198                 echo "</div>"; 
    199 // function ende 
    200  
     173                zeile_strasse ($gkey, $skey, $sname, $kgml, $gemname); 
    201174                $cnt++; 
    202175        } 
     
    215188function suchHausZurStr($showParent) { // Haeuser zu einer Strasse 
    216189        global $str_schl, $gkz, $scalestr, $scalehs, $epsg, $gemeinde, $epsg, $gfilter, $debug, $auskpath; 
     190        //if ($debug > 1) {echo "<p class='dbg'>function suchHausZurStr()<p>";} // Ablauf-Verfolgung 
    217191 
    218192        // Head 
     
    256230                        $sqlko.="WHERE o.land= $1 AND o.regierungsbezirk= $2 AND o.kreis= $3 AND o.gemeinde= $4 AND o.lage= $5 ";        
    257231                        $sqlko.="LIMIT 1;"; // die erstbeste Koordinate 
     232 
    258233                        $v=array($land,$regb,$kreis,$gemnd,$nr); 
    259234                        $resko=pg_prepare("", $sqlko); 
     
    267242                        } 
    268243 
     244                        // "function zeile_strasse()" hier nicht verwendbar. ZusÀtzlicher Map-Link mit Koordinate  
    269245                        // Icon -> Buchnachweis 
    270246                        echo "\n\t<br><a href='javascript:imFenster(\"".$auskpath."alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$kgml."\")'>"; 
     
    371347        $epsg=$gui_epsg; // aus Conf 
    372348} 
     349 
     350// Filter auf Zustaendigkeit z.B. ein Stadtgebiet 
    373351if ($gemeinde == "") { 
    374352        $gfilter = 0; // ungefiltert 
     
    378356        $gfilter = 2; // Liste 
    379357} 
    380  
    381 // +++  Zerlegung Eingabe aus "Balken" von Buchauskunft "Lage": 
    382 //              Numerisch: Gem-Str-Haus-lfd 
    383  
    384 if ($str_schl != "") { // aus Link 
     358// ax_lagebezeichnungkatalogeintrag.gemeinde: z.B. Classic='40' / NorBit  = '040' 
     359// Im Mapbender mit fuehrenden Nullen eingeben: gazetteer_alkis.SRC 
     360// alkisnav.htm?..&gemeinde=040&.. 
     361 
     362// +++Zerlegung Eingabe aus "Balken" von Buchauskunft "Lage": Numerisch: Gem-Str-Haus-lfd 
     363 
     364if ($str_schl != "") { // Wert kommt aus aus Link 
    385365        $trans="Hausnummern zur Stra&szlig;e"; 
    386366        suchHausZurStr(true); 
    387 } elseif($street != "") { // Eingabe in Form 
    388         if (trim($street, "*,0..9") == "") { // Zahl, ggf. mit Wildcard 
     367// Wert aus Eingabe in Formular 
     368} elseif($street != "") {  
     369        if (trim($street, "*,0..9, ") == "") { // Zahl, ggf. mit Wildcard 
    389370                $trans="Suche Stra&szlig;enschl&uuml;ssel \"".$street."\""; 
    390371                suchStrKey(); 
    391         } else { 
     372        } else { // Name suchen 
    392373                $trans="Suche Stra&szlig;enname \"".$street."*\""; 
    393374                suchStrName(); 
     
    402383 
    403384// Nach Durchlaufen des PHP-Scriptes die zuletzt ausgefÃŒhrte Transaktion  
    404 // im Kopf des Ergebnisrahmens anzeigen. 
     385//  im Kopf des Ergebnisrahmens anzeigen. 
    405386// Dazu die im HTML-Header definierte Javascript-Function benutzen. 
    406387// Alternativ wird auch aus dem Javascript "positionieren Karte" dieser Titel gesetzt. 
  • trunk/mapbender/http/nav/alkisnav_eig.php

    r374 r376  
    44 
    55 Version vom 
    6         2016-02-11      Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 
    7         2016-03-02  $gemeinde auf feste LÀnge korrigieren 
    8         2016-07-18      Personendaten: Zeilen getauscht. Wie Brief-Anschrift. 
     6        2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 
     7        2016-03-02 $gemeinde auf feste LÀnge korrigieren 
     8        2016-07-18 Personendaten: Zeilen getauscht. Wie Brief-Anschrift. 
     9        2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen 
    910*/ 
    1011 
     
    1819include("../../conf/alkisnav_conf.php"); // Konfigurations-Einstellungen 
    1920include("alkisnav_fkt.php"); // Funktionen 
    20 $con_string = "host=".$host." port=".$port." dbname=".$dbname.$gkz." user=".$user." password=".$password; 
    21 $con = pg_connect ($con_string) or die ("<p class='err'>Fehler bei der Verbindung zur Datenbank</p>".$dbname.$gkz); 
     21$con = pg_connect ($dbconn) or die ("<p class='err'>Fehler bei der Verbindung zur Datenbank</p>".$dbpre.$dbgkz); 
    2222 
    2323echo <<<END 
    24 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    25 <html> 
     24<!doctype html> 
     25<html lang="de"> 
    2626<head> 
    2727        <meta http-equiv="cache-control" content="no-cache"> 
    2828        <meta http-equiv="pragma" content="no-cache"> 
    2929        <meta http-equiv="expires" content="0"> 
    30         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     30        <meta charset="utf-8"> 
    3131        <title>ALKIS-Suche Eigent&uuml;mer</title> 
    3232        <link rel="stylesheet" type="text/css" href="alkisnav.css"> 
  • trunk/mapbender/http/nav/alkisnav_fkt.php

    r356 r376  
    11<?php 
    2 /* Version vom  
    3         2013-05-07      Strukturierung des Programms, redundanten Code in Functions zusammen fassen 
    4         2013-05-14      Hervorhebung aktuelles Objekt, Title auch auf Icon, IE zeigt sonst alt= als Title dar. 
    5         2013-05-15      Function verlegt 
    6         2014-02-06      Korrektur zeile_person 
    7         2014-09-03      PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer 
    8         2014-09-15      Bei Relationen den Timestamp abschneiden, mehr "endet IS NULL" 
    9         2014-09-30      RÃŒckbau substring(gml_id) 
    10         2015-12-10      Umstellen .ico auf .png, Vermeidung nicht initialisierter Variable 
     2/*      Navigation mit ALKIS-Daten im Mapbender 2.7 - Teil "Funktionen" 
     3        (Wird nicht direkt aufgerufen sonden in den anderen Modulen eingebunden). 
     4        Diese Version des Programms verwendet die Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 
     5 
     6Version vom  
     7        2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 
     8        2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen 
    119*/ 
    1210 
     
    8785// Hierin die Encodierung fÃŒr url und HTML. 
    8886 
    89 function zeile_ag ($ag, $anr, $aktuell) {       // Zeile  A m t s g e r i c h t 
     87function zeile_ag ($ag, $anr, $aktuell) { 
     88        // Zeile  A m t s g e r i c h t 
    9089        global $gkz, $gemeinde, $epsg, $auskpath; 
    9190        if ($ag == "") { 
     
    103102} 
    104103 
    105 function zeile_gbbez ($gnam, $zgbbez, $aktuell) {       // Zeile Grundbuch - B e z i r k 
     104function zeile_gbbez ($gnam, $zgbbez, $aktuell) { 
     105        // Zeile Grundbuch - B e z i r k 
    106106        // Parameter: aktuell = Bool fÃŒr farbliche Markierung der Zeile als aktuell angeklicktes Obj. 
    107107        global $gkz, $gemeinde, $epsg, $person; 
     
    124124 
    125125function zeile_blatt ($bezirk, $beznam, $blattgml, $blatt, $dienend, $person, $aktuell) { 
     126        // Zeile Grundbuch - B l a t t 
     127        // Aufruf aus Teil "Grundbuch" und Teil "EigentÃŒmer" 
     128        // Parameter $beznam = Name des GB-Bezirks. Sollte nur gefÃŒllt sein, bei dienendem Blatt ("Recht an"). 
     129        //              sonst steht der Bezirk als Header-Zeile darÃŒber. 
    126130        global $gkz, $gemeinde, $epsg, $auskpath; 
    127         // Zeile Grundbuch - B l a t t 
     131 
    128132        $blattd=ltrim($blatt, "0"); // Display-Version ohne fÃŒhrende Nullen 
    129133        if ($dienend) {$dientxt="dienendes ";} else {$dientxt="";} 
     
    136140        // Icon / Nachweis 
    137141        if ($blattgml == "") { // Link zum Nachweis nur wenn GML bekannt 
    138                 echo "\n\t<img class='nwlink' src='ico/GBBlatt_link.png' width='16' height='16' alt='Blatt' title='".$dientxt."GB-Blatt'>"; 
     142                echo "\n\t<img class='nwlink' src='ico/GBBlatt.png' width='16' height='16' alt='Blatt' title='".$dientxt."GB-Blatt'>"; 
    139143        } else { 
    140144                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$blattgml."\")'>"; 
     
    156160function zeile_buchung($buchunggml, $bvnr, $blattkennz, $dienend, $aktuell) { 
    157161        // Zeile  B u c h u n g s s t e l l e  -  GrundstÃŒck ausgeben 
    158         global $gkz, $gemeinde, $epsg, $auskpath; 
    159         if ($bvnr == 0) { 
    160                 $bvnra = "-"; 
     162        global $gkz, $gemeinde, $epsg, $auskpath, $debug; 
     163        //if ($debug > 1) {echo "<p class='dbg'>function zeile_buchung()<p>";} // Ablauf-Verfolgung 
     164 
     165        if ($bvnr == 0) { // Keine echten BVNR vergeben (z.B. Lippe) 
     166                $bvnra = "-"; // Fehlanzeige 
    161167        } else { 
    162168                $bvnra = str_pad($bvnr, 4, "0", STR_PAD_LEFT); // auf 4 Stellen 
     
    184190 
    185191function zeile_gemeinde ($gmdnr, $gmdname, $aktuell) { 
    186         // Eine Zeile zu Gemeinde ausgeben, SchlÃŒssel und Name wird ÃŒbergeben 
     192        // Eine Kopf-Zeile zu Gemeinde ausgeben 
    187193        global $gkz, $gemeinde, $epsg; 
    188194        $stadt=htmlentities($gmdname, ENT_QUOTES, "UTF-8"); 
     
    192198                echo "\n\t\t<img class='nwlink' src='ico/Gemeinde.png' width='16' height='16' alt='Stadt'>"; 
    193199                echo " Gem. <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gm=".$gmdnr."&amp;bez=".$bez."'>";               
    194                 echo  " ".$stadt."</a> (".$gmdnr.")"; 
     200                echo  " ".$stadt."</a> (".substr($gmdnr, 5).")"; 
     201        echo "\n</div>"; 
     202        return; 
     203} 
     204 
     205function zeile_gemarkung($gkgnr, $gkgname, $aktuell) { 
     206        // Eine Kopf-Zeile zur Gemarkung ausgeben 
     207        global $con, $gkz, $gemeinde, $epsg, $gfilter; 
     208 
     209        if ($gkgname == "") { // Falls Gem.-Name fehlt, in DB nachschlagen 
     210                $sql ="SELECT bezeichnung FROM ax_gemarkung WHERE gemarkungsnummer = $1 LIMIT 1;"; 
     211                $v=array($gnr); 
     212                $res=pg_prepare("", $sql); 
     213                $res=pg_execute("", $v); 
     214                if (!$res) {echo "\n<p class='err'>Fehler bei Gemarkungsname.</p>";} 
     215                $row = pg_fetch_array($res); 
     216                $gkgname=$row["bezeichnung"]; 
     217        } 
     218 
     219        if ($gkgname == "") {$gkgname = "(unbekannt)";} 
     220        $gnam=htmlentities($gkgname, ENT_QUOTES, "UTF-8"); 
     221        if ($aktuell) {$cls=" aktuell";} else {$cls="";} 
     222 
     223        echo "\n<div class='gk".$cls."' title='Gemarkung'>"; 
     224        echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.png' width='16' height='16' alt='GKG' title='Gemarkung'>"; 
     225        echo " OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$gkgnr."'>";             
     226        echo  " ".$gnam."</a> (".substr($gkgnr, 2).")"; 
    195227        echo "\n</div>"; 
    196228        return; 
     
    226258 
    227259function zeile_person ($persongml, $nachname, $vorname) { 
     260        // Zeile  P e r s o n (oder Firma) 
    228261        global $gkz, $gemeinde, $epsg, $auskpath; 
    229         // Zeile  P e r s o n (oder Firma) 
     262 
    230263        $nnam=htmlentities($nachname, ENT_QUOTES, "UTF-8"); 
    231264        $namlnk=urlencode($nachname); 
     
    240273</div>"; 
    241274return; 
     275} 
     276 
     277function zeile_strasse ($gkey, $skey, $sname, $kgml, $gemname) { 
     278        // Listen-Zeile (nicht Kopfzeile) fÃŒr eine gefundenen Straße ausgeben. 
     279        // Die Kopfzeile ÃŒber den Hausnummern hat einen zusÀtzlichen Koordinaten-Map-Link, das ist in der Liste zu aufwÀndig? 
     280        global $gkz, $gemeinde, $epsg, $auskpath, $gfilter, $debug; 
     281        //if ($debug > 1) {echo "<p class='dbg'>function zeile_strasse()<p>";} // Ablauf-Verfolgung 
     282 
     283        echo "\n\t<div class='stl' title='Stra&szlig;enschl&uuml;ssel ".$skey."'>"; 
     284 
     285        // Icon -> Buchnachweis 
     286        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$kgml."\")'>"; 
     287                echo "\n\t\t<img class='nwlink' src='ico/Lage_mit_Haus.png' width='16' height='16' alt='STR' title='Auskunft Stra&szlig;e'>"; 
     288        echo "\n\t</a>"; 
     289        // Zeile -> Suche HsNr 
     290        echo " <a class='st' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;str_schl=".$gkey."' title='in ".$gemname."'>".$sname; 
     291        echo "</a> (".$skey.")"; 
     292 
     293        // Die Gemeinde dahinter falls mehrere möglich 
     294        switch ($gfilter) { 
     295                case 0: // Kein Filter 
     296                        echo " in ".$gemname; break; 
     297                case 2: // Liste 
     298                        echo " in ".$gemname; break; 
     299        } 
     300        echo "</div>"; 
     301        return; 
    242302} 
    243303 
     
    257317                $sql1.="st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y, ";                      
    258318        } 
    259         $sql1.="g.gemarkung, g.gemarkungsname FROM ax_buchungsstelle s1 ";  
     319        $sql1.="g.bezeichnung FROM ax_buchungsstelle s1 ";  
    260320 
    261321        // zwischen, Variante 1. 
     
    267327 
    268328        // hinten gleich 
    269         $sql2="JOIN pp_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung  
     329        $sql2="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    270330        WHERE s1.istbestandteilvon = $1 AND f.endet IS NULL AND s1.endet IS NULL "; 
     331 
    271332        switch ($gfilter) { 
    272333                case 1: // Einzelwert 
    273                         $sql2.="AND g.gemeinde='".$gemeinde."' "; break; 
     334                        $sql2.="AND f.gemeinde='".$gemeinde."' "; break; 
    274335                case 2: // Liste 
    275                         $sql2.="AND g.gemeinde in ('".str_replace(",", "','", $gemeinde)."') "; break; 
     336                        $sql2.="AND f.gemeinde in ('".str_replace(",", "','", $gemeinde)."') "; break; 
    276337        } 
    277338 
     
    301362                } 
    302363                $fs_gml=$row["gml_id"]; 
    303                 $gmkg=$row["gemarkungsname"]; 
     364                $gmkg=$row["bezeichnung"]; 
    304365                $flur=$row["flurnummer"]; 
    305366                $fskenn=$row["zaehler"]; 
     
    339400                } 
    340401                $fs_gml=$row["gml_id"]; 
    341                 $gmkg=$row["gemarkungsname"]; 
     402                $gmkg=$row["bezeichnung"]; 
    342403                $flur=$row["flurnummer"]; 
    343404                $fskenn=$row["zaehler"]; 
  • trunk/mapbender/http/nav/alkisnav_fls.php

    r356 r376  
    11<?php 
    2 /* Version vom 
    3         2013-04-16      "import_request_variables" entfÀllt in PHP 5.4,  
    4                                 Fehlerkorrektur Komma in SQL bei FS-Suche. 
    5         2013-04-26      Ersetzen View "gemeinde_gemarkung" durch Tabelle "pp_gemarkung" 
    6                                 ZurÃŒck-Link, Titel der Transaktion anzeigen 
    7         2013-04-29      Test mit IE 
    8         2013-05-07      Strukturierung des Programms, redundanten Code in Functions zusammen fassen 
    9         2013-05-14      Variablen-Namen geordnet, Hervorhebung aktuelles Objekt, Title auch auf Icon, IE zeigt sonst alt= als Title dar. 
    10         2013-10-15      missing Parameter 
    11         2014-09-03      PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer 
    12         2014-09-15      Bei Relationen den Timestamp abschneiden, mehr "endet IS NULL" 
    13         2014-12-11      Fehlerbehandlung bei Eingabe ungÃŒltiger Gemarkungsnummer. Tabellen pp_gemarkung und pp_flur verwenden. 
    14         2015-06-11      EineFlur, Limit fÃŒr Flurstuecke von 600 auf 900 erhoeht 
    15         2015-12-10      Umstellen .ico auf .png, 
    16                                 Vermeidung nicht initialisierter Variable. Somit ausfÃŒhrbar mit php.ini-Einstellungen: 
    17                                 - error_reporting = E_ALL | E_STRICT 
    18                                 - display_errors = on 
    19                                 .. ohne störende Meldungen. 
     2/*      Navigation mit ALKIS-Daten im Mapbender 2.7 - Teil FlurstÃŒck-Suche  
     3        Diese Version des Programms verwendet die Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 
     4 
     5Hinweis: In der Mapbender-Konfiguration muss die Gemeindenummer nun 3stellig mit fÃŒhrenden 0 angegeben sein.  
     6 
     7Version vom 
     8        2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 
     9        2016-03-02 $gemeinde auf feste LÀnge korrigieren 
     10        2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen 
    2011*/ 
    2112 
     
    2516 
    2617$cntget = extract($_GET); 
     18$gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); // temporÀr bei Umstellung auf norGIS, besser im Mapbender 3stellig konfigurieren. 
    2719include("../../conf/alkisnav_conf.php"); 
    2820include("alkisnav_fkt.php"); // Funktionen 
    29 $con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password; 
    30 $con = pg_connect ($con_string) or die ("Fehler bei der Verbindung zur Datenbank ".$dbname.$dbvers.$gkz); 
     21$con = pg_connect ($dbconn) or die ("Fehler bei der Verbindung zur Datenbank ".$dbpre.$dbgkz); 
    3122 
    3223echo <<<END 
    33 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    34 <html> 
     24<!doctype html> 
     25<html lang="de"> 
    3526<head> 
    3627        <meta http-equiv="cache-control" content="no-cache"> 
    3728        <meta http-equiv="pragma" content="no-cache"> 
    3829        <meta http-equiv="expires" content="0"> 
    39         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     30        <meta charset="utf-8"> 
    4031        <title>ALKIS-Suche Flurst&uuml;ck</title> 
    4132        <link rel="stylesheet" type="text/css" href="alkisnav.css"> 
     
    6253function h_hinten($zahl) { 
    6354        // Testen: Wurde an eine Zahl ein "h" angehÀngt? 
    64         // Wenn ja, dann Schalter setzen und nur numerischen Teil zurÃŒck geben. 
     55        // Wenn ja, dann Schalter setzen und nur den numerischen Teil zurÃŒck geben. 
    6556        global $phist, $debug; 
    6657        $zahl=trim($zahl); 
     
    8071 
    8172function ZerlegungFsKennz($fskennz) { 
    82         // Das eingegebene FlurstÃŒcks-Kennzeichen auseinander nehmen. Erwartet wird gggg-fff-zzzz/nnn 
    83         // Teile der Zerlegung in global-Vars "$z..." 
    84         global $debug, $zgemkg, $zflur, $zzaehler, $znenner;     
     73        // Das eingegebene FlurstÃŒcks-Kennzeichen auseinander nehmen. Erwartet wird (ll)gggg-fff-zzzz/nnn 
     74        // Die Teile der *Z*erlegung werden ÃŒber die Global-Variablen "$z..." allen Functions bereit gestellt. 
     75        // Der Returncode dieser Function steuert die weitere Verarbeitung. 
     76        global $debug, $land, $zgemkg4, $zgemkg6, $zflur, $zzaehler, $znenner;   
    8577        $arr = explode("-", $fskennz, 4); // an den Trenn-Strichen aufteilen 
    86         $zgemkg=trim($arr[0]); 
     78 
     79        // Gemarkung mit oder ohne Land davor? In der Eingabe soll beides zulÀssig sein. 
     80        // Bei den SQL-Abfragen in der norGIS-ALKIS-Importer Datenbankstruktur werden abwechselnd beide 
     81        // Formate benötigt: z.B. ax_gemarkungsteilflur.gemarkung -> 4stellig, gema_shl.gemashl -> 6stellig 
     82        // Also gleich beide Formate vorhalten. 
     83        $gemkg=trim($arr[0]); 
     84 
    8785        if (count($arr) > 1) { 
    8886                $zflur=h_hinten($arr[1]); 
     
    9694                $zfsnr=""; 
    9795        } 
    98         if ($debug > 1) {echo "<p class='dbg'>Gemkg: '".$zgemkg."' Flur: '".$zflur."' NR: '".$zfsnr."'</p>";} 
    99         if ($zgemkg == "") { 
     96        if ($debug > 1) {echo "<p class='dbg'>Gemkg: '".$gemkg."' Flur: '".$zflur."' NR: '".$zfsnr."'</p>";} 
     97 
     98        if ($gemkg == "") { 
    10099                return 0; // Gemeinden oder Gemarkungen listen 
    101         } elseif ( ! is_ne_zahl($zgemkg)) { 
     100        } elseif ( ! is_ne_zahl($gemkg)) { 
    102101                return 1; // Such Name 
    103         } elseif ($zflur == "") { 
    104                 return 2; // G-Nr 
     102        } 
     103 
     104        // Gemarkungs-NUMMER wurde eingegeben. Mit oder ohne Land davor? 
     105        if (strlen($gemkg) == 4 ) { // Eingabe ohne Land 
     106                $zgemkg4=$gemkg;                // 4stellige Version ohne Land 
     107                $zgemkg6=$land.$gemkg;  // 6stellige Version mit  Land 
     108        } elseif (strlen($gemkg) == 6 ) { // Eingabe mit Land 
     109                $zgemkg4=substr($gemkg, 2); 
     110                $zgemkg6=$gemkg; 
     111                if (substr($gemkg, 0, 2) != $land) { // Passt Eingabe zu Conf? 
     112                        echo "<p class='err'>Die 6-stellige Gemarkungsnummer '".$zgemkg6."' sollte mit Land '".$land."' beginnen.</p>"; 
     113                } 
     114        } else { // weder noch 
     115                $zgemkg4=$gemkg; // kann eigentlich nicht funktionieren 
     116                $zgemkg6=$gemkg; // Nullen davor setzen? 
     117                echo "<p class='err'>Die Gemarkungsnummer kann 4- oder 6-stellig (mit Land '".$land."') eingegeben werden.</p>"; 
     118        } 
     119 
     120        if ($zflur == "") { // keine Eingabe Flur-Nummer 
     121                return 2; // also nur Gemarkungs-Nr eingegeben 
    105122        } elseif ( ! is_ne_zahl($zflur)) { 
    106123                echo "<p class='err'>Die Flurnummer '".$zflur."' ist nicht numerisch</p>"; 
    107124                return 9; 
    108         } elseif ($zfsnr == "") { 
     125        } elseif ($zfsnr == "") { // Flur eingegeben, aber keine FlurstÃŒcksnummer mehr 
    109126                return 3; // Flur                                
    110127        } else { 
    111                 $zn=explode("/", $zfsnr, 2); 
     128                $zn=explode("/", $zfsnr, 2); // Bruchnummer? 
    112129                $zzaehler=h_hinten(trim($zn[0])); 
    113130                if (count($zn) > 1) {$znenner=h_hinten(trim($zn[1]));} else {$znenner="";} 
     
    149166} 
    150167 
    151 function zeile_gemarkung($gkgnr, $gkgname, $aktuell) { 
    152 // Eine Zeile zu Gemarkung ausgeben 
    153         global $con, $gkz, $gemeinde, $epsg, $gfilter; 
    154  
    155         if ($gkgname == "") { // Falls Gem.-Name fehlt, in DB nachschlagen 
    156                 $sql ="SELECT g.gemarkungsname FROM pp_gemarkung g WHERE g.gemarkung = $1 LIMIT 1;"; 
    157                 $v=array($gnr); 
    158                 $res=pg_prepare("", $sql); 
    159                 $res=pg_execute("", $v); 
    160                 if (!$res) {echo "\n<p class='err'>Fehler bei Gemarkungsname.</p>";} 
    161                 $row = pg_fetch_array($res); 
    162                 $gkgname=$row["gemarkungsname"]; 
    163         } 
    164  
    165         if ($gkgname == "") {$gkgname = "(unbekannt)";} 
    166         $gnam=htmlentities($gkgname, ENT_QUOTES, "UTF-8"); 
    167         if ($aktuell) {$cls=" aktuell";} else {$cls="";} 
    168  
    169         echo "\n<div class='gk".$cls."' title='Gemarkung'>"; 
    170         echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.png' width='16' height='16' alt='GKG' title='Gemarkung'>"; 
    171         echo " OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$gkgnr."'>";             
    172         echo  " ".$gnam."</a> (".$gkgnr.")"; 
    173         echo "\n</div>"; 
    174         return; 
    175 } 
    176  
    177 function zeile_flur($gkgnr, $flurnr, $histlnk, $aktuell) { // Eine Zeile zur Flur ausgeben 
     168function zeile_flur($gkgnr, $flurnr, $histlnk, $aktuell) {  
     169        // Eine Kopf-Zeile zur Flur ausgeben 
    178170        global $gkz, $gemeinde, $epsg; 
     171 
    179172        if ($aktuell) {$cls=" aktuell";} else {$cls="";} 
    180173        echo "\n<div class='fl".$cls."' title='Flur'>"; 
     
    182175        $url=$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$gkgnr."-".$flurnr; 
    183176        echo "<a title='Aktuelle Flurst&uuml;cke suchen' href='".$url."'>Flur ".$flurnr." </a>";  
     177 
    184178        if ($histlnk) { // Link zur Historie-Suche anbieten 
    185179                echo " <a class='hislnk' title='Historische Flurst&uuml;cke der Flur suchen' href='".$url."&amp;hist=j'>Hist.</a>"; 
     
    217211 
    218212function zeile_nachf_fs($gml, $gknr, $flur, $fskenn, $ftyp) { 
    219         // Eine Zeile fÃŒr ein Nachfolger-FlurstÃŒck eines hist. Fs. ausgeben  
     213        // Eine Zeile fÃŒr ein Nachfolger-FlurstÃŒck eines hist. Fs. ausgeben 
    220214        global $gkz, $gemeinde, $epsg, $auskpath; 
     215 
    221216        $fs=$gknr."-".$flur."-".$fskenn; 
    222217        switch ($ftyp) { 
     
    250245 
    251246function ListGemeinden() { 
    252         // Bei Leereingabe im Formular die Gemeinden auflisten 
     247        // Bei Leereingabe im Formular die berechtigte(n) Gemeinde(n) auflisten 
    253248        global $con, $gkz, $gemeinde, $epsg, $debug, $gfilter; 
    254249        $linelimit=60; 
    255250 
    256         $sql ="SELECT gemeinde, gemeindename FROM pp_gemeinde "; 
     251        $sql ="SELECT trim(trailing from gemshl) as gemshl, gemname FROM gem_shl "; 
    257252        switch ($gfilter) { 
    258253                case 1: // Einzelwert 
    259                         $sql.="WHERE gemeinde='".$gemeinde."' "; break; 
     254                        $sql.="WHERE substring(gemshl from 6 for 3) = '".$gemeinde."' "; break; 
    260255                case 2: // Liste 
    261                         $sql.="WHERE gemeinde in ('".str_replace(",", "','", $gemeinde)."') "; break; 
     256                        $sql.="WHERE substring(gemshl from 6 for 3) in ('".str_replace(",", "','", $gemeinde)."') "; break; 
    262257                default: break; 
    263258        } 
    264         $sql.=" AND endet IS NULL ORDER BY gemeindename LIMIT $1 ;"; 
     259        $sql.=" AND endet IS NULL ORDER BY gemname LIMIT $1 ;"; 
    265260        $res=pg_prepare("", $sql); 
    266261        $res=pg_execute("", array($linelimit)); 
    267262        if (!$res) { 
    268263                echo "\n<p class='err'>Fehler bei Gemeinde</p>"; 
    269                 #if ($debug >= 3) {echo "\n<p class='dbg'>".$sql."</p>";} 
     264                if ($debug >= 3) {echo "\n<p class='dbg'>".$sql."</p>";} // ++Nur Entw. 
    270265                return 0; 
    271266        } 
    272267        $cnt = 0; 
    273268        while($row = pg_fetch_array($res)) { 
    274                 $gnr=$row["gemeinde"]; 
    275                 $gemeindename=$row["gemeindename"]; 
     269                $gnr=$row["gemshl"]; 
     270                $gemeindename=$row["gemname"]; 
    276271                zeile_gemeinde($gnr, $gemeindename); 
    277272                $cnt++; 
     
    299294 
    300295        // Body 
    301         $sql ="SELECT gemarkung, gemarkungsname FROM pp_gemarkung WHERE gemeinde= $1 ORDER BY gemarkungsname LIMIT $2 ;"; 
     296        $sql ="SELECT gemashl, trim(trailing from gemarkung) AS gemarkung FROM gema_shl WHERE substring(gemshl from 1 for 8) = $1 ORDER BY gemarkung LIMIT $2 ;"; 
    302297        $res=pg_prepare("", $sql); 
    303298        $res=pg_execute("", array($gkey, $linelimit)); 
     
    308303        $cnt = 0; 
    309304        while($row = pg_fetch_array($res)) { 
    310                 $gnr=$row["gemarkung"]; 
    311                 $gnam=$row["gemarkungsname"]; 
     305                $gnr=$row["gemashl"]; // 6stellig 
     306                $gnam=$row["gemarkung"]; 
    312307                zeile_gemarkung($gnr, $gnam, false); 
    313308                $cnt++; 
     
    334329        } else { 
    335330                $match = trim($fskennz)."%"; 
    336         }        
    337         $sql ="SELECT g.gemeinde, g.gemarkung, g.gemarkungsname, s.gemeindename  
    338         FROM pp_gemarkung g JOIN pp_gemeinde s ON g.gemeinde=s.gemeinde WHERE g.gemarkungsname ILIKE $1 "; 
     331        } 
     332 
     333        // Pass auf! GemeindeschlÃŒssel ist in den beiden SchlÃŒsseltabellen linksbÃŒndig gefÃŒllt, 
     334        // aber unterschiedlich lang hinten mit Leerstellen aufgefÃŒllt. 
     335        $sql ="SELECT substring(g.gemshl from 1 for 8) AS gemshl, g.gemashl, trim(trailing from g.gemarkung) AS gemarkung, trim(trailing from s.gemname) AS gemname  
     336        FROM gema_shl g JOIN gem_shl s ON substring(g.gemshl from 1 for 8) = substring(s.gemshl from 1 for 8) WHERE g.gemarkung ILIKE $1 "; 
     337 
    339338        switch ($gfilter) { 
    340339                case 1: // Einzelwert 
    341                         $sql.="AND g.gemeinde='".$gemeinde."'"; break; 
     340                        $sql.="AND substring(g.gemshl from 6 for 3)='".$gemeinde."'"; break; 
    342341                case 2: // Liste 
    343                         $sql.="AND g.gemeinde in ("."'".str_replace(",", "','", $gemeinde)."'".") "; break; 
    344         } 
    345         $sql.=" ORDER BY s.gemeindename, g.gemarkungsname LIMIT $2 ;"; 
     342                        $sql.="AND substring(g.gemshl from 6 for 3) in ("."'".str_replace(",", "','", $gemeinde)."'".") "; break; 
     343        } 
     344        $sql.=" ORDER BY s.gemname, g.gemarkung LIMIT $2 ;"; 
     345 
    346346        $v=array($match, $linelimit); 
    347347        $res=pg_prepare("", $sql); 
     
    354354        $gwgem=""; 
    355355        while($row = pg_fetch_array($res)) { 
    356                 $gemeindename=$row["gemeindename"]; 
     356                $gemeindename=$row["gemname"]; 
    357357                if ($gwgem != $gemeindename) { // Gruppierung Gemeinde 
    358358                        $gwgem = $gemeindename; 
    359                         $skey=$row["gemeinde"]; 
     359                        $skey=$row["gemshl"]; 
    360360                        zeile_gemeinde($skey, $gemeindename, false); 
    361361                } 
    362                 $gnam=$row["gemarkungsname"]; 
    363                 $gnr=$row["gemarkung"]; 
     362                $gnam=$row["gemarkung"]; 
     363                $gnr=$row["gemashl"]; // 6stellig 
    364364                zeile_gemarkung($gnr, $gnam, false); // wenn am Ende nur ein Treffer, dann aktuell=true 
    365365                $cnt++; 
     
    368368        if($cnt == 0){  
    369369                echo "\n<p class='anz'>Keine Gemarkung.</p>"; 
     370                if ($debug > 1) { 
     371/* 
     372                        // Nach Umstellung auf NorGIS-Struktur muss im Mapbender die Gemeinde 3stellig konfiguriert werden 
     373                        if (strlen($gemeinde) < 3) { 
     374                                echo "<p class='err'>URL-Parameter &gemeinde=nnn im Mapbender gazetteer_alkis.SRC muss 3stellig sein!<br>Ist aber '".$gemeinde."'.</p>"; 
     375                        } 
     376*/ 
     377                        if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = ".$match."</p>";} 
     378                } 
    370379        } elseif($cnt >= $linelimit) { 
    371380                echo "\n<p class='anz' title='Bitte eindeutiger qualifizieren'>".$cnt." Gemarkungen ... und weitere</p>"; 
    372381        } elseif($cnt == 1) { // Eindeutig! 
    373                 return $gnr;  
     382                return $gnr; // 6stellige Gemarkungsnummer! 
    374383        } else { 
    375384                echo "\n<p class='anz'>".$cnt." Gemarkungen</p>"; 
     
    378387} 
    379388 
    380 function gg_head($gkgnr, $gkgaktuell) { 
    381         // Kopf-Zeilen Gemeinde und Gemarkung ausgeben 
    382         // Parameter: Gemarkungsnummer, aktuell hervorzuhebende Zeile 
     389function gg_head($gkgnr6, $gkgaktuell) { 
     390        // Gemeinde und Gemarkung (G+G) Kopf-Zeilen ausgeben 
     391        // Parameter: Gemarkungsnummer (6stellig), aktuell hervorzuhebende Zeile 
    383392        // Return: true/false ob gefunden  
    384393 
    385         $sqlh ="SELECT g.gemarkungsname, s.gemeinde, s.gemeindename FROM pp_gemarkung g  
    386         JOIN pp_gemeinde s ON g.gemeinde=s.gemeinde AND g.land=s.land WHERE g.gemarkung = $1 ;"; 
    387  
    388         $v=array($gkgnr); 
     394        $sqlh ="SELECT g.gemarkung, substring(s.gemshl from 1 for 8) AS gemshl, trim(trailing from s.gemname) AS gemname  
     395        FROM gema_shl g JOIN gem_shl s ON g.gemshl=s.gemshl WHERE g.gemashl = $1 ;"; 
     396 
     397        $v=array($gkgnr6); 
    389398        $resh=pg_prepare("", $sqlh); 
    390399        $resh=pg_execute("", $v); 
     
    393402 
    394403        if ($rowh = pg_fetch_array($resh)) { 
    395                 $gmkg=$rowh["gemarkungsname"]; 
    396                 $skey=$rowh["gemeinde"]; 
    397                 $snam=$rowh["gemeindename"]; 
     404                $gmkg=$rowh["gemarkung"]; 
     405                $skey=$rowh["gemshl"]; 
     406                $snam=$rowh["gemname"]; 
    398407                zeile_gemeinde($skey, $snam, false); 
    399                 zeile_gemarkung($gkgnr, $gmkg, $gkgaktuell); 
     408                zeile_gemarkung($gkgnr6, $gmkg, $gkgaktuell); 
    400409                return true; 
    401410    } else { 
    402411                echo "\n<div class='gk' title='Gemarkung'>"; 
    403412                echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.png' width='16' height='16' alt='GKG' title='Gemarkung'>"; 
    404                 echo " Gemarkung ".$gkgnr." nicht gefunden!\n</div>"; 
     413                echo " Gemarkung ".$gkgnr6." nicht gefunden!\n</div>"; 
    405414                return false; 
    406415        } 
     
    409418function EineGemarkung($AuchGemkZeile) { 
    410419        // Kennzeichen bestehend nur aus Gemarkung-SchlÃŒssel wurde eingegeben 
    411         global $con, $gkz, $gemeinde, $epsg, $debug, $zgemkg; 
     420        global $con, $gkz, $gemeinde, $epsg, $debug, $zgemkg4, $zgemkg6; 
    412421        $linelimit=120; // max.Fluren/Gemkg 
    413422 
    414423        // Head 
    415424        if ($AuchGemkZeile) { // Kopf davor ausgeben 
    416                 if (! gg_head($zgemkg, true)) { 
     425                if (! gg_head($zgemkg6, true)) { 
    417426                        if ($debug >= 1) {echo "\n<p class='dbg'>Gem.-Gemkg.-Kopf abgebrochen</p>";}     
    418427                        return false; 
     
    421430 
    422431        // Body 
    423         // Tabelle pp_flur verwenden um nur Fluren aufzulisten, die tatsÀchlich FlurstÃŒcke enthalten 
    424         $sql ="SELECT flurnummer AS flur FROM pp_flur f WHERE gemarkung= $1 ORDER BY flurnummer LIMIT $2 ;"; 
    425         $v=array($zgemkg, $linelimit); 
     432        $sql ="SELECT gemarkungsteilflur AS flur FROM ax_gemarkungsteilflur f WHERE gemarkung= $1 ORDER BY gemarkungsteilflur LIMIT $2 ;"; 
     433        $v=array($zgemkg4, $linelimit); 
    426434        $res=pg_prepare("", $sql); 
    427435        $res=pg_execute("", $v); 
     
    431439        while($row = pg_fetch_array($res)) {     
    432440                $zflur=$row["flur"]; 
    433                 zeile_flur($zgemkg, $zflur, false, false); 
     441                zeile_flur($zgemkg4, $zflur, false, false); 
    434442                $zfl++; 
    435443        } 
     
    448456function EineFlur() { 
    449457        // Kennzeichen aus Gemarkung und FlurNr wurde eingegeben, dazu aktuelle FlurstÃŒcke suchen 
    450         global $con, $gkz, $gemeinde, $epsg, $debug, $zgemkg, $zflur; 
     458        global $con, $gkz, $gemeinde, $epsg, $debug, $zgemkg4, $zgemkg6, $zflur; 
    451459        $linelimit=900; // Wie groß kann eine Flur sein? 
    452460 
    453461        // Head 
    454         if (gg_head($zgemkg, false)) { 
    455                 zeile_flur($zgemkg, $zflur, true, true); 
     462        if (gg_head($zgemkg6, false)) { 
     463                zeile_flur($zgemkg4, $zflur, true, true); 
    456464        } else { 
    457465                return false; 
     
    467475                $sql.="st_y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y ";                        
    468476        } 
     477 
    469478        $sql.="FROM ax_flurstueck f WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 AND endet IS NULL  
    470479        ORDER BY f.zaehler, f.nenner LIMIT $3 ;"; 
    471         $v=array($zgemkg, $zflur, $linelimit); 
     480        $v=array($zgemkg4, $zflur, $linelimit); 
    472481        $res=pg_prepare("", $sql); 
    473482        $res=pg_execute("", $v); 
     
    495504 
    496505function HistFlur() { 
    497         // Kennzeichen aus Gemarkung und FlurNr wurde eingegeben. 
     506        // Kennzeichen aus Gemarkung und FlurNr wurde eingegeben, "h" dahinter. 
    498507        // Die Flur nach historischen FlurstÃŒcken durchsuchen 
    499         global $con, $gkz, $gemeinde, $epsg, $debug, $scalefs, $auskpath, $land, $zgemkg, $zflur; 
     508        global $con, $gkz, $gemeinde, $epsg, $debug, $scalefs, $auskpath, $land, $zgemkg4, $zgemkg6, $zflur; 
    500509        $linelimit=500; 
    501510 
    502511        // Head  
    503         if (gg_head($zgemkg, false)) { 
    504                 zeile_flur($zgemkg, $zflur, true, true); 
     512        if (gg_head($zgemkg6, false)) { 
     513                zeile_flur($zgemkg4, $zflur, true, true); 
    505514        } else { 
    506515                return false; 
     
    509518        // Body 
    510519        $whcl="WHERE flurstueckskennzeichen like $1 AND endet IS NULL "; 
    511         $sql ="SELECT 'h' AS ftyp, gml_id, zaehler, nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueck ".$whcl; 
    512         $sql.="UNION SELECT 'o' AS ftyp, gml_id, zaehler, nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueckohneraumbezug ".$whcl; 
     520 
     521        $sql ="SELECT 'h' AS ftyp, gml_id, cast(zaehler AS integer) AS zaehler, cast(nenner AS integer) AS nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueck ".$whcl; 
     522        $sql.="UNION SELECT 'o' AS ftyp, gml_id, cast(zaehler AS integer) AS zaehler, cast(nenner AS integer) AS nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueckohneraumbezug ".$whcl; 
    513523        $sql.="ORDER BY zaehler, nenner LIMIT $2 ;";  
    514         $fskzwhere =$land.$zgemkg.str_pad($zflur, 3, "0", STR_PAD_LEFT)."%"; 
     524        // "zaehler" und "nenner" sind in der Classic-Datenbank Integer-Werte aber in der Struktur  
     525        // des norGIS-ALKIS-Importers sind das Character-Strings, die linksbÃŒndig ohne fÃŒhrende Nullen gefÃŒllt sind. 
     526        // Der Anwender erwartet aber eine "numerische" Sortierung. 
     527 
     528        $fskzwhere=$zgemkg6.str_pad($zflur, 3, "0", STR_PAD_LEFT)."%"; 
    515529        $v=array($fskzwhere, $linelimit); 
    516530        $res=pg_prepare("", $sql); 
     
    523537                $fskenn=$row["zaehler"]; 
    524538                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer 
    525                 zeile_hist_fs($fs_gml, $fskenn, $ftyp, $zgemkg, $zflur, false); 
     539                zeile_hist_fs($fs_gml, $fskenn, $ftyp, $zgemkg4, $zflur, false); 
    526540                $zfs++; 
    527541        } 
     
    542556        // FlurstÃŒckskennzeichen wurde komplett bis zum Zaehler (oder Nenner) eingegeben 
    543557        // Sonderfall: bei Bruchnummer, mehrere Nenner zum Zaehler suchen wenn kein Nenner eingegeben wurde. 
    544         global $con, $gkz, $debug, $epsg, $gemeinde, $fskennz, $zgemkg, $zflur, $zzaehler, $znenner; 
     558        global $con, $gkz, $debug, $epsg, $gemeinde, $fskennz, $zgemkg4, $zgemkg6, $zflur, $zzaehler, $znenner; 
    545559 
    546560        // Head 
    547         if (gg_head($zgemkg, false)) { 
    548                 zeile_flur($zgemkg, $zflur, true, false); 
     561        if (gg_head($zgemkg6, false)) { // Kopfzeilen: Gemeinde, Gemerkung, .. 
     562                zeile_flur($zgemkg4, $zflur, true, false); // .., Flur 
    549563        } else { 
    550564                return false; 
     
    561575        } 
    562576        $sql.="FROM ax_flurstueck f WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 AND f.zaehler= $3 "; 
    563         If ($znenner != "") {$sql.="AND f.nenner=".$znenner." ";} // wie prepared? 
    564         $sql.="AND endet IS NULL ORDER BY f.zaehler, f.nenner;"; 
    565         $v=array($zgemkg, $zflur, $zzaehler); 
     577 
     578//      If ($znenner != "") {$sql.="AND f.nenner=".$znenner." ";} 
     579 
     580        // norGIS: "zaehler" ist integer in der DB, aber "nenner" ist character, linksbÃŒndig ohne fÃŒhrende '0' 
     581        If ($znenner != "") { 
     582                $suchnenn = ltrim($znenner, '0'); 
     583                If ($suchnenn != "") { 
     584                        $sql.="AND f.nenner='".$suchnenn."' "; 
     585                } 
     586        } 
     587        $sql.="AND endet IS NULL ORDER BY f.zaehler, cast(f.nenner AS integer);"; 
     588        $v=array($zgemkg4, $zflur, $zzaehler); 
    566589        $res=pg_prepare("", $sql); 
    567590        $res=pg_execute("", $v); 
    568         if (!$res) {echo "\n<p class='err'>Fehler bei Flurst&uuml;ck.</p>";} 
     591        if (!$res) { 
     592                echo "\n<p class='err'>Fehler bei Flurst&uuml;ck.</p>"; 
     593                if ($debug > 2) {echo "<p class='dbg'>SQL = '".$sql."'<br>Parameter $1='".$zgemkg4."' $2='".$zflur."' $3='".$zzaehler."'<p>";} 
     594        } 
     595 
     596 
    569597        $zfs=0; 
    570598        while($row = pg_fetch_array($res)) {     
     
    582610                        echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Historisch.png' width='16' height='16' alt='Historisches Flurst&uuml;ck'>&nbsp;"; 
    583611                        echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$fskennz."&amp;hist=j'>"; 
    584                         echo $zgemkg."-".$zflur."-".$zzaehler; 
     612                        echo $zgemkg4."-".$zflur."-".$zzaehler; 
    585613                        if ($znenner != "") {echo "/".$znenner;} 
    586614                        echo " h - suchen</a>"; 
     
    592620function HistFlurstueck() { 
    593621        // Die Nachfolger-FS-Kennzeichen zu einem Historischen FS sollen recherchiert werden. 
    594         global $debug, $land, $zgemkg, $zflur, $zzaehler, $znenner; 
     622        global $debug, $land, $zgemkg4, $zgemkg6, $zflur, $zzaehler, $znenner; 
    595623 
    596624        // Head 
    597         if (gg_head($zgemkg, false)) { 
    598                 zeile_flur($zgemkg, $zflur, true, false); 
     625        if (gg_head($zgemkg6, false)) { 
     626                zeile_flur($zgemkg4, $zflur, true, false); 
    599627        } else { 
    600628                return false; 
     
    604632        // Body 
    605633        // Suche ueber das Flurstueckskennzeichen, gml unbekannt 
    606         $fskzwhere =$land.$zgemkg; // Flurst-Kennz. f. Where 
     634        $fskzwhere=$zgemkg6; // Flurst-Kennz. f. Where 
    607635        $fskzwhere.=str_pad($zflur, 3, "0", STR_PAD_LEFT); 
    608636        $fskzwhere.=str_pad($zzaehler, 5, "0", STR_PAD_LEFT); 
     
    639667                $ftyp=$row["ftyp"]; 
    640668                $fs_gml=$row["gml_id"]; 
    641                 $gknr=$row["gemarkungsnummer"]; 
     669                $gknr=$land.$row["gemarkungsnummer"]; // Land davor 
    642670                $flur=$row["flurnummer"]; 
    643671                $fskenn=$row["zaehler"]; 
     
    646674 
    647675                zeile_hist_fs($fs_gml, $fskenn, $ftyp, $gknr, $flur, true); 
     676 
    648677                if ($nachf == "") { 
    649678                        echo "\n<p class='anz'>keine Nachfolger</p>";    
     
    659688                        $nawhcl="WHERE flurstueckskennzeichen IN ( ".$stri." ) AND endet IS NULL "; 
    660689 
    661                         $nasql ="SELECT 'a' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_flurstueck ".$nawhcl; 
     690                        // Pass auf! Spalte zaehler hat unterschiedliches Format in den 3 Tabellen 
     691                        $nasql ="SELECT 'a' AS ftyp, gml_id, gemarkungsnummer, flurnummer, cast(zaehler AS character varying), nenner FROM ax_flurstueck ".$nawhcl; 
    662692                        $nasql.="UNION SELECT 'h' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_historischesflurstueck ".$nawhcl; 
    663693                        $nasql.="UNION SELECT 'o' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_historischesflurstueckohneraumbezug ".$nawhcl; 
     
    677707                                $naftyp=$narow["ftyp"]; 
    678708                                $nagml=$narow["gml_id"]; 
    679                                 $nagknr=$narow["gemarkungsnummer"]; 
     709                                $nagknr=$land.$narow["gemarkungsnummer"]; // Land davor, 4 auf 6 Stellen 
    680710                                $naflur=$narow["flurnummer"]; 
    681711                                $nafskenn=$narow["zaehler"]; 
     
    692722                        echo "\n<hr>"; 
    693723                } 
    694                 #} // aktuell ... 
    695724                $zfs++; 
    696725        } 
     
    712741        $epsg=$gui_epsg; // Conf 
    713742} 
     743 
     744// Filter aus Mapbender-GUI-Einbindung 
    714745if ($gemeinde == "") { 
    715746        $gfilter = 0; 
     
    725756        $gnr=ListGmkgInGemeinde($gm, $bez); 
    726757        if ($gnr > 0) { 
    727                 $zgemkg=$gnr; 
     758                $zgemkg4=$gnr; 
     759                $zgemkg6=$land.$zgemkg4; 
    728760                EineGemarkung(false); 
    729761        } 
     
    731763        $retzer=ZerlegungFsKennz($fskennz); 
    732764        if ($debug >= 1) {echo "\n<p class='dbg'>Return Zerlegung: ".$retzer."</p>";}    
    733         switch ($retzer) { // Return der Zerlegung 
     765        switch ($retzer) { // Returnwert der Zerlegung des FS-Kennz. 
    734766        case 0: // leere Eingabe 
    735767                if ($gfilter == 1) { // Die GUI ist bereits auf EINE Gemeinde gefiltert 
     
    746778                if ($gnr > 0) { 
    747779                        $trans="1 Gemarkung, Fluren dazu"; 
    748                         $zgemkg=$gnr; 
     780                        $zgemkg6=$gnr; 
     781                        $zgemkg4=substr($zgemkg6, 2); 
    749782                        EineGemarkung(false); 
    750783                } 
  • trunk/mapbender/http/nav/alkisnav_grd.php

    r356 r376  
    11<?php 
    2 /* Version vom 
    3         2013-04-16      "import_request_variables" entfÀllt in PHP 5.4 
    4         2013-04-26      Ersetzen View "gemeinde_gemarkung" durch Tabelle "pp_gemarkung" 
    5                                 Code aus _eig nach_fkt ausgelegert, hier mit nutzen.  
    6                                 Dazu Var-Namen harmonisieren: $gblatt wird $blattgml 
    7                                 ZurÃŒck-Link, Titel der Transaktion anzeigen. 
    8         2013-04-29      Test mit IE 
    9         2013-05-07      Strukturierung des Programms, redundanten Code in Functions zusammen fassen 
    10         2013-05-14      Hervorhebung aktuelles Objekt. Title "Nachweis" auch auf Icon. 
    11         2013-12-12      Limit in EinBlatt von 200 weit hoch gesetzt (bis BlÀttern möglich wird) 
    12         2014-09-03      PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer 
    13         2014-09-15      Bei Relationen den Timestamp abschneiden 
    14         2014-09-30      RÃŒckbau substring(gml_id) 
    15         2015-12-10      Umstellen .ico auf .png, Vermeidung nicht initialisierter Variable 
     2/*      Navigation mit ALKIS-Daten im Mapbender 2.7 - Teil Grundbuch-Suche  
     3        Diese Version des Programms verwendet die Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 
     4 
     5Version vom 
     6        2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 
     7        2016-03-02 $gemeinde auf feste LÀnge korrigieren 
     8        2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen 
    169*/ 
    1710 
     
    2316 
    2417$cntget = extract($_GET); 
     18$gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); // temporÀr .. 
    2519include("../../conf/alkisnav_conf.php"); // Konfigurations-Einstellungen 
    2620include("alkisnav_fkt.php"); // Funktionen 
    27  
    28 $con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password; 
    29 $con = pg_connect ($con_string) or die ("Fehler bei der Verbindung zur Datenbank ".$dbname.$dbvers.$gkz); 
     21$con = pg_connect ($dbconn) or die ("Fehler bei der Verbindung zur Datenbank ".$dbpre.$dbgkz); 
    3022 
    3123echo <<<END 
    32 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    33 <html> 
     24<!doctype html> 
     25<html lang="de"> 
    3426<head> 
    3527        <meta http-equiv="cache-control" content="no-cache"> 
    3628        <meta http-equiv="pragma" content="no-cache"> 
    3729        <meta http-equiv="expires" content="0"> 
    38         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     30        <meta charset="utf-8"> 
    3931        <title>ALKIS-Suche Grundbuch</title> 
    4032        <link rel="stylesheet" type="text/css" href="alkisnav.css"> 
     
    6355 
    6456function ListAG($liste_ag, $aktuell) { 
    65         // Amtsgerichte (Grundbuch) auflisten, dazu als Filter eine AG-Liste 
     57        // Amtsgerichte (Grundbuchamt) auflisten, dazu als Filter die AG-Liste aus Conf-Datei verwenden. 
    6658        global $debug; 
    6759        $linelimit=40; 
     
    9789function ListGBBez($agkey) { 
    9890        // Grundbuch-Bezirke zu einem Amtsgericht auflisten. 
    99         // Auch wenn BlÀtter da sind, kann es eine Sackgasse sein.  
    100         // Manchmal haben die BlÀtter keine FlurstÃŒcke im Filter-Bereich 
     91        // Auch wenn BlÀtter vorhanden sind, kann es eine "Sackgasse" sein. 
     92        // Manchmal haben die BlÀtter keine FlurstÃŒcke im Filter-Bereich (Gemeinde). 
    10193        global $debug; 
    10294        $linelimit=100; // Bezirke/AG 
     
    140132 
    141133function ag_bez_head($gbbez, $bezaktuell) { 
    142         // Zu einem Grundbuchbezirks-SchlÃŒssel die Zeilen AG und Bezirk ausgeben 
     134        // Zu einem Grundbuchbezirks-SchlÃŒssel die Zeilen "AG" und "Bezirk" ausgeben 
    143135        // Parameter = SchlÃŒssel des Bezirks 
    144136        #global $debug; 
     
    304296        if ($showParent) { 
    305297                ag_bez_head($zgbbez, false); // AG + BEZ 
    306                 zeile_blatt ($zgbbez, $gbbeznam, $blattgml, $zblatt, false, "", true); 
     298                zeile_blatt ($zgbbez, "", $blattgml, $zblatt, false, "", true); 
    307299        } 
    308300        // Body 
     
    381373        // Body 
    382374        // Anfang (Select-Liste) gleich  
    383         $sqlanf ="SELECT g.gemeinde, g.gemarkungsname, f.gml_id, f.flurnummer, f.zaehler, f.nenner, "; 
     375        $sqlanf ="SELECT g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, "; 
    384376        if($epsg == "25832") { // Transform nicht notwendig 
    385377                $sqlanf.="st_x(st_Centroid(f.wkb_geometry)) AS x, "; 
     
    393385        switch ($gfilter) { // Filter Gemeinde 
    394386                case 1: // Einzel 
    395                         $sqlfitler="AND g.gemeinde='".$gemeinde."' "; break; 
     387                        $sqlfitler="AND f.gemeinde='".$gemeinde."' "; break; 
    396388                case 2: // Liste 
    397                         $sqlfilter="AND g.gemeinde in ('".str_replace(",", "','", $gemeinde)."') "; break; 
     389                        $sqlfilter="AND f.gemeinde in ('".str_replace(",", "','", $gemeinde)."') "; break; 
    398390        } 
    399391 
    400392        // Direkte Buchungen (Flurst.) 
    401         $sql =$sqlanf."FROM ax_flurstueck f JOIN pp_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung "; 
     393        $sql =$sqlanf."FROM ax_flurstueck f JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer "; 
    402394        $sql.="WHERE f.istgebucht = $1 AND f.endet IS NULL ".$sqlfilter."ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;"; 
    403395 
     
    414406        while($row = pg_fetch_array($res)) {     
    415407                $fs_gml=$row["gml_id"]; 
    416                 $gemei=$row["gemeinde"]; 
    417                 $gmkg=$row["gemarkungsname"]; 
     408                $gmkg=$row["bezeichnung"]; 
    418409                $flur=$row["flurnummer"]; 
    419410                $fskenn=$row["zaehler"]; 
     
    424415        // Zwischen-Foot 
    425416        if($zfs1 == 0) { 
    426                 echo "\n<p class='anz'>Kein Flurst&uuml;ck direkt</p>"; 
     417                echo "\n<p class='anz'>Kein Flurst&uuml;ck zu dieser Buchung</p>"; 
    427418        } elseif($zfs1 > 1) { 
    428419                echo "\n<p class='anz'>".$zfs1." Flurst&uuml;cke</p>"; 
     
    433424 
    434425        // Recht "an" (dienende Buchungen und ihre Flurst.) 
     426 
    435427$sql =$sqlanf.", sd.gml_id AS diengml, sd.laufendenummer AS dienlfd,  
    436428bd.gml_id AS dienbltgml, bd.buchungsblattnummermitbuchstabenerweiterung AS dienblatt,  
     
    439431JOIN ax_buchungsstelle sd ON sd.gml_id=ANY(sh.an)  
    440432JOIN ax_flurstueck f ON f.istgebucht=sd.gml_id  
    441 JOIN pp_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung  
     433JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    442434JOIN ax_buchungsblatt bd ON sd.istbestandteilvon=bd.gml_id  
    443435JOIN ax_buchungsblattbezirk gd ON bd.land=gd.land AND bd.bezirk=gd.bezirk  
    444436WHERE 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 " 
     437 
    445438.$sqlfilter."ORDER BY gd.bezeichnung, bd.buchungsblattnummermitbuchstabenerweiterung, cast(sd.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;"; 
    446439 
     
    457450        $gwblatt=""; 
    458451        while($row = pg_fetch_array($res)) { 
    459                 $dienstelle=$row["stelle"];     // Stelle (AG) des dienenden GrundstÃŒcks 
    460                 $dienbezgml=$row["dienbezgml"]; // Bezirks des dien. GS: gml, Nr. und Bezeichnung 
     452                $dienstelle=$row["stelle"];     // Stelle (AG) des dien. Grdst. 
     453                $dienbezgml=$row["dienbezgml"]; // Bezirk des dien. GS: gml, Nr. und Bezeichnung 
    461454                $diengbbez=$row["diengbbez"];   // Bezeichnung 
    462455                $dienbezirk=$row["bezirk"];     // Key 
    463                 $dienbltgml=$row["dienbltgml"]; // dienendes Blatt, gml und Nr 
     456                $dienbltgml=$row["dienbltgml"]; // dien. Blatt, gml und Nr 
    464457                $dienblatt=$row["dienblatt"]; 
    465                 $diengml=$row["diengml"];       // gml_id des dienenden GrundstÃŒcks 
     458                $diengml=$row["diengml"];       // gml_id des dien. Grdst. 
    466459                $dienlfd=$row["dienlfd"];       // BVNR (laufendNr) des dien. GS 
    467                 if ($gwblatt != $dienblatt) { // Gruppierung Blatt - dienend 
     460                if ($gwblatt != $dienblatt) { // Grupp. Blatt - dien. 
     461                        if ($gwblatt == "") { // der erste "dienende": Einleitungs-Zeile 
     462                                $aber=""; 
     463                                if($zfs1 == 0) {$aber="Aber ein ";}  
     464                                echo "\n<p class='anz' title='Die oben genannte Buchung hat ein Recht an den folgenden Buchungen'>".$aber."Recht an ..</p>"; 
     465                        } 
    468466                        $gwblatt = $dienblatt; // Steuerg GW Blatt 
    469467                        zeile_blatt($dienbezirk, $diengbbez, $dienbltgml, $dienblatt, true, "", false); 
     
    475473                } // ++ Buchungsart? Welches Recht? 
    476474                $fs_gml=$row["gml_id"]; 
    477                 $gemei=$row["gemeinde"]; 
    478                 $gmkg=$row["gemarkungsname"]; 
     475                $gmkg=$row["bezeichnung"]; 
    479476                $flur=$row["flurnummer"]; 
    480477                $fskenn=$row["zaehler"]; 
     
    505502} 
    506503 
     504// Filter aus Conf-Datei 
    507505if ($gemeinde == "") { 
    508506        $gfilter = 0; // ungefiltert 
     
    514512} 
    515513 
    516 // Auch wenn redundant: Das Kennzeichen fÃŒr Anzeige und weitere Links zerlegen 
     514// Das eingegebene Kennzeichen fÃŒr "Anzeige" und "weitere Links" zerlegen, 
     515// auch wenn ÃŒber einen ein Self-Link mit gml_id aufgerufen. 
    517516$kennztyp=ZerlegungGBKennz($gbkennz); 
    518517 
    519518// Wurde eine gml_id (internes Kennzeichen) aus einem Self-Link verwendet? 
    520 // Dann hat das Prioritaet, also *nicht* nach $gbkennz suchen. 
     519// Dann hat DAS PrioritÀt, dann also *nicht* nach $gbkennz suchen. 
    521520if ($buchunggml != "") { // gml der Buchungsstelle 
    522521        $trans="Flurst&uuml;cke zur Buchungsstelle"; // Link 
     
    531530        ListGBBez($ag); 
    532531 
    533 } else { // Eingabe im Formular 
    534  
    535         switch ($kennztyp) { 
     532} else { // kein Self-Link sondern manuelle Eingabe im Formular 
     533        switch ($kennztyp) { // wurde oben bereits analysiert und zerlegt 
    536534                case 0: // keine Eingabe 
    537535                        $trans="Liste der Amtsgerichte"; 
     
    541539                        $trans="Bezirke suchen \"".$gbkennz."\""; 
    542540                        $beznr=SuchGBBezName(); 
    543                         if ($beznr > 0) {  // eindeutig 
     541                        if ($beznr > 0) {  // wenn der Suchbegriff eindeutig war, .. 
    544542                                $zgbbez=$beznr; 
    545543                                $trans="Bezirk gefunden, Bl&auml;tter dazu"; 
    546                                 EinBezirk(false); // gleich weiter 
     544                                EinBezirk(false); // .. dann gleich weiter 
    547545                        }; 
    548546                        break; 
    549                 case 2: // Eingabe Bezirk-Nummer -> Liste der BlÀtter 
     547                case 2: // Eingabe Bezirk-Nummer -> Liste der BlÀtter im Bezirk 
    550548                        $trans="Bl&auml;tter im GB-Bezirk"; 
    551549                        EinBezirk(true); 
    552550                        break; 
    553                 case 3: // Eingabe Blatt -> Liste der Buchungen 
     551                case 3: // Eingabe GB-Blatt -> Liste der Buchungen auf dem Blatt 
    554552                        $trans="Buchungen auf GB-Blatt"; 
    555553                        $blattgml=gml_blatt(); // gml_id zum Blatt suchen 
    556554                        if ($blattgml != "") { // gefunden               
    557                                 if (EinBlatt(true) == 1) { // darauf genau eine Buchung 
    558                                         $trans="GB-Blatt und 1 Buchung"; 
    559                                         $buchunggml=gml_buchungsstelle(); // gml_id zum Kennzeichen 
     555                                if (EinBlatt(true) == 1) { // wenn darauf genau eine Buchung ist 
     556                                        $trans="GB-Blatt und 1 Buchung"; // dann gleich tiefer rein 
     557                                        $buchunggml=gml_buchungsstelle(); // gml_id der Buchung 
    560558                                        EinGrundstueck(false); 
    561559                                } 
     
    579577 
    580578// Nach Durchlaufen des PHP-Scriptes die zuletzt ausgefÃŒhrte Transaktion  
    581 // im Kopf des Ergebnisrahmens anzeigen. 
     579//  im Kopf des Ergebnisrahmens anzeigen. 
    582580// Dazu die im HTML-Header definierte Javascript-Function benutzen. 
    583581// Alternativ wird auch aus dem Javascript "positionieren Karte" dieser Titel gesetzt. 
Note: See TracChangeset for help on using the changeset viewer.