Gebäude" ."\n

.. auf oder an dem Flurstück. Ermittelt durch Verschneidung der Geometrie.

"; // Tabellen-Kopf echo "\n
\n"; echo "\n" ."\n\t" ."\n\t" ."\n\t" ."\n\t" ."\n\t" ."\n\t" ."\n\t" ."\n\t" ."\n"; } function bauw_tab_head() { // Kopf für die Anzeige der Bauwerke. Nur wenn tatsächlich Bauwerke vorkommen. // Überschrift echo "\n\n

Bauwerke

" ."\n

.. auf oder an dem Flurstück. Ermittelt durch Verschneidung der Geometrie.

"; // Tabellen-Kopf echo "\n
\n
NameFläche FunktionBauweiseZustand
"; echo ""; echo "\n"; echo "\n\t" ."\n\t" ."\n\t" ."\n\t" ."\n\t" ."\n\t" ."\n"; } // S T A R T ini_set("session.cookie_httponly", 1); session_start(); $showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren $cntget = extract($_GET); // Parameter in Variable umwandeln // strikte Validierung aller Parameter if (isset($gmlid)) { if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} } else { die("Fehlender Parameter"); } if (isset($gkz)) { if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} } else { die("Fehlender Parameter"); } if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");} if ($showkey === "j") {$showkey=true;} else {$showkey=false;} if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");} include "alkis_conf_location.php"; include "alkisfkt.php"; echo << ALKIS Gebäudenachweis END; $erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('

Abbruch

'); } $dbg=$debug; if ($nodebug === "j") {$dbg=0;} $con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisgebaeudenw.php'"); if (!$con) echo "\n

Fehler beim Verbinden der DB

