zeigtAuf> lage (mehrere) $sqlgz ="SELECT 'm' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.hausnummer, '' AS laufendenummer, p.bezeichnung as gemeinde " ."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 " ."JOIN ax_gemeinde p ON s.land=p.land AND s.regierungsbezirk=p.regierungsbezirk AND s.kreis=p.kreis AND s.gemeinde=p.gemeinde ".UnqKatAmt("s","p") ."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 $sqlgz.="UNION SELECT 'p' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.pseudonummer AS hausnummer, l.laufendenummer, p.bezeichnung as gemeinde " ."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 " ."JOIN ax_gemeinde p ON s.land=p.land AND s.regierungsbezirk=p.regierungsbezirk AND s.kreis=p.kreis AND s.gemeinde=p.gemeinde ".UnqKatAmt("s","p") ."WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL "; $sqlgz.="ORDER BY bezeichnung, hausnummer, laufendenummer;"; $v = array($gmlgz); $resgz = pg_prepare("", $sqlgz); $resgz = pg_execute("", $v); if (!$resgz) { echo "\n

Fehler bei Lage mit HsNr. zum Bauwerk

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

Fehler:".pg_result_error($resgz)."

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

SQL=
".str_replace("$1", "'".$gmlgz."'", $sqlgz)."

";} } } else { $erst=true; while($rowgz = pg_fetch_assoc($resgz)) { // LOOP: Lagezeilen if ($erst) { echo "\n\n\tLage"; $erst=false; } else { echo "\n\n\t "; } $ltyp=$rowgz["ltyp"]; $skey=$rowgz["lage"]; $snam=htmlentities($rowgz["bezeichnung"], ENT_QUOTES, "UTF-8"); $hsnr=$rowgz["hausnummer"]; $hlfd=$rowgz["laufendenummer"]; $gmllag=$rowgz["lgml"]; $gemeinde=htmlentities($rowgz["gemeinde"], ENT_QUOTES, "UTF-8"); if ($ltyp === "p") { $lagetitl="Nebengebäude Nr. ".$hlfd; $lagetxt=$snam." ".$hsnr." (".$hlfd."), ".$gemeinde; } else { $lagetitl="Hauptgebäude - HsNr. ".$hsnr; $lagetxt=$snam." ".$hsnr.", ".$gemeinde; } echo "\n\t" .DsKy($skey, 'Straßen-*').$lagetxt."  "; echo "\n\t

Adresse: ".$lagetitl."

\n"; } pg_free_result($resgz); } } // Eine Zeile der HTML-Tabelle ausgeben function tab_zeile($titel, $key, $inhalt, $ea, $ei) { global $showkey, $allefelder, $dbg; if ($inhalt != "" OR $allefelder) { echo "\n\n\t".$titel."\n\t"; if ($showkey and $key != '') {echo "(".$key.") ";} echo $inhalt."\n\t"; if ($ea != '') {echo "\n\t\t

".$ea."

";} // Erkl. Attribut (allgemein) if ($ei != '') {echo "\n\t\t

".$ei."

";} // Erkl. Inhalt (speziell) echo "\n\t\n"; } } // Eine zusätzliche Daten-Spalte der Datenbank-Tabelle in eine Zeile der HTML-Tabelle ausgeben (Key|Value|Erklärung) // Anwendung für die DB-Spalten, die nicht bei jeder Bauwerks-Tabelle vorkommen function zusatz_spalte($col, $inhalt) { // Spalten-Name, Value global $dbg; $einh=''; switch ($col) { case 'objekthoehe': $titel='Objekthöhe'; $einh=' m'; break; case 'breitedesobjekts': $titel='Breite des Objekts'; $einh=' m'; break; case 'bezeichnung': $titel='Bezeichnung'; break; case 'durchfahrtshoehe': // 1 $titel='Durchfahrtshöhe'; $einh=' m'; break; case 'spannungsebene': // 6 $titel='Spannungsebene'; $einh=' KV'; break; case 'produkt': // 7 $titel='Produkt'; break; case 'kilometerangabe': // 12 $titel='Kilometerangabe'; $einh=' KM'; break; default: // noch nicht berücksichtigt if ($dbg > 1) {echo "

