Index: trunk/info/info/alkis/alkisgebaeudenw.php
===================================================================
--- trunk/info/info/alkis/alkisgebaeudenw.php	(revision 376)
+++ trunk/info/info/alkis/alkisgebaeudenw.php	(revision 377)
@@ -4,6 +4,13 @@
 
 	Version:
-	2016-02-24 Version fuer norGIS-ALKIS-Import
-	2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermÃ¶glichen
+	2011-11-22 Feld ax_gebaeude.description ist entfallen, neue Spalte Zustand
+	2011-11-30 Fehlerkorrektur Gebaeude mit mehreren Adressen nicht mehrfach
+	2013-04-08 deprecated "import_request_variables" ersetzt
+    2014-01-30 pg_free_result
+	2014-09-04 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
+	2014-09-10 Bei Relationen den Timestamp abschneiden
+	2014-09-30 Umbenennung SchlÃŒsseltabellen (Prefix), RÃŒckbau substring(gml_id)
+	2015-12-09 Austausch .ico durch .png
+	2015-12-16 area -> st_area
 */
 session_start();
@@ -13,11 +20,16 @@
 if ($auth == "mapbender") {require_once($mapbender);}
 include("alkisfkt.php");
+if ($id == "j") {$idanzeige=true;} else {$idanzeige=false;}
 $keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
 if ($keys == "j") {$showkey=true;} else {$showkey=false;}
 ?>
-<!doctype html>
-<html lang="de">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
 <head>
-	<meta charset="utf-8">
+	<meta name="author" content="b600352" >
+	<meta http-equiv="cache-control" content="no-cache">
+	<meta http-equiv="pragma" content="no-cache">
+	<meta http-equiv="expires" content="0">
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 	<title>ALKIS Geb&auml;udenachweis</title>
 	<link rel="stylesheet" type="text/css" href="alkisauszug.css">
@@ -29,5 +41,5 @@
 <body>
 <?php
-$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisgebaeudenw.php'");
+$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
 if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
 
@@ -64,27 +76,29 @@
 
 // Kennzeichen in Rahmen
-echo "\n<table class='outer'>\n<tr>\n<td>"
-	."\n\t<table class='kennzfs' title='Flurst&uuml;ckskennzeichen'>"
-    ."\n\t<tr>"
-        ."\n\t\t<td class='head'>Gmkg</td>"
-        ."\n\t\t<td class='head'>Flur</td>"
-        ."\n\t\t<td class='head'>Flurst-Nr.</td>"
-    ."\n\t</tr>\n\t<tr>"
-        ."\n\t\t<td title='Gemarkung'>";
+echo "\n<table class='outer'>\n<tr>\n<td>";
+	echo "\n\t<table class='kennzfs' title='Flurst&uuml;ckskennzeichen'>";
+    echo "\n\t<tr>";
+        echo "\n\t\t<td class='head'>Gmkg</td>";
+        echo "\n\t\t<td class='head'>Flur</td>";
+        echo "\n\t\t<td class='head'>Flurst-Nr.</td>";
+    echo "\n\t</tr>\n\t<tr>";
+        echo "\n\t\t<td title='Gemarkung'>";
         if  ($showkey) {echo "<span class='key'>".$gmkgnr."</span><br>";}
-        echo $gemkname."&nbsp;</td>"
-        ."\n\t\t<td title='Flurnummer'>".$flurnummer."</td>"
-        ."\n\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>"
-    ."\n\t</tr>"
-	."\n\t</table>"
-."\n</td>\n<td>";
-
-// Links zu anderem Nachweis
-echo "\n\t<p class='nwlink noprint'>"
-	."\n\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
-	if ($showkey) {echo "&amp;showkey=j";}
-	echo "&amp;eig=n' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck <img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''></a>"
-."\n\t</p>"
-."\n\t</td>\n</tr>\n</table>";
+        echo $gemkname."&nbsp;</td>";
+        echo "\n\t\t<td title='Flurnummer'>".$flurnummer."</td>";
+        echo "\n\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>";
+    echo "\n\t</tr>";
+	echo "\n\t</table>";
+echo "\n</td>\n<td>";
+
+// Links zu anderen Nachweisen
+echo "\n\t<p class='nwlink noprint'>";
+	echo "\n\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
+	if ($idanzeige) {echo "&amp;id=j";}
+	if ($showkey)   {echo "&amp;showkey=j";}
+	echo "&amp;eig=n' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck <img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''></a>";
+echo "\n\t</p>";
+if ($idanzeige) {linkgml($gkz, $gmlid, "Flurst&uuml;ck", "ax_flurstueck"); }
+echo "\n\t</td>\n</tr>\n</table>";
 // Ende Seitenkopf
 