"; // Flurstück $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 ".UnqKatAmt("f","g") ."WHERE f.gml_id= $1 AND f.endet IS NULL AND g.endet IS NULL;"; $v=array($gmlid); $resf=pg_prepare($con, "", $sqlf); $resf=pg_execute($con, "", $v); if (!$resf) { echo "\n

Fehler bei Flurstücksdaten.

"; if ($dbg > 2) {echo "\n

SQL=
".str_replace("$1","'".$gmlid."'",$sqlf)."'

";} if ($dbg > 1) {echo "

Fehler:".pg_result_error($resf)."

";} } if ($dbg > 0) { $zeianz=pg_num_rows($resf); if ($zeianz > 1){ echo "\n

Die Abfrage liefert mehr als ein Flurstücks-Objekt!

"; if ($dbg > 2) {echo "\n

SQL=
".htmlentities(str_replace("$1","'".$gmlid."'",$sqlf), ENT_QUOTES, "UTF-8")."

";} } } 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 "\n

Fehler! Kein Treffer fuer gml_id=".$gmlid."

"; } echo "

ALKIS Flurstück (Gebäude und Bauwerke) ".$gmkgnr."-".$flurnummer."-".$flstnummer." 

"; // Balken echo "\n

Flurstück (Gebäude und Bauwerke)

"; echo "\n
Bauwerks-Typ
NameFläche Funktion
" // Kopf ."\n" ."\n\t" ."\n\t" ."\n\t" ."\n" ."\n
" ."\n\t Kennzeichen:" ."\n\t\t" // Kennzeichen in Rahmen ."\n\t\t" ."\n\t\t\t" ."\n\t\t\t" ."\n\t\t\t" ."\n\t\t\n\t\t" ."\n\t\t\t" ."\n\t\t\t" ."\n\t\t\t" ."\n\t\t" ."\n\t\t
GemarkungFlurFlurst-Nr.
".DsKy($gmkgnr, 'Gemarkungsnummer').$gemkname." ".$flurnummer."".$flstnummer."
" ."\n\t
" ."\n\t\t" ."\n\t
"; echo "\n

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, coalesce(h.beschreibung, '') AS bauweise_beschreibung, u.beschreibung AS bezeichner, u.dokumentation AS gfktd, g.zustand, coalesce(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($con, "", $sqlg); $resg=pg_execute($con, "", $v); if (!$resg) { echo "\n

Fehler bei Gebäude-Verschneidung.

"; if ($dbg > 2) {echo "\n

SQL=
".str_replace("$1","'".$gmlid."'",$sqlg)."'

";} if ($dbg > 1) {echo "

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"]; if (is_null($rowg["name"])) { $gnam=""; } else { $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" ."\n\t"; if ($gnam != "") {echo "".$gnam."
";} echo "" ."\n\t".$f1."\n\t".$f2."" // Flächenangaben ."\n\t".DsKy($gfktk, 'Funktion-*').$gfktv."" ."\n\t"; if ($gbauw != "") { echo DsKy($gbauw, 'Bauweise-*').$gbauwb; } echo "\n\t"; if ($gzus != "") { echo DsKy(gzus, 'Zustand-*').$gzustand; } echo ""; // 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, laufendenummer;"; $v = array($ggml); $resl = pg_prepare($con, "", $sqll); $resl = pg_execute($con, "", $v); if (!$resl) { echo "\n

Fehler bei Lage mit HsNr.

"; if ($dbg > 2) {echo "\n

SQL=
".str_replace("$1","'".$gmlid."'",$sqll)."'

";} if ($dbg > 1) {echo "

Fehler:".pg_result_error($resl)."

";} } 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. ".$hlfd; // + HausNr?? } else { $lagetitl="Hauptgebäude - Hausnummer"; $lagetxt=$snam." ".$hsnr; } echo "\n\t\t" .DsKy($skey, 'Straßen-*').$lagetxt." 
"; } // Ende Loop Lage m.H. pg_free_result($resl); echo "\n\t"; echo "\n\t" // Link Haus ."\n\t\tHaus " ."\n\t" ."\n"; } // Footer Gebäude if ($gebnr === 0) { echo "


Kein Gebäude auf diesem Flurstück.
 

"; } 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); // B a u w e r k e // Konstanten für Sortierung und Gruppierung $btyp_verkehr=1; $btyp_gewaesser=2; $btyp_sonst=3; $btyp_indu=4; $btyp_sport=5; $btyp_leitg=6; $btyp_trans=7; $btyp_turm=8; $btyp_vorrat=9; $btyp_hist=10; $btyp_heil=11; $btyp_oeff=12; $btyp_bpkt=13; // Tabllen-Alias, 2-3 stellig. 1. Stelle: f_=Flurstück, b_=Bauwerk, k_=Key = Schlüsseltabelle. // 2.-3. Stelle: wie Konstante // 1 - V e r k e h r $sqlb="SELECT ".$btyp_verkehr." AS bwtyp, b1.gml_id, b1.bauwerksfunktion, k1.beschreibung, k1.dokumentation, b1.bezeichnung, b1.name, NULL AS gehoertzu, round(st_area(b1.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b1.wkb_geometry,f1.wkb_geometry))::numeric,2) AS schnittflae, st_within(b1.wkb_geometry,f1.wkb_geometry) as drin, GeometryType(b1.wkb_geometry) as bgeotyp FROM ax_flurstueck f1 JOIN ax_bauwerkimverkehrsbereich b1 ON st_intersects(b1.wkb_geometry,f1.wkb_geometry) = true LEFT JOIN ax_bauwerksfunktion_bauwerkimverkehrsbereich k1 ON b1.bauwerksfunktion = k1.wert WHERE f1.gml_id = $1 AND f1.endet IS NULL AND b1.endet IS NULL "; // 2 - G e w ä s s e r $sqlb.="UNION SELECT ".$btyp_gewaesser." AS bwtyp, b2.gml_id, b2.bauwerksfunktion, k2.beschreibung, k2.dokumentation, b2.bezeichnung, b2.name, NULL AS gehoertzu, round(st_area(b2.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b2.wkb_geometry,f2.wkb_geometry))::numeric,2) AS schnittflae, st_within(b2.wkb_geometry,f2.wkb_geometry) as drin, GeometryType(b2.wkb_geometry) as bgeotyp FROM ax_flurstueck f2 JOIN ax_bauwerkimgewaesserbereich b2 ON st_intersects(b2.wkb_geometry,f2.wkb_geometry) = true LEFT JOIN ax_bauwerksfunktion_bauwerkimgewaesserbereich k2 ON b2.bauwerksfunktion = k2.wert WHERE f2.gml_id = $1 AND f2.endet IS NULL AND b2.endet IS NULL "; // 3 - S o n s t i g e Bauwerke $sqlb.="UNION SELECT ".$btyp_sonst." AS bwtyp, b3.gml_id, b3.bauwerksfunktion, k3.beschreibung, k3.dokumentation, b3.bezeichnung, b3.name, b3.gehoertzu, round(st_area(b3.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b3.wkb_geometry,f3.wkb_geometry))::numeric,2) AS schnittflae, st_within(b3.wkb_geometry,f3.wkb_geometry) as drin, GeometryType(b3.wkb_geometry) as bgeotyp FROM ax_flurstueck f3 JOIN ax_sonstigesbauwerkodersonstigeeinrichtung b3 ON st_intersects(b3.wkb_geometry,f3.wkb_geometry) = true LEFT JOIN ax_bauwerksfunktion_sonstigesbauwerkodersonstigeeinrichtun k3 ON b3.bauwerksfunktion = k3.wert WHERE f3.gml_id = $1 AND f3.endet IS NULL AND b3.endet IS NULL "; // 4 - Bauwerk oder Anlage für I n d u s t r i e und Gewerbe $sqlb.="UNION SELECT ".$btyp_indu." AS bwtyp, b4.gml_id, b4.bauwerksfunktion, k4.beschreibung, k4.dokumentation, b4.bezeichnung, b4.name, NULL AS gehoertzu, round(st_area(b4.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b4.wkb_geometry,f4.wkb_geometry))::numeric,2) AS schnittflae, st_within(b4.wkb_geometry,f4.wkb_geometry) as drin, GeometryType(b4.wkb_geometry) as bgeotyp FROM ax_flurstueck f4 JOIN ax_bauwerkoderanlagefuerindustrieundgewerbe b4 ON st_intersects(b4.wkb_geometry,f4.wkb_geometry) = true LEFT JOIN ax_bauwerksfunktion_bauwerkoderanlagefuerindustrieundgewer k4 ON b4.bauwerksfunktion = k4.wert WHERE f4.gml_id = $1 AND f4.endet IS NULL AND b4.endet IS NULL "; // 5 - Bauwerk oder Anlage für S p o r t , Freizeit und Erholung $sqlb.="UNION SELECT ".$btyp_sport." AS bwtyp, b5.gml_id, b5.bauwerksfunktion, k5.beschreibung, k5.dokumentation, NULL AS bezeichnung, b5.name, NULL AS gehoertzu, round(st_area(b5.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b5.wkb_geometry,f5.wkb_geometry))::numeric,2) AS schnittflae, st_within(b5.wkb_geometry,f5.wkb_geometry) as drin, GeometryType(b5.wkb_geometry) as bgeotyp FROM ax_flurstueck f5 JOIN ax_bauwerkoderanlagefuersportfreizeitunderholung b5 ON st_intersects(b5.wkb_geometry,f5.wkb_geometry) = true LEFT JOIN ax_bauwerksfunktion_bauwerkoderanlagefuersportfreizeitunde k5 ON b5.bauwerksfunktion = k5.wert WHERE f5.gml_id = $1 AND f5.endet IS NULL AND b5.endet IS NULL "; // 6 - L e i t u n g $sqlb.="UNION SELECT ".$btyp_leitg." AS bwtyp, b6.gml_id, b6.bauwerksfunktion, k6.beschreibung, k6.dokumentation, NULL AS bezeichnung, b6.name, NULL AS gehoertzu, round(st_area(b6.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b6.wkb_geometry,f6.wkb_geometry))::numeric,2) AS schnittflae, st_within(b6.wkb_geometry,f6.wkb_geometry) as drin, GeometryType(b6.wkb_geometry) as bgeotyp FROM ax_flurstueck f6 JOIN ax_leitung b6 ON st_intersects(b6.wkb_geometry,f6.wkb_geometry) = true LEFT JOIN ax_bauwerksfunktion_leitung k6 ON b6.bauwerksfunktion = k6.wert WHERE f6.gml_id = $1 AND f6.endet IS NULL AND b6.endet IS NULL "; // 7 - T r a n s p o r t a n l a g e $sqlb.="UNION SELECT ".$btyp_trans." AS bwtyp, b7.gml_id, b7.bauwerksfunktion, k7.beschreibung, k7.dokumentation, NULL AS bezeichnung, NULL AS name, NULL AS gehoertzu, round(st_area(b7.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b7.wkb_geometry,f7.wkb_geometry))::numeric,2) AS schnittflae, st_within(b7.wkb_geometry,f7.wkb_geometry) as drin, GeometryType(b7.wkb_geometry) as bgeotyp FROM ax_flurstueck f7 JOIN ax_transportanlage b7 ON st_intersects(b7.wkb_geometry,f7.wkb_geometry) = true LEFT JOIN ax_bauwerksfunktion_transportanlage k7 ON b7.bauwerksfunktion = k7.wert WHERE f7.gml_id = $1 AND f7.endet IS NULL AND b7.endet IS NULL "; // 8 - T u r m (Sonderfall Array) $sqlb.="UNION SELECT ".$btyp_turm." AS bwtyp, b8.gml_id, k8.wert AS bauwerksfunktion, k8.beschreibung, k8.dokumentation, NULL AS bezeichnung, b8.name, NULL AS gehoertzu, round(st_area(b8.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b8.wkb_geometry,f8.wkb_geometry))::numeric,2) AS schnittflae, st_within(b8.wkb_geometry,f8.wkb_geometry) as drin, GeometryType(b8.wkb_geometry) as bgeotyp FROM ax_flurstueck f8 JOIN ax_turm b8 ON st_intersects(b8.wkb_geometry,f8.wkb_geometry) = true LEFT JOIN ax_bauwerksfunktion_turm k8 ON k8.wert =ANY(b8.bauwerksfunktion) WHERE f8.gml_id = $1 AND f8.endet IS NULL AND b8.endet IS NULL "; // 9 - V o r r a t s b e h ä l t e r , S p e i c h e r b a u w e r k $sqlb.="UNION SELECT ".$btyp_vorrat." AS bwtyp, b9.gml_id, b9.bauwerksfunktion, k9.beschreibung, k9.dokumentation, NULL AS bezeichnung, b9.name, NULL AS gehoertzu, round(st_area(b9.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b9.wkb_geometry,f9.wkb_geometry))::numeric,2) AS schnittflae, st_within(b9.wkb_geometry,f9.wkb_geometry) as drin, GeometryType(b9.wkb_geometry) as bgeotyp FROM ax_flurstueck f9 JOIN ax_vorratsbehaelterspeicherbauwerk b9 ON st_intersects(b9.wkb_geometry,f9.wkb_geometry) = true LEFT JOIN ax_bauwerksfunktion_vorratsbehaelterspeicherbauwerk k9 ON b9.bauwerksfunktion = k9.wert WHERE f9.gml_id = $1 AND f9.endet IS NULL AND b9.endet IS NULL "; // 10 - H i s t o r i s c h e s Bauwerk oder historische Einrichtung $sqlb.="UNION SELECT ".$btyp_hist." AS bwtyp, b10.gml_id, NULL AS bauwerksfunktion, k10.beschreibung, k10.dokumentation, NULL AS bezeichnung, b10.name, NULL AS gehoertzu, round(st_area(b10.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b10.wkb_geometry,f10.wkb_geometry))::numeric,2) AS schnittflae, st_within(b10.wkb_geometry,f10.wkb_geometry) as drin, GeometryType(b10.wkb_geometry) as bgeotyp FROM ax_flurstueck f10 JOIN ax_historischesbauwerkoderhistorischeeinrichtung b10 ON st_intersects(b10.wkb_geometry,f10.wkb_geometry) = true LEFT JOIN ax_archaeologischertyp_historischesbauwerkoderhistorischee k10 ON b10.archaeologischertyp = k10.wert WHERE f10.gml_id = $1 AND f10.endet IS NULL AND b10.endet IS NULL "; // 11 - H e i l q u e l l e , G a s q u e l l e $sqlb.="UNION SELECT ".$btyp_heil." AS bwtyp, b11.gml_id, NULL AS bauwerksfunktion, k11.beschreibung, k11.dokumentation, NULL AS bezeichnung, b11.name, NULL AS gehoertzu, round(st_area(b11.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b11.wkb_geometry,f11.wkb_geometry))::numeric,2) AS schnittflae, st_within(b11.wkb_geometry,f11.wkb_geometry) as drin, GeometryType(b11.wkb_geometry) as bgeotyp FROM ax_flurstueck f11 JOIN ax_heilquellegasquelle b11 ON st_intersects(b11.wkb_geometry,f11.wkb_geometry) = true LEFT JOIN ax_art_heilquellegasquelle k11 ON b11.art = k11.wert WHERE f11.gml_id = $1 AND f11.endet IS NULL AND b11.endet IS NULL "; // 12 - Einrichtung in öffentlichen Bereichen $sqlb.="UNION SELECT ".$btyp_oeff." AS bwtyp, b12.gml_id, NULL AS bauwerksfunktion, k12.beschreibung, k12.dokumentation, NULL AS bezeichnung, NULL AS name, NULL AS gehoertzu, round(st_area(b12.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b12.wkb_geometry,f12.wkb_geometry))::numeric,2) AS schnittflae, st_within(b12.wkb_geometry,f12.wkb_geometry) as drin, GeometryType(b12.wkb_geometry) as bgeotyp FROM ax_flurstueck f12 JOIN ax_einrichtunginoeffentlichenbereichen b12 ON st_intersects(b12.wkb_geometry,f12.wkb_geometry) = true LEFT JOIN ax_art_einrichtunginoeffentlichenbereichen k12 ON b12.art = k12.wert WHERE f12.gml_id = $1 AND f12.endet IS NULL AND b12.endet IS NULL "; /* Testfälle FS: SELECT f.gml_id FROM ax_flurstueck f JOIN ax_einrichtunginoeffentlichenbereichen b ON st_intersects(b.wkb_geometry,f.wkb_geometry) = true; 140: DENW17AL34g000F6 */ /* // 13 - Besonderer Bauwerkspunkt (ohne Geometrie !) $sqlb.="UNION SELECT ".$btyp_bpkt. // Tab: ax_besondererbauwerkspunkt */ // Generell ... $sqlb.="ORDER BY bwtyp, schnittflae DESC;"; $v=array($gmlid); $resb=pg_prepare($con, "", $sqlb); $resb=pg_execute($con, "", $v); $baunr=0; // Zähler $bauflsum=0; // Flächensumme $gwbwtyp=0; // Gruppen-Wechsel Bauwerks-Typ if (!$resb) { echo "\n