Der Feldname ".$col." ist in function zusatz_spalte noch nicht berücksichtigt.

";} $titel=$col; } if ($inhalt != '') {$inhalt.=$einh;} tab_zeile($titel, '', $inhalt, '', ''); } // Eine Zeile der HTML-Tabelle ausgeben, die einen Objektverweis (Relation) enthält function verweis_zeile($zieltyp, $link, $info) { echo "\n\n\t".$zieltyp."\n\t".$link."\n\t"; echo "\n\t\t

".$info."

\n\t\n"; } // Ein Relationen-Feld anzeigen // col = Name der DB-Spalte // inhalt = gml_id oder Array mit gml_id's function objektverweis($col, $inhalt) { global $gkz, $showkey, $dbg; // if ($dbg > 1) {echo "

Verweis Typ '".$col."' auf Objekt(e): '".$inhalt."'.

";} switch ($col) { case 'hatdirektunten': // [] In welcher Tabelle kann man dies Objekt finden? $olist=''; $arrhdu=explode(",", trim($inhalt, "{}")); foreach($arrhdu AS $hdugml) {$olist.=$hdugml."
";} tab_zeile('Hat direkt Unten', '', $olist, '', 'Verweis auf ein Objekt unter diesem Bauwerk, Typ unbekannt.'); break; case 'gehoertzu': // Assoziation zu: FeatureType AX_Gebaeude (ax_gebaeude) 0..1' if ($inhalt == '') { verweis_zeile('Haus', '', 'Das Bauwerk gehört zum Haus'); } else { $link="\n\t\tHaus "; verweis_zeile('Haus', $link, 'Das Bauwerk gehört zum Haus'); bw_gz_lage($inhalt); } break; // 'istabgeleitetaus'; 'traegtbeizu': 'istteilvon': // -> Keine Fälle vorhanden default: if ($dbg > 1) {echo "

Der Feldname ".$col." ist in function 'objektverweis' noch nicht berücksichtigt.

";} } } // S T A R T ini_set("session.cookie_httponly", 1); session_start(); $allfld = "n"; $showkey="n"; $nodebug=""; // Var. 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('#^[0-9]{1,2}$#', $btyp)) {die("Eingabefehler btyp");} // Bauwerks-Typ = Tabelle if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");} if ($showkey === "j") {$showkey=true;} else {$showkey=false;} if (!preg_match('#^[j|n]{0,1}$#', $allfld)) {die ("Eingabefehler allfld");} if ($allfld === "j") {$allefelder=true;} else {$allefelder=false;} if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");} include "alkis_conf_location.php"; include "alkisfkt.php"; echo << ALKIS Bauwerksdaten 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_alkisbauwerk.php'"); if (!$con) echo "\n

Fehler beim Verbinden der DB