@@ -92,19 +106,30 @@
 pg_free_result($resf);
 
-echo "\n\n<h3><img src='ico/Haus.png' width='16' height='16' alt=''> Geb&auml;ude</h3>"
-."\n<p>.. auf oder an dem Flurst&uuml;ck. Ermittelt durch Verschneidung der Geometrie.</p>";
+echo "\n\n<h3><img src='ico/Haus.png' width='16' height='16' alt=''> Geb&auml;ude</h3>";
+echo "\n<p>.. auf oder an dem Flurst&uuml;ck. Ermittelt durch Verschneidung der Geometrie.</p>";
 
 // G e b a e u d e
-$sqlg ="SELECT g.gml_id, g.name, g.bauweise, g.gebaeudefunktion, h.v AS bauweise_beschreibung, u.v AS bezeichner, g.zustand, z.v AS bzustand, 
-round(st_area(g.wkb_geometry)::numeric,2) AS gebflae, "; // GEB-Flaeche komplett auch die Fl. ausserhalb des FS
-$sqlg.="round(st_area(ST_Intersection(g.wkb_geometry,f.wkb_geometry))::numeric,2) AS schnittflae, "; // wie viel vom GEB liegt im FS?
-$sqlg.="st_within(g.wkb_geometry,f.wkb_geometry) as drin "; // liegt das GEB komplett im FS?
-$sqlg.="FROM ax_flurstueck f, ax_gebaeude g 
-LEFT JOIN alkis_wertearten h ON cast(g.bauweise AS character varying) = h.k AND h.element='ax_gebaeude' and h.bezeichnung='bauweise'
-LEFT JOIN alkis_wertearten u ON cast(g.gebaeudefunktion AS character varying) = u.k AND u.element='ax_gebaeude' and u.bezeichnung='gebaeudefunktion'
-LEFT JOIN alkis_wertearten z ON cast(g.zustand AS character varying) = z.k AND z.element='ax_gebaeude' and z.bezeichnung='zustand'
+$sqlg ="SELECT g.gml_id, g.name, g.bauweise, g.gebaeudefunktion, h.bauweise_beschreibung, u.bezeichner, g.zustand, z.bezeichner AS bzustand, ";
+
+// GEB-Flaeche komplett auch die Fl. ausserhalb des FS
+$sqlg.="round(st_area(g.wkb_geometry)::numeric,2) AS gebflae, ";
+
+// wie viel vom GEB liegt im FS?
+$sqlg.="round(st_area(ST_Intersection(g.wkb_geometry,f.wkb_geometry))::numeric,2) AS schnittflae, ";
+
+// liegt das GEB komplett im FS?
+$sqlg.="st_within(g.wkb_geometry,f.wkb_geometry) as drin ";
+
+// FS und GEB geometrisch verschneiden
+$sqlg.="FROM ax_flurstueck f, ax_gebaeude g ";
+
+// Entschluesseln
+$sqlg.="LEFT JOIN v_geb_bauweise h ON g.bauweise=h.bauweise_id 
+LEFT JOIN v_geb_funktion u ON g.gebaeudefunktion=u.wert 
+LEFT JOIN v_geb_zustand z ON g.zustand=z.wert 
 WHERE f.gml_id= $1 AND f.endet IS NULL and g.endet IS NULL "; // ID des akt. FS
 
-// "within" -> nur Geb., die komplett im FS liegen. "intersects" -> auch teil-ueberlappende Flst.
+// "within" -> nur Geb., die komplett im FS liegen
+// "intersects" -> auch teil-ueberlappende Flst.
 $sqlg.="AND st_intersects(g.wkb_geometry,f.wkb_geometry) = true ";
 // RLP: keine Relationen zu NebengebÃ€uden. Auf Qualifizierung verzichten, sonst werden NebengebÃ€ude nicht angezeigt
