Index: trunk/info/info/alkisn/alkisfsnw.php
===================================================================
--- trunk/info/info/alkisn/alkisfsnw.php	(revision 387)
+++ trunk/info/info/alkisn/alkisfsnw.php	(revision 389)
@@ -12,8 +12,9 @@
 	2017-06-08 optional "berechtigte Buchungen" anzeigen, Function "eigentuemer" ohne Parameter $con,
 				Validierung Eingabeparameter, Feinkorrekturen
+	2017-10-11 Sauber filtern auf 'endet IS NULL', Ausgabe der BodenschÃ€tzung
 
 	ToDo:
-	- BodenschÃ€tzung anzeigen (siehe Mail Frau Weyand ITEBO vom 15.05.17)
-	- Bessere Differenzierung bei den Nutzungsarten (Tabelle dafÃŒr aufbauen)
+	- Parameter zum Umschalten mit/ohne BodenschÃ€tzung?
+	- Bessere Differenzierung bei den Nutzungsarten (Tabelle dafÃŒr aufbauen) 
 */
 session_start();
@@ -123,5 +124,5 @@
 $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 
 FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
-WHERE f.gml_id= $1 AND f.endet IS NULL;";
+WHERE f.gml_id= $1 AND f.endet IS NULL AND g.endet IS NULL;";
 
 $v = array($gmlid); // mit gml_id suchen
@@ -146,4 +147,5 @@
 	$fsbuchflae=$row["amtlicheflaeche"]; // amtliche Fl. aus DB-Feld
 	$fsgeomflae=$row["fsgeomflae"]; // aus Geometrie ermittelte FlÃ€che
+	$the_Xfactor = $fsbuchflae / $fsgeomflae; // Multiplikator zur Umrechnung geometrische AbschnittsflÃ€chen in BuchflÃ€che
 	$fsbuchflaed=number_format($fsbuchflae,0,",",".") . " m&#178;"; // Display-Format dazu
 	$fsgeomflaed=number_format($fsgeomflae,0,",",".") . " m&#178;";
@@ -518,9 +520,5 @@
 WHERE n.flsnr = $1 ORDER BY cast(n.fl AS integer) DESC;";
 // Flurstueckskennzeichen mit Trennzeichen im ALB-Format wie 'llgggg-fff-zzzzz/nnn'
-// Alternativ kÃ¶nnte auch der VIEW "ax_tatsaechlichenutzungsschluessel" fÃŒr den Text zur Nutzungsart verwendet werden.
-
 $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);
-// echo "\n<p class='err'>Kennz ALB='".$fskennzalb."'</p>";
-
 $v = array($fskennzalb);
 $res = pg_prepare("", $sql);
@@ -553,5 +551,5 @@
 		."</td>"
 		."\n\t<td>";