\n"; // Konstanten für Sortierung und Gruppierung nach Bauwerks-Typen $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; /* in ALLEN Bauwerks-Typen folgende Spalten, bisher NICHT verwendet: herkunft_source_source_ax_datenerhebung[] herkunft_source_source_scaledenominator[] herkunft_source_source_sourcereferencesystem[] herkunft_source_source_sourceextent[] herkunft_source_source_sourcestep[] */ /* Fallunterscheidung: B a u w e r k s - T y p Nacheinander werden folgende Abfragen je Objekt ausgeführt: 1. sqlb: Standard-Spalten, die bei jedem Typ vorhanden sind 2. sqlk: Zusätzliche Key-Value-Beziehungen (mit Key und Erklärung) 3. sqlz: Zusätzliche Spalten, individuell je Objektart (einfache Werte-Darstellung) 4. sqlr: Relationen zu anderen Objektarten */ $WH=" WHERE b".$btyp.".gml_id = $1 AND b".$btyp.".endet IS NULL;"; // WHERE-Clause (mehrfach je Typ verwendet) switch ($btyp) { case $btyp_verkehr: // 1 - V e r k e h r $FR=" FROM ax_bauwerkimverkehrsbereich b1 "; // FROM-Clause (mehrfach je Typ verwendet) $btyptitle='Bauwerk im Verkehrsbereich'; $sqlb="SELECT b1.bauwerksfunktion, k1.beschreibung, k1.dokumentation, b1.name, b1.statement, GeometryType(b1.wkb_geometry) as bgeotyp, round(st_area(b1.wkb_geometry)::numeric,2) AS flae" .$FR."LEFT JOIN ax_bauwerksfunktion_bauwerkimverkehrsbereich k1 ON b1.bauwerksfunktion=k1.wert".$WH; $sqlk="SELECT b1.zustand, k1.beschreibung, k1.dokumentation".$FR."LEFT JOIN ax_zustand_bauwerkimverkehrsbereich k1 ON b1.zustand=k1.wert".$WH; $sqlz="SELECT b1.bezeichnung, b1.breitedesobjekts, b1.durchfahrtshoehe".$FR.$WH; $sqlr="SELECT b1.hatdirektunten".$FR.$WH; break; case $btyp_gewaesser: // 2 - G e w ä s s e r $FR=" FROM ax_bauwerkimgewaesserbereich b2 "; $btyptitle='Bauwerk im Gewässerbereich'; $sqlb="SELECT b2.bauwerksfunktion, ug.beschreibung, ug.dokumentation, b2.name, b2.statement, GeometryType(b2.wkb_geometry) as bgeotyp, round(st_area(b2.wkb_geometry)::numeric,2) AS flae" .$FR."LEFT JOIN ax_bauwerksfunktion_bauwerkimgewaesserbereich ug ON b2.bauwerksfunktion=ug.wert".$WH; $sqlk="SELECT b2.zustand, k2.beschreibung, k2.dokumentation".$FR."LEFT JOIN ax_zustand_bauwerkimgewaesserbereich k2 ON b2.zustand=k2.wert".$WH; $sqlz="SELECT b2.bezeichnung".$FR.$WH; $sqlr="SELECT b2.hatdirektunten".$FR.$WH; break; case $btyp_sonst: // 3 - S o n s t i g e Bauwerke $FR=" FROM ax_sonstigesbauwerkodersonstigeeinrichtung b3 "; $btyptitle='Sonstiges Bauwerk oder sonstige Einrichtung'; $sqlb="SELECT b3.bauwerksfunktion, k3.beschreibung, k3.dokumentation, b3.name, b3.statement, GeometryType(b3.wkb_geometry) as bgeotyp, round(st_area(b3.wkb_geometry)::numeric,2) AS flae" .$FR."LEFT JOIN ax_bauwerksfunktion_sonstigesbauwerkodersonstigeeinrichtun k3 ON b3.bauwerksfunktion=k3.wert".$WH; $sqlk="SELECT b3.funktion, k3.beschreibung, k3.dokumentation, b3.hydrologischesmerkmal, hm.beschreibung AS hmbeschr, hm.dokumentation AS hmdoku" .$FR."LEFT JOIN ax_funktion_bauwerk k3 ON b3.funktion=k3.wert " ." LEFT JOIN ax_hydrologischesmerkmal_sonstigesbauwerkodersonstigeeinri hm ON b3.hydrologischesmerkmal=hm.wert".$WH; $sqlz="SELECT b3.bezeichnung, b3.objekthoehe".$FR.$WH; $sqlr="SELECT b3.hatdirektunten, b3.gehoertzu".$FR.$WH; break; case $btyp_indu: // 4 - Bauwerk oder Anlage für I n d u s t r i e und Gewerbe $FR=" FROM ax_bauwerkoderanlagefuerindustrieundgewerbe b4 "; $btyptitle="Bauwerk oder Anlage für Industrie und Gewerbe"; $sqlb="SELECT b4.bauwerksfunktion, k4.beschreibung, k4.dokumentation, b4.name, b4.statement, GeometryType(b4.wkb_geometry) as bgeotyp, round(st_area(b4.wkb_geometry)::numeric,2) AS flae" .$FR."LEFT JOIN ax_bauwerksfunktion_bauwerkoderanlagefuerindustrieundgewer k4 ON b4.bauwerksfunktion=k4.wert".$WH; $sqlk="SELECT b4.zustand, k4.beschreibung, k4.dokumentation" .$FR."LEFT JOIN ax_zustand_bauwerkoderanlagefuerindustrieundgewerbe k4 ON b4.zustand=k4.wert".$WH; $sqlz="SELECT b4.bezeichnung, b4.objekthoehe".$FR.$WH; $sqlr="SELECT b4.hatdirektunten".$FR.$WH; break; case $btyp_sport: // 5 - Bauwerk oder Anlage für S p o r t , Freizeit und Erholung $FR=" FROM ax_bauwerkoderanlagefuersportfreizeitunderholung b5 "; $btyptitle="Bauwerk oder Anlage für Sport, Freizeit und Erholung"; $sqlb="SELECT b5.bauwerksfunktion, k5.beschreibung, k5.dokumentation, b5.name, b5.statement, GeometryType(b5.wkb_geometry) as bgeotyp, round(st_area(b5.wkb_geometry)::numeric,2) AS flae" .$FR."LEFT JOIN ax_bauwerksfunktion_bauwerkoderanlagefuersportfreizeitunde k5 ON b5.bauwerksfunktion=k5.wert".$WH; $sqlk="SELECT b5.sportart, k5.beschreibung, k5.dokumentation" .$FR."LEFT JOIN ax_sportart_bauwerkoderanlagefuersportfreizeitunderholung k5 ON b5.sportart=k5.wert".$WH; $sqlz="SELECT b5.breitedesobjekts".$FR.$WH; $sqlr="SELECT b5.hatdirektunten".$FR.$WH; break; case $btyp_leitg: // 6 - L e i t u n g $FR=" FROM ax_leitung b6 "; $btyptitle="Leitung"; $sqlb="SELECT b6.bauwerksfunktion, k6.beschreibung, k6.dokumentation, b6.name, b6.statement, GeometryType(b6.wkb_geometry) as bgeotyp, round(st_area(b6.wkb_geometry)::numeric,2) AS flae" .$FR."LEFT JOIN ax_bauwerksfunktion_leitung k6 ON b6.bauwerksfunktion=k6.wert".$WH; $sqlk=""; $sqlz="SELECT b6.spannungsebene".$FR.$WH; $sqlr="SELECT b6.hatdirektunten".$FR.$WH; break; case $btyp_trans: // 7 - T r a n s p o r t a n l a g e $FR=" FROM ax_transportanlage b7 "; $btyptitle="Transportanlage"; $sqlb="SELECT b7.bauwerksfunktion, k7.beschreibung, k7.dokumentation, b7.statement, GeometryType(b7.wkb_geometry) as bgeotyp, round(st_area(b7.wkb_geometry)::numeric,2) AS flae" .$FR."LEFT JOIN ax_bauwerksfunktion_transportanlage k7 ON b7.bauwerksfunktion=k7.wert".$WH; $sqlk="SELECT b7.lagezurerdoberflaeche, k7.beschreibung, k7.dokumentation" .$FR."LEFT JOIN ax_lagezurerdoberflaeche_transportanlage k7 ON b7.lagezurerdoberflaeche=k7.wert".$WH; $sqlz="SELECT b7.produkt".$FR.$WH; $sqlr="SELECT b7.hatdirektunten".$FR.$WH; break; case $btyp_turm: // 8 - T u r m (Sonderfall Array) $FR=" FROM ax_turm b8 "; $btyptitle="Turm"; $sqlb="SELECT k8.wert AS bauwerksfunktion, k8.beschreibung, k8.dokumentation, b8.name, b8.statement, GeometryType(b8.wkb_geometry) as bgeotyp, round(st_area(b8.wkb_geometry)::numeric,2) AS flae" .$FR."LEFT JOIN ax_bauwerksfunktion_turm k8 ON k8.wert =ANY(b8.bauwerksfunktion)".$WH; $sqlk="SELECT b8.zustand, k8.beschreibung, k8.dokumentation" .$FR."LEFT JOIN ax_zustand_turm k8 ON b8.zustand=k8.wert".$WH; $sqlz="SELECT b8.objekthoehe".$FR.$WH; $sqlr="SELECT b8.hatdirektunten, b8.zeigtauf".$FR.$WH; break; case $btyp_vorrat: // 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 $FR=" FROM ax_vorratsbehaelterspeicherbauwerk b9 "; $btyptitle="Vorratsbehälter, Speicherbauwerk"; $sqlb="SELECT b9.bauwerksfunktion, k9.beschreibung, k9.dokumentation, b9.name, b9.statement, GeometryType(b9.wkb_geometry) as bgeotyp, round(st_area(b9.wkb_geometry)::numeric,2) AS flae" .$FR."LEFT JOIN ax_bauwerksfunktion_vorratsbehaelterspeicherbauwerk k9 ON b9.bauwerksfunktion=k9.wert".$WH; $sqlk="SELECT b9.lagezurerdoberflaeche, k9.beschreibung, k9.dokumentation, b9.speicherinhalt, sp9.beschreibung AS spbes, sp9.dokumentation AS spdok" .$FR."LEFT JOIN ax_lagezurerdoberflaeche_vorratsbehaelterspeicherbauwerk k9 ON b9.lagezurerdoberflaeche=k9.wert LEFT JOIN ax_speicherinhalt_vorratsbehaelterspeicherbauwerk sp9 ON b9.speicherinhalt=sp9.wert".$WH; $sqlz="SELECT b9.objekthoehe".$FR.$WH; $sqlr="SELECT b9.hatdirektunten".$FR.$WH; break; case $btyp_hist: // 10 - H i s t o r i s c h e s Bauwerk oder historische Einrichtung $FR=" FROM ax_historischesbauwerkoderhistorischeeinrichtung b10 "; $btyptitle="Historisches Bauwerk oder historische Einrichtung"; $sqlb="SELECT b10.name, b10.statement, GeometryType(b10.wkb_geometry) as bgeotyp, round(st_area(b10.wkb_geometry)::numeric,2) AS flae".$FR.$WH; $sqlk="SELECT b10.archaeologischertyp, k10.beschreibung, k10.dokumentation" .$FR."LEFT JOIN ax_archaeologischertyp_historischesbauwerkoderhistorischee k10 ON b10.archaeologischertyp=k10.wert".$WH; $sqlz=""; $sqlr="SELECT b10.hatdirektunten".$FR.$WH; break; case $btyp_heil: // 11 - H e i l q u e l l e , G a s q u e l l e $FR=" FROM ax_heilquellegasquelle b11 "; $btyptitle="Heilquelle, Gasquelle"; $sqlb="SELECT b11.name, b11.statement, GeometryType(b11.wkb_geometry) as bgeotyp, round(st_area(b11.wkb_geometry)::numeric,2) AS flae".$FR.$WH; $sqlk="SELECT b11.art, k11.beschreibung, k11.dokumentation, " ."b11.hydrologischesmerkmal, hm.beschreibung AS hmbes, hm.dokumentation AS hmdok".$FR ."LEFT JOIN ax_art_heilquellegasquelle k11 ON b11.art=k11.wert " ."LEFT JOIN ax_hydrologischesmerkmal_heilquellegasquelle hm ON b11.hydrologischesmerkmal=hm.wert".$WH; $sqlz=""; $sqlr="SELECT b11.hatdirektunten ".$FR.$WH; break; case $btyp_oeff: // 12 - Einrichtung in ö f f e n t l i c h e n Bereichen $FR=" FROM ax_einrichtunginoeffentlichenbereichen b12 "; $btyptitle="Einrichtung in öffentlichen Bereichen"; $sqlb="SELECT b12.statement, GeometryType(b12.wkb_geometry) as bgeotyp, round(st_area(b12.wkb_geometry)::numeric,2) AS flae".$FR.$WH; $sqlk="SELECT b12.art, k12.beschreibung, k12.dokumentation".$FR ."LEFT JOIN ax_art_einrichtunginoeffentlichenbereichen k12 ON b12.art=k12.wert".$WH; $sqlz="SELECT b12.kilometerangabe".$FR.$WH; $sqlr="SELECT b12.hatdirektunten ".$FR.$WH; break; /* case $btyp_bpkt: // 13 - Besonderer Bauwerkspunkt (ohne Geom.) $FR=" FROM ax_besondererbauwerkspunkt b13 "; $btyptitle="Besonderer Bauwerkspunkt"; // punktkennung, sonstigeeigenschaft, zustaendigestelle_land, zustaendigestelle_stelle break; */ default: die('