@@ -116,5 +141,5 @@
 $resg=pg_execute("", $v);
 if (!$resg) {
-	echo "\n<p class='err'>Fehler bei Geb&auml;ude-Verschneidung.</p>\n";
+	echo "\n<p class='err'>Keine Geb&auml;ude ermittelt.</p>\n";
 	if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqlg."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
@@ -123,57 +148,51 @@
 echo "\n<hr>\n<table class='geb'>";
 	// T-Header
-	echo "\n<tr>\n"
-		."\n\t<td class='head' title='ggf. Geb&auml;udename'>Name</td>"
-		."\n\t<td class='heads fla' title='Schnittsfl&auml;che'><img src='ico/sortd.png' width='10' height='10' alt='' title='Sortierung (absteigend)'>Fl&auml;che</td>"
-		."\n\t<td class='head' title='Geb&auml;udefl&auml;che'>&nbsp;</td>"
-		."\n\t<td class='head' title='Geb&auml;udefunktion ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des Geb&auml;udes'>Funktion</td>"
-		."\n\t<td class='head' title='Bauweise ist die Beschreibung der Art der Bauweise'>Bauweise</td>"
-		."\n\t<td class='head' title='Zustand beschreibt die Beschaffenheit oder die Betriebsbereitschaft von Geb&auml;ude. Diese Attributart wird nur dann optional gef&uuml;hrt, wenn der Zustand des Geb&auml;udes vom nutzungsf&auml;higen Zustand abweicht.'>Zustand</td>"
-		."\n\t<td class='head nwlink' title='Lagebezeichnung mit Stra&szlig;e und Hausnummer'>Lage</td>"
-		."\n\t<td class='head nwlink' title='Link zu den kompletten Hausdaten'>Haus</td>"
-	."\n</tr>";
+	echo "\n<tr>\n";
+		echo "\n\t<td class='head' title='ggf. Geb&auml;udename'>Name</td>";
+		echo "\n\t<td class='head fla' title='Schnittsfl&auml;che'>Fl&auml;che</td>";
+		echo "\n\t<td class='head' title='Geb&auml;udefl&auml;che'>&nbsp;</td>";
+		echo "\n\t<td class='head' title='Geb&auml;udefunktion ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des Geb&auml;udes'>Funktion</td>";
+		echo "\n\t<td class='head' title='Bauweise (Schl&uuml;ssel und Beschreibung)'>Bauweise</td>";
+		echo "\n\t<td class='head' title='Zustand (Schl&uuml;ssel und Beschreibung)'>Zustand</td>";
+		echo "\n\t<td class='head nwlink' title='Lagebezeichnung mit Stra&szlig;e und Hausnummer'>Lage</td>";
+		echo "\n\t<td class='head nwlink' title='Link zu den kompletten Hausdaten'>Haus</td>";
+	echo "\n</tr>";
 	// T-Body
 	while($rowg = pg_fetch_array($resg)) {
 		$gebnr = $gebnr + 1;
+// ++ ToDo: Die Zeilen abwechselnd verschieden einfÃ€rben, Angrenzend anders einfÃ€rben 
 		$ggml=$rowg["gml_id"];
-		$gebflsum=$gebflsum + $rowg["schnittflae"];
+		$gebflsum = $gebflsum + $rowg["schnittflae"];
+	#	$skey=$rowg["lage"]; // Strassenschluessel		
 		$gnam=$rowg["name"];
 		$gzus=$rowg["zustand"];
 		$gzustand=$rowg["bzustand"];
 
-		// 3 FÃ€lle unterscheiden:
-		if ($rowg["drin"] == "t") { // GebÃ€ude liegt komplett in FlurstÃŒck
-			$f1=$rowg["schnittflae"]." m&#178;";
-			$f2="&nbsp;";
-			$gstyle="gin"; // siehe .css
-		} else {
-	       	if ($rowg["schnittflae"] == "0.00") { // GebÃ€ude angrenzend (Grenzbebauung)
-				$gstyle="gan";
-				$f1="&nbsp;";
-				$f2="angrenzend";
-			} else { // Teile des GebÃ€udes stehen auf dem FlurstÃŒck
-				$gstyle="gtl";
-				$f1=$rowg["schnittflae"]." m&#178;";
-				$f2="(von ".$rowg["gebflae"]." m&#178;)";
+		echo "\n<tr>";
+			echo "\n\t<td>";
+				if ($gnam != "") {echo "<span title='Geb&auml;udename'>".$gnam."</span><br>";}
+			echo "\n\t</td>";
+
+			if ($rowg["drin"] == "t") { // 3 komplett enthalten
+				echo "\n\t<td class='fla'>".$rowg["schnittflae"]." m&#178;</td>"; 
+				echo "\n\t<td>&nbsp;</td>";
+			} else {
+	       	if ($rowg["schnittflae"] == "0.00") { // angrenzend
+					echo "\n\t<td class='fla'>&nbsp;</td>";
+					echo "\n\t<td>angrenzend</td>";
+				} else { // Teile enthalten
+					echo "\n\t<td class='fla'>".$rowg["schnittflae"]." m&#178;</td>";
+					echo "\n\t<td>(von ".$rowg["gebflae"]." m&#178;)</td>";
+				}
 			}
-		}
-
-		echo "\n<tr>"
-			."\n\t<td class='".$gstyle."'>";
-			if ($gnam != "") {echo "<span title='Geb&auml;udename'>".$gnam."</span><br>";}
-			echo "\n\t</td>";
-
-			echo "\n\t<td class='fla'>".$f1."</td>"
-			."\n\t<td class='".$gstyle."'>".$f2."</td>"; // FlÃ€chenangaben
-
-			echo "\n\t<td class='".$gstyle."'>";
+			echo "\n\t<td>";
 			if ($showkey) {echo "<span class='key'>".$rowg["gebaeudefunktion"]."</span>&nbsp;";}
 			echo $rowg["bezeichner"]."</td>";
 
-			echo "\n\t<td class='".$gstyle."'>";
+			echo "\n\t<td>";
 			if ($showkey) {echo "<span class='key'>".$rowg["bauweise"]."</span>&nbsp;";}
 			echo $rowg["bauweise_beschreibung"]."&nbsp;</td>";
 
-			echo "\n\t<td class='".$gstyle."'>";
+			echo "\n\t<td>";
 			if ($showkey) {echo "<span class='key'>".$gzus."</span>&nbsp;";}
 			echo $gzustand."&nbsp;</td>";
@@ -183,14 +202,14 @@
 
 			// HAUPTgebÃ€ude  Geb >zeigtAuf> lage (mehrere)
-			$sqll="SELECT 'm' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.hausnummer, '' AS laufendenummer "
-			."FROM ax_gebaeude g JOIN ax_lagebezeichnungmithausnummer l ON l.gml_id=ANY(g.zeigtauf) "
-			."JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage "
-			."WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL ";
+			$sqll ="SELECT 'm' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.hausnummer, '' AS laufendenummer ";
+			$sqll.="FROM ax_gebaeude g JOIN ax_lagebezeichnungmithausnummer l ON l.gml_id=ANY(g.zeigtauf) ";
+			$sqll.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage ";
+			$sqll.="WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL ";
 
 			// oder NEBENgebÃ€ude  Geb >hat> Pseudo
-			$sqll.="UNION SELECT 'p' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.pseudonummer AS hausnummer, l.laufendenummer "
-			."FROM ax_gebaeude g JOIN ax_lagebezeichnungmitpseudonummer l ON l.gml_id=g.hat "
-			."JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage "
-			."WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL "; // ID des Hauses"
+			$sqll.="UNION SELECT 'p' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.pseudonummer AS hausnummer, l.laufendenummer ";
+			$sqll.="FROM ax_gebaeude g JOIN ax_lagebezeichnungmitpseudonummer l ON l.gml_id=g.hat ";
+			$sqll.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage ";
+			$sqll.="WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL "; // ID des Hauses"
 		
 			$sqll.="ORDER BY bezeichnung, hausnummer;";
@@ -220,6 +239,8 @@
 				if ($showkey) {echo "<span class='key'>(".$skey.")</span>&nbsp;";}			
 				echo "\n\t\t<a title='".$lagetitl."' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag."&amp;ltyp=".$ltyp;
+					if ($idanzeige) {echo "&amp;id=j";}
 					if ($showkey)   {echo "&amp;showkey=j";}
 				echo "'>".$lagetxt."</a>";
+				if ($idanzeige) {linkgml($gkz, $gmllag, "Lage", ""); }
 				echo "<br>";
 			} // Ende Loop Lage m.H.
@@ -227,33 +248,41 @@
 			echo "\n\t</td>";
 
-			echo "\n\t<td class='nwlink noprint'>"
-				."\n\t\t<a title='Daten zum Geb&auml;ude-Objekt' href='alkishaus.php?gkz=".$gkz."&amp;gmlid=".$ggml;
-				if ($showkey) {echo "&amp;showkey=j";}
-				echo "'><img src='ico/Haus.png' width='16' height='16' alt=''></a>"
-			."\n\t</td>"
-		."\n</tr>";
+			echo "\n\t<td class='nwlink noprint'>";
+				echo "\n\t\t<a title='Daten zum Geb&auml;ude-Objekt' href='alkishaus.php?gkz=".$gkz."&amp;gmlid=".$ggml;
+				if ($idanzeige) {echo "&amp;id=j";}
+				if ($showkey)   {echo "&amp;showkey=j";}
+				echo "'><img src='ico/Haus.png' width='16' height='16' alt=''></a>";
+			echo "\n\t</td>";
+
+		echo "\n</tr>";
 	}
 	// Footer
 	if ($gebnr == 0) {
-		echo "\n</table>"
-		."<p class='err'><br>Keine Geb&auml;ude auf diesem Flurst&uuml;ck.<br>&nbsp;</p>";
+		echo "\n</table>";
+		echo "<p class='err'><br>Keine Geb&auml;ude auf diesem Flurst&uuml;ck.<br>&nbsp;</p>";
 	} else {
-		echo "\n<tr>"
-			."\n\t<td>Summe:</td>"
-			."\n\t<td class='fla sum' title='von Geb&auml;uden &uuml;berbaute Fl&auml;che des Flurst&uuml;cks'>".number_format($gebflsum,0,",",".")."&nbsp;&nbsp;&nbsp;&nbsp;m&#178;</td>"
-			."\n\t<td colspan='6'>&nbsp;</td>"
-		."\n</tr>"
-	."\n</table>";
+		echo "\n<tr>";
+			echo "\n\t<td>Summe:</td>"; // 1
+			echo "\n\t<td class='fla sum'>".number_format($gebflsum,0,",",".")."&nbsp;&nbsp;&nbsp;&nbsp;m&#178;</td>";
+			echo "\n\t<td>&nbsp;</td>"; // 3
+			echo "\n\t<td>&nbsp;</td>"; // 4
+			echo "\n\t<td>&nbsp;</td>"; // 5
+			echo "\n\t<td>&nbsp;</td>"; // 6
+			echo "\n\t<td>&nbsp;</td>"; // 7
+		echo "\n</tr>";
+	echo "\n</table>";
 	$unbebaut = number_format(($flstflaeche - $gebflsum),0,",",".") . " m&#178;";
-	echo "\n<p><br>Flurst&uuml;cksfl&auml;che abz&uuml;glich Geb&auml;udefl&auml;che: <b>".$unbebaut."</b></p><br>";
+	echo "\n<p>Flurst&uuml;cksfl&auml;che abz&uuml;glich Geb&auml;udefl&auml;che: <b>".$unbebaut."</b></p><br>";
 }
 pg_free_result($resg);
 ?>
 
-<div class='buttonbereich noprint'>
-<hr>
-	<a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp;
-	<a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a>
-</div>
+<form action=''>
+	<div class='buttonbereich noprint'>
+	<hr>
+		<a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp;
+		<a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a>
+	</div>
+</form>
 
 <?php footer($gmlid, $_SERVER['PHP_SELF']."?", ""); ?>
