Ignore:
Timestamp:
10/11/17 13:10:47 (7 years ago)
Author:
frank.jaeger
Message:

ALKIS Buchauskunft überarbeitet: Bodenschätzung im FS-Nachweis. Filter auf "endet IS NULL".

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/info/info/alkisn/alkisfsnw.php

    r387 r389  
    1212        2017-06-08 optional "berechtigte Buchungen" anzeigen, Function "eigentuemer" ohne Parameter $con, 
    1313                                Validierung Eingabeparameter, Feinkorrekturen 
     14        2017-10-11 Sauber filtern auf 'endet IS NULL', Ausgabe der BodenschÀtzung 
    1415 
    1516        ToDo: 
    16         - BodenschÀtzung anzeigen (siehe Mail Frau Weyand ITEBO vom 15.05.17) 
    17         - Bessere Differenzierung bei den Nutzungsarten (Tabelle dafÃŒr aufbauen) 
     17        - Parameter zum Umschalten mit/ohne BodenschÀtzung? 
     18        - Bessere Differenzierung bei den Nutzungsarten (Tabelle dafÃŒr aufbauen)  
    1819*/ 
    1920session_start(); 
     
    123124$sql ="SELECT f.name, f.flurnummer, f.zaehler, f.nenner, f.regierungsbezirk, f.kreis, f.gemeinde, f.amtlicheflaeche, st_area(f.wkb_geometry) AS fsgeomflae, f.zeitpunktderentstehung, g.gemarkungsnummer, g.bezeichnung  
    124125FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    125 WHERE f.gml_id= $1 AND f.endet IS NULL;"; 
     126WHERE f.gml_id= $1 AND f.endet IS NULL AND g.endet IS NULL;"; 
    126127 
    127128$v = array($gmlid); // mit gml_id suchen 
     
    146147        $fsbuchflae=$row["amtlicheflaeche"]; // amtliche Fl. aus DB-Feld 
    147148        $fsgeomflae=$row["fsgeomflae"]; // aus Geometrie ermittelte FlÀche 
     149        $the_Xfactor = $fsbuchflae / $fsgeomflae; // Multiplikator zur Umrechnung geometrische AbschnittsflÀchen in BuchflÀche 
    148150        $fsbuchflaed=number_format($fsbuchflae,0,",",".") . " m²"; // Display-Format dazu 
    149151        $fsgeomflaed=number_format($fsgeomflae,0,",",".") . " m²"; 
     
    518520WHERE n.flsnr = $1 ORDER BY cast(n.fl AS integer) DESC;"; 
    519521// Flurstueckskennzeichen mit Trennzeichen im ALB-Format wie 'llgggg-fff-zzzzz/nnn' 
    520 // Alternativ könnte auch der VIEW "ax_tatsaechlichenutzungsschluessel" fÃŒr den Text zur Nutzungsart verwendet werden. 
    521  
    522522$fskennzalb=$defland.$gmkgnr."-".str_pad($flurnummer,3,"0",STR_PAD_LEFT)."-".str_pad($zaehler,5,"0",STR_PAD_LEFT)."/".str_pad($nenner,3,"0",STR_PAD_LEFT); 
    523 // echo "\n<p class='err'>Kennz ALB='".$fskennzalb."'</p>"; 
    524  
    525523$v = array($fskennzalb); 
    526524$res = pg_prepare("", $sql); 
     
    553551                ."</td>" 
    554552                ."\n\t<td>"; 
    555 /*              //      Derzeit ist keine Gruppe zugeordnet 
     553/*              // Derzeit ist keine Gruppe zugeordnet 
    556554                        switch ($grupp) { // Icon nach 4 Objektartengruppen 
    557555                                case "Siedlung":   $ico = "Abschnitt.png"; break; 
     
    569567} 
    570568pg_free_result($res); 
    571 // ENDE  N U T Z U N G 
    572569 
    573570echo "\n<tr>" // Summenzeile 
     
    590587        ."\n\t</td>" 
    591588."\n</tr>"; 
     589// ENDE  N U T Z U N G 
     590 
     591 
     592// K L A S S I F I Z I E R U N G 
     593 
     594// Klassifizierung nach  W a s s e rrecht 
     595/*  
     596        // Tabelle immer leer? 
     597$sql="SELECT h.v, w.artderfestlegung, st_area(st_intersection(w.wkb_geometry, f.wkb_geometry)) AS schnittflae, f.amtlicheflaeche, st_area(f.wkb_geometry) as fsgeomflae  
     598FROM ax_flurstueck f 
     599JOIN ax_klassifizierungnachwasserrecht w 
     600 ON st_intersects(w.wkb_geometry, f.wkb_geometry) AND st_area(st_intersection(w.wkb_geometry, f.wkb_geometry)) > 0.05 
     601LEFT JOIN alkis_wertearten h 
     602 ON cast(w.artderfestlegung AS character varying) = h.k AND h.element='ax_klassifizierungnachwasserrecht' AND h.bezeichnung='artderfestlegung' 
     603WHERE f.gml_id = $1 AND f.endet IS NULL AND w.endet IS NULL ORDER BY schnittflae DESC"; 
     604 
     605$v = array($gmlid); 
     606$res = pg_prepare("", $sql); 
     607$res = pg_execute("", $v); 
     608if (!$res) {echo "\n<p class='err'>Fehler bei DB-Abfrage zur Klassifizierung Wasser</p>\n";} 
     609 
     610if(!empty($res) && pg_num_rows($res) > 0) { 
     611        echo "\n<table>"; 
     612        while($row = pg_fetch_array($res)) { 
     613                $fsbuchflae=$row["amtlicheflaeche"]; 
     614                $fsgeomflae=$row["fsgeomflae"]; 
     615                $the_Xfactor=$fsbuchflae / $fsgeomflae; // ++ nicht in Loop, ist konst. je FS 
     616                $absflaebuch = $row['schnittflae'] * $the_Xfactor; 
     617                echo"\n<tr><td></td><td></td></tr>" 
     618                ."\n<tr><td><b>FlÀche</b></td><td class='klassifizerung'><span class=''>".number_format(intval($absflaebuch),0,",",".")." m²</span></td></tr>"         
     619                ."\n<tr><td><b>Bezeichnung</b></td><td class='klassifizerung'><span class=''>".$row['v']."</span></td></tr>" 
     620                ."\n<tr><td></td><td></td></tr>";        
     621        } 
     622        echo "</table>"; 
     623} 
     624// Klassifizierung nach  S t r a ß e n recht 
     625        // Tabelle immer leer? 
     626*/ 
     627 
     628// B o d e n s c h À t z u n g 
     629// --------------------------- 
     630// Tabelle "klas_3x" (norbit-ALB): Dort fehlen Bodenart und Zustandsstufe, es ist aber bereits auf BuchflÀche umgerechnet. 
     631 
     632$sql="SELECT  
     633 kulturart.k as kulturartk, kulturart.v as kulturartv, bodenart.k as bodenartk, bodenart.v as bodenartv, zustbod.v AS zustbodv, 
     634 b.bodenzahlodergruenlandgrundzahl as bodenzahl, b.ackerzahlodergruenlandzahl AS ackerzahl,  
     635 b.jahreszahl, st_area(st_intersection(b.wkb_geometry, f.wkb_geometry)) AS schnittflae  
     636FROM ax_flurstueck f 
     637JOIN ax_bodenschaetzung b ON st_intersects(b.wkb_geometry, f.wkb_geometry) AND st_area(st_intersection(b.wkb_geometry, f.wkb_geometry)) > 0.05 
     638LEFT JOIN alkis_wertearten AS bodenart  ON cast(b.bodenart  AS character varying) = bodenart.k  AND bodenart.element='ax_bodenschaetzung'  AND bodenart.bezeichnung='bodenart' 
     639LEFT JOIN alkis_wertearten AS kulturart ON cast(b.kulturart AS character varying) = kulturart.k AND kulturart.element='ax_bodenschaetzung' AND kulturart.bezeichnung='kulturart' 
     640LEFT JOIN alkis_wertearten AS zustbod   ON cast(b.zustandsstufeoderbodenstufe AS character varying) = zustbod.k AND zustbod.element='ax_bodenschaetzung' AND zustbod.bezeichnung='zustandsstufeoderbodenstufe' 
     641WHERE f.gml_id = $1 AND f.endet IS NULL AND b.endet IS NULL ORDER BY schnittflae DESC"; 
     642 
     643$v = array($gmlid); 
     644$res = pg_prepare("", $sql); 
     645$res = pg_execute("", $v); 
     646if (!$res) {echo "\n<p class='err'>Fehler bei DB-Abfrage zur Klassifizierung Boden</p>\n";} 
     647 
     648$gesertragsmz = 0; // Gesamt-ErtragsMesszahl 
     649$klasflae = 0; // Summe klassifizierte FlÀche 
     650$j=0; 
     651if(!empty($res) && pg_num_rows($res) > 0) { 
     652        while ($row = pg_fetch_array($res)) { 
     653                $kulturartk=$row['kulturartk']; // Key  - 
     654                $kulturartv=$row['kulturartv']; //              - Value 
     655                // 1000="Ackerland (A)", 2000="Acker-GrÃŒnland (AGr)", 3000="GrÃŒnland (Gr)", 4000="GrÃŒnland-Acker (GrA)"               
     656                if (substr($kulturartv, 0, 3) == 'Ack') { // A 
     657                        $kbez1="Bodenzahl"; 
     658                        $kbez2="Ackerzahl"; 
     659                } else { // Gr 
     660                        $kbez1="Gr&uuml;nlandgrundzahl"; 
     661                        $kbez2="Gr&uuml;nlandzahl"; 
     662                } 
     663                $absflae = $row['schnittflae']; 
     664                $absbuchflae = $absflae * $the_Xfactor; 
     665                $klasflae+=$absbuchflae; 
     666                $ertragszahl = intval($absbuchflae * $row['ackerzahl'] / 100); 
     667                $gesertragsmz+=$ertragszahl; 
     668        //      $absflaedis = number_format($absflae,0,",",".")." m&#178;";  // als Tool-Tip ? 
     669                $absbuchflaedis = number_format($absbuchflae,0,",",".")." m&#178;"; 
     670                $boedenzahl=ltrim($row['bodenzahl'], '0'); 
     671                $ackerzahl=ltrim($row['ackerzahl'], '0'); 
     672 
     673                // Sp. 1/4 
     674                if ($j == 0) { 
     675                        echo "\n<tr>\n\t<td class='ll' title='Abschnitt Bodensch&auml;tzung'><img src='ico/Landwirt.png' width='16' height='16' alt=''> Bodensch&auml;tzung:</td>"; 
     676                } else { 
     677                        echo "\n<tr>\n\t<td>&nbsp;</td>"; 
     678                } 
     679 
     680                // Sp. 2/4 
     681                echo "\n\t<td class='fla' title='Ertragsmesszahl = Produkt von ".$kbez2."/100 und Fl&auml;che.'>EMZ ".$ertragszahl."</td>"; 
     682 
     683                // Sp. 3/4 - darin mehrere Infos 
     684                echo "\n\t<td class='ls'>"; 
     685 
     686                echo "\n\t\t<span class='absfla' title='Fl&auml;che des Sch&auml;tzungsabschnitts'>".$absbuchflaedis."</span> ";  
     687 
     688                echo "\n\t\t<span class='absbew'>" 
     689                        ."<span title='".$kbez1."'>".$boedenzahl."</span>/<span title='".$kbez2."'>".$ackerzahl."</span>" 
     690                ."</span> "; 
     691 
     692                echo "\n\t\t<span class='absart'>"; 
     693                        if ($showkey) {echo "\n\t\t\t<span class='key'>(".$kulturartk.")</span> ";} 
     694                        echo "\n\t\t\t<span title='Kulturart'>".$kulturartv."</span> "; 
     695                        if ($showkey) {echo "\n\t\t\t<span class='key'>(".$row['bodenartk'].")</span> ";} 
     696                        echo "\n\t\t\t<span title='Bodenart'>".$row['bodenartv']."</span> "; 
     697                        echo "\n\t\t\t<span title='Zustandsstufe'>".$row['zustbodv']."</span>"; 
     698                        if (isset($row['jahreszahl'])) {echo "\n\t\t <span title='Jahreszahl'>".$row['jahreszahl']."</span>";} 
     699                //      ++ Entstehungsart (Array) derzeit leer. 1:N entschlÃŒsseln. entstehungsartoderklimastufewasserverhaeltnisse 
     700                // $ent = explode(",", trim($entsteh, "{}") ); // [] --> PHP-Array 
     701                //      if (isset($row['sonstiges'])) {echo "\n\t\t, <span title='Sonstige Angaben'>".$row['sonstiges']."</span>";} -- immer leer (Konverter-Fehler?) 
     702                echo "\n\t\t</span>"; 
     703 
     704                // Sp. 4/4 - leer, keine Links 
     705                echo "\n\t</td>\n\t<td>&nbsp;</td>\n</tr>"; 
     706                $j++; 
     707        } 
     708        // Summenzeile 
     709        $klasflaedis = number_format($klasflae,0,",",".")." m&#178;"; 
     710        echo "\n<tr>\n\t<td class='ll'>Ertragsmesszahl:</td>" 
     711        ."\n\t<td class='fla sum'>EMZ <span title='Summe der Ertragsmesszahlen f&uuml;r dies Flurst&uuml;ck'>".$gesertragsmz."</span></td>" 
     712        ."\n\t<td><span class='absfla'>".$klasflaedis."</span></td>\n\t<td>&nbsp;</td>\n</tr>"; 
     713} 
    592714 
    593715// H i n w e i s  auf Bodenneuordnung oder eine strittige Grenze 
    594716// b.name, b.artderfestlegung,  
    595  
    596717$sql_boden ="SELECT a.k AS wert, a.v AS art_verf, b.gml_id AS verf_gml, b.bezeichnung AS verf_bez,  
    597718b.name AS verf_name, d.bezeichnung AS stelle_bez, d.stelle AS stelle_key  
     
    823944                // Person <-benennt< AX_Namensnummer  >istBestandteilVon-> AX_Buchungsblatt 
    824945                if ($eig=="j") { // Wahlweise mit/ohne EigentÃŒmer 
    825                         $n = eigentuemer($gmlg, false, ""); // ohne Adresse 
     946                        $n = eigentuemer($gmlg, false, ""); // hier ohne Adresse 
    826947                        if ($n == 0) { 
    827948                                if ($blattkeyg == 1000) { 
Note: See TracChangeset for help on using the changeset viewer.