.. auf oder an dem Flurstück. Ermittelt durch Verschneidung der Geometrie.
"; // Tabellen-Kopf echo "\nName | " ."\n\tFläche | " ."\n\t" ."\n\t | Funktion | " ."\n\tBauweise | " ."\n\tZustand | " ."\n\tLage | " ."\n\tHaus | " ."\n
Bauwerks-Typ | |||||||||
Name | " ."\n\tFläche | " ."\n\t" ."\n\t | Funktion | " ."\n\tzum Haus | " ."\n\tBauwerk | " ."\n
" ."\n\t | Kennzeichen: | " ."\n\t"
."\n\t\t
| "
."\n\t" ."\n\t\t | " ."\n " ."\n\t
Flurstücksfläche: ".number_format($flstflaeche,0,",",".") . " m²
"; pg_free_result($resf); // Gebäude $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-Fläche, auch 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 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 "; // "within" -> nur Geb., die komplett im FS liegen. "intersects" -> auch teil-überlappende 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 ($dbg > 2) {echo "\nSQL=
".str_replace("$1","'".$gmlid."'",$sqlg)."'
Fehler:".pg_result_error($resg)."
";} } $gebnr=0; $gebflsum=0; while($rowg = pg_fetch_assoc($resg)) { $gebnr++; if ($gebnr === 1) {geb_tab_head();} // Tab.-Kopf $ggml=$rowg["gml_id"]; $gebflsum=$gebflsum + $rowg["schnittflae"]; $gnam=trim(trim($rowg["name"], "{}"), '"'); // Gebäude-Name ist ein Array in der DB: '{"A","B"}' // Mehrfachbelegung nur theoretisch. Entklammern reicht. Mal mit und mal ohne "" drum!? $gfktk=htmlentities($rowg["gebaeudefunktion"], ENT_QUOTES, "UTF-8"); // Geb.-Funktion Key $gfktv=htmlentities($rowg["bezeichner"], ENT_QUOTES, "UTF-8"); // -Value $gfktd=htmlentities($rowg["gfktd"], ENT_QUOTES, "UTF-8"); // -Description $gbauw=$rowg["bauweise"]; $gbauwb=htmlentities($rowg["bauweise_beschreibung"], ENT_QUOTES, "UTF-8"); $gzus=$rowg["zustand"]; $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
Kein Gebäude auf diesem Flurstück.
\n
Flurstücksfläche abzüglich Gebäudefläche: ".$unbebaut."
Fehler bei Bauwerke-Verschneidung.
"; if ($dbg > 2) {echo "\nSQL=
".str_replace("$1","'".$gmlid."'",$sqlb)."
Fehler:".pg_result_error($resb)."
";} } $baunr=0; // Zähler $bauflsum=0; // Flächensumme $gwbwtyp=0; // Gruppen-Wechsel Bauwerks-Typ while($rowb = pg_fetch_assoc($resb)) { $baunr++; $btyp=$rowb["bwtyp"]; // Tabelle $bgml=$rowb["gml_id"]; $bauflsum=$bauflsum + $rowb["schnittflae"]; $bbez=htmlentities($rowb["bezeichnung"], ENT_QUOTES, "UTF-8"); $bfktk=htmlentities($rowb["bauwerksfunktion"], ENT_QUOTES, "UTF-8"); $bfktv=htmlentities($rowb["beschreibung"], ENT_QUOTES, "UTF-8"); $bfktd=htmlentities($rowb["dokumentation"], ENT_QUOTES, "UTF-8"); $bnam=htmlentities($rowb["name"], ENT_QUOTES, "UTF-8"); $bgeb=$rowb["gehoertzu"]; $drin=$rowb["drin"]; $bgeotyp=$rowb["bgeotyp"]; // Lage des Bauwerks zum Flurstück if ($bgeotyp === "LINESTRING") { if ($drin === "t") { $bstyle="gin"; } else { $bstyle="gtl"; } $f1=" "; $f2="Linie"; } elseif ($bgeotyp === "POINT") { if ($drin === "t") { $bstyle="gin"; } else { $bstyle="gtl"; } $f1=" "; $f2="Punkt"; } else { // Fläche / Multi- if ($drin === "t") { // komplett IM Flurstück $f1=$rowb["schnittflae"]." m²"; $f2=" "; $bstyle="gin"; // siehe .css } else { if ($rowb["schnittflae"] === "0.00") { // nur angrenzend $bstyle="gan"; $f1=" "; $f2="angrenzend"; } else { // Teile auf Flurstück $bstyle="gtl"; $f1=$rowb["schnittflae"]." m²"; $f2="(von ".$rowb["gebflae"]." m²)"; } } } // Gruppenwechsel Bauwerks-Typ (Quell-Tabelle) - Zwischen-Überschrift If ($btyp != $gwbwtyp) { $gwbwtyp = $btyp; if ($baunr === 1) {bauw_tab_head();} // Tab.-Kopf switch ($btyp) { case $btyp_verkehr: $btyptitle='Bauwerk im Verkehrsbereich'; break; case $btyp_gewaesser: $btyptitle='Bauwerk im Gewässerbereich'; break; case $btyp_sonst: $btyptitle='Sonstiges Bauwerk oder sonstige Einrichtung'; break; case $btyp_indu: $btyptitle="Bauwerk oder Anlage für Industrie und Gewerbe"; break; case $btyp_sport: $btyptitle="Bauwerk oder Anlage für Sport, Freizeit und Erholung"; break; case $btyp_leitg: $btyptitle="Leitung"; break; case $btyp_trans: $btyptitle="Transportanlage"; break; case $btyp_turm: $btyptitle="Turm"; break; case $btyp_vorrat: $btyptitle="Vorratsbehälter, Speicherbauwerk"; break; case $btyp_hist: $btyptitle="Historisches Bauwerk oder historische Einrichtung"; break; case $btyp_heil: $btyptitle="Heilquelle, Gasquelle"; break; case $btyp_oeff: $btyptitle="Einrichtung in öffentlichen Bereichen"; break; case $btyp_bpkt: $btyptitle="Besonderer Bauwerkspunkt"; break; default: $btyptitle='Fehler!'; break; } echo "Kein Bauwerk auf diesem Flurstück.
SQL=
".$sqlb."
$1 = gml_id = '".$gmlid."'