END;
// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten.
// Manuell an die URL anfügen, wirkt nur temporär und wird nicht in Links weiter gereicht.
if ($nodebug == "j") {$debug=0;}
$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisgebaeudenw.php'");
if (!$con) echo "\nFehler beim Verbinden der DB
";
// Flurstueck
$sqlf="SELECT f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, 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 AND g.endet IS NULL;";
$v=array($gmlid);
$resf=pg_prepare("", $sqlf);
$resf=pg_execute("", $v);
if (!$resf) {
echo "\nFehler bei Flurstücksdaten.
";
if ($debug > 2) {echo "\nSQL=
".$sqlf."
$1 = gml_id = '".$gmlid."'
";}
}
if ($rowf = pg_fetch_assoc($resf)) {
$gemkname=htmlentities($rowf["bezeichnung"], ENT_QUOTES, "UTF-8");
$gmkgnr=$rowf["gemarkungsnummer"];
$flurnummer=$rowf["flurnummer"];
$flstnummer=$rowf["zaehler"];
$nenner=$rowf["nenner"];
if ($nenner > 0) { // BruchNr
$flstnummer.="/".$nenner;
}
$flstflaeche = $rowf["amtlicheflaeche"] ;
} else {
echo "\nFehler! Kein Treffer fuer gml_id=".$gmlid."
";
}
echo "ALKIS Flurstück (Gebäude) ".$gmkgnr."-".$flurnummer."-".$flstnummer."
"; // Balken
echo "\nFlurstück (Gebäude)
";
echo "\n" // Kopf
."\n"
."\n\t"
."\n\t | Kennzeichen: | "
."\n\t"
."\n\t\t" // Kennzeichen in Rahmen
."\n\t\t"
."\n\t\t\tGemarkung | "
."\n\t\t\tFlur | "
."\n\t\t\tFlurst-Nr. | "
."\n\t\t \n\t\t"
."\n\t\t\t";
if ($showkey) {echo "".$gmkgnr." ";}
echo $gemkname." | "
."\n\t\t\t".$flurnummer." | "
."\n\t\t\t".$flstnummer." | "
."\n\t\t "
."\n\t\t "
."\n\t | "
."\n\t"
."\n\t\t " // Links zu anderem Nachweis
."\n\t\t\tFlurstück "
."\n\t\t "
."\n\t | "
."\n
"
."\n
";
echo "\nFlurstücksfläche: ".number_format($flstflaeche,0,",",".") . " m²
";
pg_free_result($resf);
echo "\n\n Gebäude
"
."\n.. auf oder an dem Flurstück. Ermittelt durch Verschneidung der Geometrie.
";
// G e b a e u d e
$sqlg ="SELECT g.gml_id, g.name, g.bauweise, g.gebaeudefunktion, h.beschreibung AS bauweise_beschreibung, u.beschreibung AS bezeichner, u.dokumentation AS gfktd, g.zustand, z.beschreibung 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 ax_bauweise_gebaeude h ON g.bauweise = h.wert
LEFT JOIN ax_gebaeudefunktion u ON g.gebaeudefunktion = u.wert
LEFT JOIN ax_zustand_gebaeude 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.
$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
//$sqlg.="AND (v.beziehungsart='zeigtAuf' OR v.beziehungsart='hat') ";
$sqlg.="ORDER BY schnittflae DESC;";
$v=array($gmlid);
$resg=pg_prepare("", $sqlg);
$resg=pg_execute("", $v);
if (!$resg) {
echo "\nFehler bei Gebäude-Verschneidung.
";
if ($debug > 2) {echo "\nSQL=
".$sqlg."
$1 = gml_id = '".$gmlid."'
";}
}
$gebnr=0;
$gebflsum=0;
echo "\n
\n";
echo "\n" // T-Header
."\n\tName | "
."\n\tFläche | "
."\n\t | "
."\n\tFunktion | "
."\n\tBauweise | "
."\n\tZustand | "
."\n\tLage | "
."\n\tHaus | "
."\n
";
while($rowg = pg_fetch_assoc($resg)) { // T-Body
$gebnr = $gebnr + 1;
$ggml=$rowg["gml_id"];
$gebflsum=$gebflsum + $rowg["schnittflae"];
$gnam=trim(trim($rowg["name"], "{}"), '"'); // Gebaeude-Name ist ein Array in der DB: '{"A","B"}'
// Mehrfachbelegung nur theoretisch. Entklammern reicht. Mal mit und mal ohne "" drum!?
/* SELECT name FROM ax_gebaeude WHERE NOT name IS NULL AND array_length(name, 1) > 1; */
$gfktk=htmlentities($rowg["gebaeudefunktion"], ENT_QUOTES, "UTF-8"); // Geb.-Funktion Key
$gfktv=htmlentities($rowg["bezeichner"], ENT_QUOTES, "UTF-8"); // Geb.Funktion Value
$gfktd=htmlentities($rowg["gfktd"], ENT_QUOTES, "UTF-8"); // Gebäude-Funktion-Description
$gzus=htmlentities($rowg["zustand"], ENT_QUOTES, "UTF-8");
$gzustand=htmlentities($rowg["bzustand"], ENT_QUOTES, "UTF-8");
// 3 Fälle unterscheiden:
if ($rowg["drin"] == "t") { // Gebäude liegt komplett in Flurstück
$f1=$rowg["schnittflae"]." m²";
$f2=" ";
$gstyle="gin"; // siehe .css
} else {
if ($rowg["schnittflae"] == "0.00") { // Gebäude angrenzend (Grenzbebauung)
$gstyle="gan";
$f1=" ";
$f2="angrenzend";
} else { // Teile des Gebäudes stehen auf dem Flurstück
$gstyle="gtl";
$f1=$rowg["schnittflae"]." m²";
$f2="(von ".$rowg["gebflae"]." m²)";
}
}
echo "\n"
."\n\t"; // Sp. 1 Name
if ($gnam != "") {echo "".$gnam." ";}
echo " | ";
echo "\n\t".$f1." | " // Sp. 2
."\n\t".$f2." | "; // Flächenangaben
echo "\n\t"; // Sp. 3 Funktion
if ($showkey) {echo "".$gfktk." ";}
echo $gfktv." | ";
echo "\n\t";
if ($showkey) {echo "".$rowg["bauweise"]." ";}
echo $rowg["bauweise_beschreibung"]." | ";
echo "\n\t";
if ($showkey) {echo "".$gzus." ";}
echo $gzustand." | ";
// 2 Spalten mit Links zu anderen Nachweisen: 1. Lage, 2. Gebäude
echo "\n\t"; // Link Lage
// Zu EINEM Gebäude mehrere Lagebezeichnungen mit Haus- oder Pseudo-Nummer möglich, alle in ein TD
// 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 ";
// UNION - 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.="ORDER BY bezeichnung, hausnummer;";
$v = array($ggml);
$resl = pg_prepare("", $sqll);
$resl = pg_execute("", $v);
if (!$resl) {
echo "\n Fehler bei Lage mit HsNr. ";
if ($debug > 2) {echo "\nSQL= ".$sqll." $1 = gml_id = '".$gmlid."' ";}
}
while($rowl = pg_fetch_assoc($resl)) { // LOOP: Lagezeilen
$ltyp=$rowl["ltyp"]; // Lagezeilen-Typ
$skey=$rowl["lage"]; // Str.-Schluessel
$snam=htmlentities($rowl["bezeichnung"], ENT_QUOTES, "UTF-8"); //-Name
$hsnr=$rowl["hausnummer"];
$hlfd=$rowl["laufendenummer"];
$gmllag=$rowl["lgml"];
if ($ltyp == "p") {
$lagetitl="Nebengebäude - Pseudonummer";
$lagetxt="Nebengebäude Nr. ".$hlfd;
} else {
$lagetitl="Hauptgebäude - Hausnummer";
$lagetxt=$snam." ".$hsnr;
}
echo "\n\t\t";
if ($showkey) {echo "(".$skey.") ";}
echo $lagetxt." ";
} // Ende Loop Lage m.H.
pg_free_result($resl);
echo "\n\t | ";
echo "\n\t" // Link Haus
."\n\t\tHaus "
."\n\t | "
."\n
";
} // Ende Gebäude
// Footer
if ($gebnr == 0) {
echo "\n
"
."
Keine Gebäude auf diesem Flurstück.
";
//if ($debug > 2) {echo "\nSQL=
".$sqlg."
$1 = gml_id = '".$gmlid."'
";}
} else {
echo "\n"
."\n\tSumme: | "
."\n\t".number_format($gebflsum,0,",",".")." m² | "
."\n\t | "
."\n
"
."\n";
$unbebaut = number_format(($flstflaeche - $gebflsum),0,",",".") . " m²";
echo "\n\n
Flurstücksfläche abzüglich Gebäudefläche: ".$unbebaut."
\n
";
}
pg_free_result($resg);
?>