-/*		//	Derzeit ist keine Gruppe zugeordnet
+/*		// Derzeit ist keine Gruppe zugeordnet
 			switch ($grupp) { // Icon nach 4 Objektartengruppen
 				case "Siedlung":   $ico = "Abschnitt.png"; break;
@@ -569,5 +567,4 @@
 }
 pg_free_result($res);
-// ENDE  N U T Z U N G
 
 echo "\n<tr>" // Summenzeile
@@ -590,8 +587,132 @@
 	."\n\t</td>"
 ."\n</tr>";
+// ENDE  N U T Z U N G
+
+
+// K L A S S I F I Z I E R U N G
+
+// Klassifizierung nach  W a s s e rrecht
+/* 
+	// Tabelle immer leer?
+$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 
+FROM ax_flurstueck f
+JOIN ax_klassifizierungnachwasserrecht w
+ ON st_intersects(w.wkb_geometry, f.wkb_geometry) AND st_area(st_intersection(w.wkb_geometry, f.wkb_geometry)) > 0.05
+LEFT JOIN alkis_wertearten h
+ ON cast(w.artderfestlegung AS character varying) = h.k AND h.element='ax_klassifizierungnachwasserrecht' AND h.bezeichnung='artderfestlegung'
+WHERE f.gml_id = $1 AND f.endet IS NULL AND w.endet IS NULL ORDER BY schnittflae DESC";
+
+$v = array($gmlid);
+$res = pg_prepare("", $sql);
+$res = pg_execute("", $v);
+if (!$res) {echo "\n<p class='err'>Fehler bei DB-Abfrage zur Klassifizierung Wasser</p>\n";}
+
+if(!empty($res) && pg_num_rows($res) > 0) {
+	echo "\n<table>";
+	while($row = pg_fetch_array($res)) {
+		$fsbuchflae=$row["amtlicheflaeche"];
+		$fsgeomflae=$row["fsgeomflae"];
+		$the_Xfactor=$fsbuchflae / $fsgeomflae; // ++ nicht in Loop, ist konst. je FS
+		$absflaebuch = $row['schnittflae'] * $the_Xfactor;
+		echo"\n<tr><td></td><td></td></tr>"
+		."\n<tr><td><b>FlÃ€che</b></td><td class='klassifizerung'><span class=''>".number_format(intval($absflaebuch),0,",",".")." mÂ²</span></td></tr>"	
+		."\n<tr><td><b>Bezeichnung</b></td><td class='klassifizerung'><span class=''>".$row['v']."</span></td></tr>"
+		."\n<tr><td></td><td></td></tr>";	
+	}
+	echo "</table>";
+}
+// Klassifizierung nach  S t r a Ã e n recht
+	// Tabelle immer leer?
+*/
+
+// B o d e n s c h Ã€ t z u n g
+// ---------------------------
+// Tabelle "klas_3x" (norbit-ALB): Dort fehlen Bodenart und Zustandsstufe, es ist aber bereits auf BuchflÃ€che umgerechnet.
+
+$sql="SELECT 
+ kulturart.k as kulturartk, kulturart.v as kulturartv, bodenart.k as bodenartk, bodenart.v as bodenartv, zustbod.v AS zustbodv,
+ b.bodenzahlodergruenlandgrundzahl as bodenzahl, b.ackerzahlodergruenlandzahl AS ackerzahl, 
+ b.jahreszahl, st_area(st_intersection(b.wkb_geometry, f.wkb_geometry)) AS schnittflae 
+FROM ax_flurstueck f
+JOIN 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
+LEFT JOIN alkis_wertearten AS bodenart  ON cast(b.bodenart  AS character varying) = bodenart.k  AND bodenart.element='ax_bodenschaetzung'  AND bodenart.bezeichnung='bodenart'
+LEFT JOIN alkis_wertearten AS kulturart ON cast(b.kulturart AS character varying) = kulturart.k AND kulturart.element='ax_bodenschaetzung' AND kulturart.bezeichnung='kulturart'
+LEFT JOIN alkis_wertearten AS zustbod   ON cast(b.zustandsstufeoderbodenstufe AS character varying) = zustbod.k AND zustbod.element='ax_bodenschaetzung' AND zustbod.bezeichnung='zustandsstufeoderbodenstufe'
+WHERE f.gml_id = $1 AND f.endet IS NULL AND b.endet IS NULL ORDER BY schnittflae DESC";
+
+$v = array($gmlid);
+$res = pg_prepare("", $sql);
+$res = pg_execute("", $v);
+if (!$res) {echo "\n<p class='err'>Fehler bei DB-Abfrage zur Klassifizierung Boden</p>\n";}
+
+$gesertragsmz = 0; // Gesamt-ErtragsMesszahl
+$klasflae = 0; // Summe klassifizierte FlÃ€che
+$j=0;
+if(!empty($res) && pg_num_rows($res) > 0) {
+	while ($row = pg_fetch_array($res)) {
+		$kulturartk=$row['kulturartk']; // Key	-
+		$kulturartv=$row['kulturartv']; //		- Value
+		// 1000="Ackerland (A)", 2000="Acker-GrÃŒnland (AGr)", 3000="GrÃŒnland (Gr)", 4000="GrÃŒnland-Acker (GrA)" 		
+		if (substr($kulturartv, 0, 3) == 'Ack') { // A
+			$kbez1="Bodenzahl";
+			$kbez2="Ackerzahl";
+		} else { // Gr
+			$kbez1="Gr&uuml;nlandgrundzahl";
+			$kbez2="Gr&uuml;nlandzahl";
+		}
+		$absflae = $row['schnittflae'];
+		$absbuchflae = $absflae * $the_Xfactor;
+		$klasflae+=$absbuchflae;
+		$ertragszahl = intval($absbuchflae * $row['ackerzahl'] / 100);
+		$gesertragsmz+=$ertragszahl;
+	//	$absflaedis = number_format($absflae,0,",",".")." m&#178;";  // als Tool-Tip ?
+		$absbuchflaedis = number_format($absbuchflae,0,",",".")." m&#178;";
+		$boedenzahl=ltrim($row['bodenzahl'], '0');
+		$ackerzahl=ltrim($row['ackerzahl'], '0');
+
+		// Sp. 1/4
+		if ($j == 0) {
+			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>";
+		} else {
+			echo "\n<tr>\n\t<td>&nbsp;</td>";
+		}
+
+		// Sp. 2/4
+		echo "\n\t<td class='fla' title='Ertragsmesszahl = Produkt von ".$kbez2."/100 und Fl&auml;che.'>EMZ ".$ertragszahl."</td>";
+
+		// Sp. 3/4 - darin mehrere Infos
+		echo "\n\t<td class='ls'>";
+
+		echo "\n\t\t<span class='absfla' title='Fl&auml;che des Sch&auml;tzungsabschnitts'>".$absbuchflaedis."</span> "; 
+
+		echo "\n\t\t<span class='absbew'>"
+			."<span title='".$kbez1."'>".$boedenzahl."</span>/<span title='".$kbez2."'>".$ackerzahl."</span>"
+		."</span> ";
+
+		echo "\n\t\t<span class='absart'>";
+			if ($showkey) {echo "\n\t\t\t<span class='key'>(".$kulturartk.")</span> ";}
+			echo "\n\t\t\t<span title='Kulturart'>".$kulturartv."</span> ";
+			if ($showkey) {echo "\n\t\t\t<span class='key'>(".$row['bodenartk'].")</span> ";}
+			echo "\n\t\t\t<span title='Bodenart'>".$row['bodenartv']."</span> ";
+			echo "\n\t\t\t<span title='Zustandsstufe'>".$row['zustbodv']."</span>";
+			if (isset($row['jahreszahl'])) {echo "\n\t\t <span title='Jahreszahl'>".$row['jahreszahl']."</span>";}
+		//	++ Entstehungsart (Array) derzeit leer. 1:N entschlÃŒsseln. entstehungsartoderklimastufewasserverhaeltnisse
+		// $ent = explode(",", trim($entsteh, "{}") ); // [] --> PHP-Array
+		//	if (isset($row['sonstiges'])) {echo "\n\t\t, <span title='Sonstige Angaben'>".$row['sonstiges']."</span>";} -- immer leer (Konverter-Fehler?)
+		echo "\n\t\t</span>";
+
+		// Sp. 4/4 - leer, keine Links
+		echo "\n\t</td>\n\t<td>&nbsp;</td>\n</tr>";
+		$j++;
+	}
+	// Summenzeile
+	$klasflaedis = number_format($klasflae,0,",",".")." m&#178;";
+	echo "\n<tr>\n\t<td class='ll'>Ertragsmesszahl:</td>"
+	."\n\t<td class='fla sum'>EMZ <span title='Summe der Ertragsmesszahlen f&uuml;r dies Flurst&uuml;ck'>".$gesertragsmz."</span></td>"
+	."\n\t<td><span class='absfla'>".$klasflaedis."</span></td>\n\t<td>&nbsp;</td>\n</tr>";
+}
 
 // H i n w e i s  auf Bodenneuordnung oder eine strittige Grenze
 // b.name, b.artderfestlegung, 
-
 $sql_boden ="SELECT a.k AS wert, a.v AS art_verf, b.gml_id AS verf_gml, b.bezeichnung AS verf_bez, 
 b.name AS verf_name, d.bezeichnung AS stelle_bez, d.stelle AS stelle_key 
@@ -823,5 +944,5 @@
 		// Person <-benennt< AX_Namensnummer  >istBestandteilVon-> AX_Buchungsblatt
 		if ($eig=="j") { // Wahlweise mit/ohne EigentÃŒmer
-			$n = eigentuemer($gmlg, false, ""); // ohne Adresse
+			$n = eigentuemer($gmlg, false, ""); // hier ohne Adresse
  			if ($n == 0) {
 				if ($blattkeyg == 1000) {