Falscher Bauwerkstyp.

'); break; } // 1. sqlb: Standard-Spalten, die bei (fast) jedem Typ vorhanden sind $v=array($gmlid); $resb=pg_prepare("", $sqlb); $resb=pg_execute("", $v); if (!$resb) { echo "\n

Fehler bei Bauwerksdaten Standardfelder.

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

Fehler:".pg_result_error($resb)."

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

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

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

Die Abfrage liefert mehr als ein (".$zeianz.") Bauwerk! (Standardfelder)

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

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

";} } } if (!$rowb = pg_fetch_assoc($resb)) { echo "\n

Fehler! Kein Treffer für gml_id=".$gmlid."

"; die('

Abbruch

'); // Das würde sich sonst 2x wiederholen } else { // Treffer // Seitenkopf echo "

ALKIS Bauwerk ".$btyp." - ".$gmlid." 

" // Balken, Farbe wie WMS ."\n

".$btyptitle."

" ."\n"; echo "\n" ."\n" ."\n\t" ."\n\t" ."\n\t" ."\n"; if (isset($rowb["bauwerksfunktion"])) { // nicht immer vorhanden tab_zeile('Bauwerksfunktion', $rowb["bauwerksfunktion"], htmlentities($rowb["beschreibung"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowb["dokumentation"], ENT_QUOTES, "UTF-8")); } if (isset($rowb["name"])) { tab_zeile('Name', '', htmlentities($rowb["name"], ENT_QUOTES, "UTF-8"), '', ''); } tab_zeile('Statement', '', htmlentities($rowb["statement"], ENT_QUOTES, "UTF-8"), '', ''); // G e o m e t r i e und Fläche if (isset($rowb["bgeotyp"])) { $geotyp=$rowb["bgeotyp"]; switch ($geotyp) { case "POINT": $geodeutsch=$geotyp." bedeutet 'Punkt', einzelne Koordinate."; break; case "LINESTRING": $geodeutsch=$geotyp." bedeutet 'Linie'."; break; case "POLYGON": $geodeutsch=$geotyp." bedeutet eine einzelne 'Fläche'."; break; case "MULTIPOLYGON": $geodeutsch=$geotyp." bedeutet eine 'Fläche', die aus mehreren Teilen bestehen kann oder die Aussparungen haben kann."; break; default: $geodeutsch=""; } tab_zeile('Geometrietyp', '', $geotyp, '', $geodeutsch); if ($geotyp == "POLYGON" or $geotyp == "MULTIPOLYGON") { $flaeche=$rowb["flae"]." m²"; tab_zeile('Fläche', '', $flaeche, '', "Die 'Fläche' des Bauwerks wird aus der Geometrie berechnet, aber nur bei POLYGON."); } } } pg_free_result($resb); } // 2. sqlk: Zusätzliche Key-Value-Beziehungen // Andere Art der Darstellung als die schlichten Zusatzfelder, Key optional anzeigen, Erklärung zum Wert aus Schlüsseltabelle if ($sqlk != '') { $v=array($gmlid); $resk=pg_prepare("", $sqlk); $resk=pg_execute("", $v); if (!$resk) { echo "\n