Fehler bei Bauwerke-Verschneidung.

"; if ($dbg > 2) {echo "\n

SQL=
".str_replace("$1","'".$gmlid."'",$sqlb)."

";} if ($dbg > 1) {echo "

Fehler:".pg_result_error($resb)."

";} } else { while($rowb = pg_fetch_assoc($resb)) { $baunr++; $btyp=$rowb["bwtyp"]; // Tabelle $bgml=$rowb["gml_id"]; $bauflsum=$bauflsum + $rowb["schnittflae"]; if (is_null($rowb["bezeichnung"])) { $bbez=""; } else { $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"); if (is_null($rowb["name"])) { $bnam=""; } else { $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 "".$btyptitle.""; // ++ Symbol? } echo "\n"; echo "\n\t"; if ($bbez != "") {echo "".$bbez." ";} if ($bnam != "") {echo "".$bnam." ";} echo ""; echo "\n\t".$f1."" ."\n\t".$f2.""; // Flächenangaben echo "\n\t".DsKy($bfktk, 'Bauwerksfunktion-*')."".$bfktv.""; // Lage / Haus (nur bei Typ 3 sonstige) echo "\n\t"; // Link if ($bgeb != "") { // gehört zu Gebäude // bw_gz_lage($bgeb); // Function: Lage (Adresse) ausgeben echo "\n\t\tHaus "; } echo "\n\t"; // Bauwerk Details echo "\n\t" // Link ."\n\t\tBauwerk " // Icon für Bauwerk schaffen ."\n\t" ."\n"; } // Footer Bauwerke if ($baunr === 0) { echo "\n

Kein Bauwerk auf diesem Flurstück.


"; // if ($dbg > 2) {echo "\n

SQL=
".$sqlb."
$1 = gml_id = '".$gmlid."'

";} } else { echo "\n" ."\n\tSumme:" ."\n\t".number_format($bauflsum,0,",",".")."    m²" ."\n\t " ."\n" ."\n\n"; } pg_free_result($resb); } echo "
\n
" ."\n\tzurück "; if ($PrntBtn==true){echo "\n\tDrucken ";} echo "\n
"; footer($gmlid, selbstverlinkung()."?", ""); ?>