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 "\nSQL=
".str_replace("$1", "'".$gmlgz."'", $sqlgz)."
Adresse: ".$lagetitl."
".$ea."
";} // Erkl. Attribut (allgemein) if ($ei != '') {echo "\n\t\t".$ei."
";} // Erkl. Inhalt (speziell) echo "\n\tDer 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".$info."
\n\tVerweis 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."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 <<Abbruch
'); } $dbg=$debug; if ($nodebug === "j") {$dbg=0;} $con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisbauwerk.php'"); if (!$con) echo "\nFehler 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 "\nFehler bei Bauwerksdaten Standardfelder.
"; if ($dbg > 0) { echo "\nFehler:".pg_result_error($resb)."
"; if ($dbg > 2) {echo "\nSQL=
".str_replace("$1","'".$gmlid."'",$sqlb)."'
Die Abfrage liefert mehr als ein (".$zeianz.") Bauwerk! (Standardfelder)
"; if ($dbg > 2) {echo "\nSQL=
".htmlentities(str_replace("$1","'".$gmlid."'",$sqlb), ENT_QUOTES, "UTF-8")."
Fehler! Kein Treffer für gml_id=".$gmlid."
"; die('Abbruch