Fehler bei Schlüsseltabelle ".$btyp."

"; if ($dbg > 0) { echo "

Fehler:".pg_result_error($resk)."

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

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

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

Die Abfrage liefert mehr als ein (".$zeianz.") Bauwerk! (Key-Value)

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

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

";} } } if (!$rowk = pg_fetch_array($resk)) { echo "\n

Fehler! Kein Treffer für gml_id=".$gmlid."

"; } else { // Treffer $bes=htmlentities($rowk["beschreibung"], ENT_QUOTES, "UTF-8"); $dok=htmlentities($rowk["dokumentation"], ENT_QUOTES, "UTF-8"); switch ($btyp) { // individuell je Typ case $btyp_verkehr: // 1 tab_zeile('Zustand', $rowk["zustand"], $bes, '', $dok); break; case $btyp_gewaesser: // 2 tab_zeile('Zustand', $rowk["zustand"], $bes, '', $dok); break; case $btyp_sonst: // 3 tab_zeile('Funktion', $rowk["funktion"], $bes, '', $dok); tab_zeile('Hydrologisches Merkmal', $rowk["hydrologischesmerkmal"], htmlentities($rowk["hmbeschr"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowk["hmdoku"], ENT_QUOTES, "UTF-8")); break; case $btyp_indu: // 4 tab_zeile('Zustand', $rowk["zustand"], $bes, '', $dok); break; case $btyp_sport: // 5 tab_zeile('Sportart', $rowk["sportart"], $bes, '', $dok); break; case $btyp_trans: // 7 tab_zeile('Lage zur Erdoberfläche', $rowk["lagezurerdoberflaeche"], $bes, '', $dok); break; case $btyp_turm: // 8 tab_zeile('Zustand', $rowk["zustand"], $bes, '', $dok); break; case $btyp_vorrat: // 9 tab_zeile('Lage zur Erdoberfläche', $rowk["lagezurerdoberflaeche"], $bes, '', $dok); tab_zeile('Speicherinhalt', $rowk["speicherinhalt"], htmlentities($rowk["spbes"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowk["spdok"], ENT_QUOTES, "UTF-8")); case $btyp_hist: // 10 tab_zeile('Archäologischer Typ', $rowk["archaeologischertyp"], $bes, '', $dok); break; case $btyp_heil: // 11 tab_zeile('Art', $rowk["art"], $bes, '', $dok); tab_zeile('Hydrologisches Merkmal', $rowk["hydrologischesmerkmal"], htmlentities($rowk["hmbes"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowk["hmdok"], ENT_QUOTES, "UTF-8")); break; case $btyp_oeff: // 12 tab_zeile('Art', $rowk["art"], $bes, '', $dok); break; // case $btyp_bpkt: // 13 // break; } } pg_free_result($resk); } } // 3. sqlz: Individuelle Z u s a t z - Spalten je Bauwerks-Art // einfache Werte-Anzeige, ohne Schlüsseltabelle if ($sqlz != '') { $v=array($gmlid); $resz=pg_prepare("", $sqlz); $resz=pg_execute("", $v); if (!$resz) { echo "\n

