Ignore:
Timestamp:
12/01/16 12:43:03 (7 years ago)
Author:
frank.jaeger
Message:

Verbesserungen an der ALKIS-Buchauskunft (Geschwindigkeit, Fehlerkorrekturen, Mandantenfähigkeit) und an der Mapbender2-Navigation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/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.