Fehler bei Bauwerk Relation.

"; if ($dbg > 0) { echo "

Fehler:".pg_result_error($resz)."

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

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

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

Die Abfrage liefert mehr als ein (".$zeianz.") Bauwerk! (Zusatz-Spalten)

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

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

";} } } if (!$rowz = pg_fetch_array($resz)) { echo "\n

Fehler! Kein Treffer für gml_id=".$gmlid."

"; } else { // Die Spalten im Row abarbeiten $anzcol=pg_num_fields($resz); for ($i = 0; $i < $anzcol; $i++) { $k=pg_field_name($resz, $i); $v=$rowz[$i]; if ($v != "" OR $allefelder) { zusatz_spalte($k, $v); } } } pg_free_result($resz); } } // 4. sqlr: R e l a t i o n e n zu anderen Objektarten if ($sqlr != '') { $v=array($gmlid); $resr=pg_prepare("", $sqlr); $resr=pg_execute("", $v); if (!$resr) { echo "\n

Fehler bei Bauwerksdaten Zusatzfelder.

"; if ($dbg > 0) { echo "

Fehler:".pg_result_error($resr)."

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

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

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

Die Abfrage liefert mehr als ein (".$zeianz.") Bauwerk! (Relationen)

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

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

";} } } if (!$rowr = pg_fetch_array($resr)) { echo "\n

Fehler! Kein Treffer für gml_id=".$gmlid."

"; } else { // Die Spalten im Row abarbeiten $anzcol=pg_num_fields($resr); for ($i = 0; $i < $anzcol; $i++) { $k=pg_field_name($resr, $i); $v=$rowr[$i]; // Array mit gml_id anderer Objekte if ($v != "" OR $allefelder) { objektverweis($k, $v); } } } pg_free_result($resr); } } echo "\n
AttributWert" ."\n\t\t

Erklärung zum Attribut

" ."\n\t\t

Erklärung zum Inhalt

" ."\n\t
\n"; echo "
\n
\n\tzurück "; if ($PrntBtn==true){echo "\n\tDrucken ";} echo "\n
"; footer($gmlid, selbstverlinkung()."?", "&btyp=".$btyp); ?>