Changeset 422 for trunk/info/info/alkisn/alkishaus.php
- Timestamp:
- 06/24/21 15:59:16 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/info/info/alkisn/alkishaus.php
r412 r422 5 5 Version: 6 6 2016-02-24 Version fuer norGIS-ALKIS-Import 7 2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermöglichen 8 2016-12-05 Array-Behandlung ax_gebaeude.name 9 2017-06-08 Validierung Eingabeparameter, Feinkorrekturen 10 2017-06-09 Tool-Tip GebÀudefunktion, ErklÀrung 2 getrennte p.Styles 11 2017-10-09 Sauber filtern auf endet IS NULL 12 2018-04-23 &nodebug 13 2018-11-09 Umstellung Full-Schema 14 15 ToDo: 16 - Die im Modul 'Lage' als Tooltip vorhandene lange Beschreibung der GebÀude-Funktion (Inhalt) hier auch anzeigen. 17 - sinnvolle Sortierung und Gruppierung der Felder 18 - geometrische Suche nach FS, auf denen das Haus steht 7 .... 8 2020-12-01 Darstellung der Datenerhebung, Klammern um SchlÃŒsselwerte 9 2020-12-02 Verschnitt GebÀude / FlurstÃŒcke 10 2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 11 2020-12-15 Input-Validation und Strict Comparisation (===) 12 ToDo: 19 13 - Template im WMS auf Ebene GebÀude hierhin verknÃŒpfen. 20 - Relationen abbilden:21 ax_gebaeude >gehoertZu> ax_gebaeude (ringförmige Verbindung GebÀudekomplex)22 ax_gebaeude (umschliesst) ax_bauteil23 ax_gebaeude >gehoert> ax_person (Ausnahme)24 14 */ 15 ini_set("session.cookie_httponly", 1); 25 16 session_start(); 26 17 $allfld = "n"; $showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren … … 28 19 29 20 // strikte Validierung aller Parameter 30 if (!isset($gmlid) or !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 31 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 21 if (isset($gmlid)) { 22 if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 23 } else { 24 die("Fehlender Parameter"); 25 } 26 if (isset($gkz)) { 27 if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 28 } else { 29 die("Fehlender Parameter"); 30 } 32 31 if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");} 33 if ($showkey == "j") {$showkey=true;} else {$showkey=false;}32 if ($showkey === "j") {$showkey=true;} else {$showkey=false;} 34 33 if (!preg_match('#^[j|n]{0,1}$#', $allfld)) {die ("Eingabefehler allfld");} 35 if ($allfld == "j") {$allefelder=true;} else {$allefelder=false;}34 if ($allfld === "j") {$allefelder=true;} else {$allefelder=false;} 36 35 if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");} 37 36 38 require_once("alkis_conf_location.php");39 i f ($auth == "mapbender") {require_once($mapbender);}40 include("alkisfkt.php"); 37 include "alkis_conf_location.php"; 38 include "alkisfkt.php"; 39 41 40 echo <<<END 42 41 <!doctype html> … … 52 51 <body> 53 52 END; 53 54 $erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 55 54 56 // Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. 55 57 // Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 56 if ($nodebug == "j") {$debug=0;}58 if ($nodebug === "j") {$debug=0;} 57 59 58 60 $con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkishaus.php'"); … … 85 87 86 88 // Balken 87 echo "\n<p class='geb'>ALKIS Haus ".$gmlid." </p>"; // ++ Kennzeichen? 88 echo "\n<h2><img src='ico/Haus.png' width='16' height='16' alt=''> Haus (Gebäude)</h2>"; 89 90 // Kennzeichen in Rahmen 91 // - Welches Kennzeichen zum Haus ? 92 echo "\n<hr>"; 93 // Umschalter: auch leere Felder ausgeben? 94 echo "<p class='nwlink noprint'>"; 95 echo "Umschalten: <a class='nwlink' href='".$_SERVER['PHP_SELF']."?gkz=".$gkz."&gmlid=".$gmlid; 89 echo "\n<p class='balken geb'>ALKIS Haus ".$gmlid." </p>"; 90 echo "\n<h2><img src='ico/Haus.png' width='16' height='16' alt=''> Haus (Gebäude)</h2>\n<hr>"; 91 92 echo "<p class='nwlink noprint'>"; // Umschalter: auch leere Felder 93 echo "Umschalten: <a class='nwlink' href='".selbstverlinkung()."?gkz=".$gkz."&gmlid=".$gmlid; 96 94 if ($showkey) {echo "&showkey=j";} else {echo "&showkey=n";} 97 95 if ($allefelder) { … … 102 100 echo "</a></p>"; 103 101 104 $gebnr = 0; 105 106 while($rowg = pg_fetch_assoc($resg)) { // Schleife, kann aber nur EIN Haus sein. 107 $gebnr++; 108 echo "\n<table class='geb'>" 109 ."\n<tr>\n" 110 ."\n\t<td class='head' title=''>Attribut</td>" 111 ."\n\t<td class='head mittelspalte' title=''>Wert</td>" 112 ."\n\t<td class='head' title=''>" 113 ."\n\t\t<p class='erklk'>Erklärung Kategorie</p>" 114 ."\n\t\t<p class='erkli'>Erklärung Inhalt</p>" 115 ."\n\t</td>" 116 ."\n</tr>"; 117 118 $aog=$rowg["aog"]; 119 $aug=$rowg["aug"]; 120 $hoh=$rowg["hochhaus"]; 121 $nam=trim(trim($rowg["name"], "{}"), '"'); // Gebaeude-Name ist ein Array in der DB: '{"A","B"}' 122 // Mehrfachbelegung nur theoretisch. Entklammern reicht. Mal mit und mal ohne "" drum !? 123 /* SELECT name FROM ax_gebaeude WHERE NOT name IS NULL AND array_length(name, 1) > 1; */ 124 $kfunk=$rowg["gebaeudefunktion"]; 125 $bfunk=$rowg["bfunk"]; 126 $dfunk=$rowg["dfunk"]; 127 128 $baw=$rowg["bauweise"]; 129 $bbauw=$rowg["bbauw"]; 130 $dbauw=$rowg["dbauw"]; 131 132 $ofl=$rowg["lagezurerdoberflaeche"]; 133 $oflv=$rowg["oflv"]; 134 $ofld=$rowg["ofld"]; 135 136 $dga=$rowg["dachgeschossausbau"]; // Key 137 $dgav=$rowg["dgaus"]; // Value 138 139 $zus=$rowg["zustand"]; // Key 140 $zusv=$rowg["zustandv"]; // Value 141 $zusd=$rowg["zustandd"]; // Description 142 143 $wgf=$rowg["wgf"]; // Array-> kommagetrennte Liste 144 145 $daf=$rowg["dachform"]; // Key 146 $dach=$rowg["bdach"]; // Value 147 148 $hho=$rowg["objekthoehe"]; 149 $gfl=$rowg["geschossflaeche"]; 150 $grf=$rowg["grundflaeche"]; 151 $ura=$rowg["umbauterraum"]; 152 $bja=$rowg["baujahr"]; 153 $daa=$rowg["dachart"]; 154 // $qag=$rowg["qualitaetsangaben"]; 155 156 if (($nam != "") OR $allefelder) { 102 if (!($rowg = pg_fetch_assoc($resg))) { 103 echo "\n<p class='err'><br>Kein Gebäude gefunden</p>"; 104 die ("Abbruch"); 105 } 106 107 echo "\n<table class='geb'>" 108 ."\n<tr>\n" 109 ."\n\t<td class='head' title=''>Attribut</td>" 110 ."\n\t<td class='head mittelspalte' title=''>Wert</td>" 111 ."\n\t<td class='head' title=''>" 112 ."\n\t\t<p class='erklk'>Erklärung Kategorie</p>" 113 ."\n\t\t<p class='erkli'>Erklärung Inhalt</p>" 114 ."\n\t</td>" 115 ."\n</tr>"; 116 117 $aog=$rowg["aog"]; 118 $aug=$rowg["aug"]; 119 $hoh=$rowg["hochhaus"]; 120 $nam=trim(trim($rowg["name"], "{}"), '"'); // Gebaeude-Name ist ein Array. 121 // Mehrfachbelegung theoretisch. Entklammern reicht. Mal mit und mal ohne "" drum. 122 $kfunk=$rowg["gebaeudefunktion"]; 123 $bfunk=$rowg["bfunk"]; 124 $dfunk=$rowg["dfunk"]; 125 126 $baw=$rowg["bauweise"]; 127 $bbauw=$rowg["bbauw"]; 128 $dbauw=$rowg["dbauw"]; 129 130 $ofl=$rowg["lagezurerdoberflaeche"]; 131 $oflv=$rowg["oflv"]; 132 $ofld=$rowg["ofld"]; 133 134 $dga=$rowg["dachgeschossausbau"]; // Key 135 $dgav=$rowg["dgaus"]; // Value 136 137 $zus=$rowg["zustand"]; // Key 138 $zusv=$rowg["zustandv"]; // Value 139 $zusd=$rowg["zustandd"]; // Description 140 141 $wgf=$rowg["wgf"]; // Array-> kommagetr. Liste 142 143 $daf=$rowg["dachform"]; // Key 144 $dach=$rowg["bdach"]; // Value 145 146 $hho=$rowg["objekthoehe"]; 147 $gfl=$rowg["geschossflaeche"]; 148 $grf=$rowg["grundflaeche"]; 149 $ura=$rowg["umbauterraum"]; 150 $bja=$rowg["baujahr"]; 151 $daa=$rowg["dachart"]; 152 153 if (($nam != "") OR $allefelder) { 154 echo "\n<tr>" 155 ."\n\t<td class='li'>Name</td>" 156 ."\n\t<td>".$nam."</td>" 157 ."\n\t<td>" 158 ."\n\t\t<p class='erklk'>'Name' ist der Eigenname oder die Bezeichnung des Gebäudes." 159 ."\n\t</td>" 160 ."\n</tr>"; 161 } 162 163 // 0 bis N L a g e bezeichnungen mit Haus- oder Pseudo-Nummer 164 165 // HAUPTgebÀude 166 $sqll ="SELECT 'm' AS ltyp, lh.gml_id AS gmllag, sh.lage, sh.bezeichnung, lh.hausnummer, '' AS laufendenummer FROM ax_gebaeude gh 167 JOIN ax_lagebezeichnungmithausnummer lh ON lh.gml_id=ANY(gh.zeigtauf) 168 JOIN ax_lagebezeichnungkatalogeintrag sh ON lh.kreis=sh.kreis AND lh.gemeinde=sh.gemeinde AND lh.lage=sh.lage 169 WHERE gh.gml_id= $1 AND gh.endet IS NULL AND lh.endet IS NULL AND sh.endet IS NULL"; 170 // oder NEBENgebÀude 171 $sqll.=" UNION 172 SELECT 'p' AS ltyp, ln.gml_id AS gmllag, sn.lage, sn.bezeichnung, ln.pseudonummer AS hausnummer, ln.laufendenummer 173 FROM ax_gebaeude gn 174 JOIN ax_lagebezeichnungmitpseudonummer ln ON ln.gml_id=gn.hat 175 JOIN ax_lagebezeichnungkatalogeintrag sn ON ln.kreis=sn.kreis AND ln.gemeinde=sn.gemeinde AND ln.lage=sn.lage 176 WHERE gn.gml_id= $1 AND gn.endet IS NULL AND ln.endet IS NULL AND sn.endet IS NULL "; 177 178 $sqll.="ORDER BY bezeichnung, hausnummer ;"; 179 180 $v = array($gmlid); 181 $resl = pg_prepare("", $sqll); 182 $resl = pg_execute("", $v); 183 if (!$resl) { 184 echo "\n<p class='err'>Fehler bei Lage mit HsNr.</p>"; 185 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqll."<br>$1 = gml_id = '".$gmlid."'</p>";} 186 } 187 $zhsnr=0; 188 while($rowl = pg_fetch_assoc($resl)) { // LOOP: Lagezeilen 189 $zhsnr++; 190 $ltyp=$rowl["ltyp"]; // Lagezeilen-Typ 191 $skey=$rowl["lage"]; // Str.-Schluessel 192 $snam=htmlentities($rowl["bezeichnung"], ENT_QUOTES, "UTF-8"); // -Name 193 $hsnr=$rowl["hausnummer"]; 194 $hlfd=$rowl["laufendenummer"]; 195 $gmllag=$rowl["gmllag"]; 196 197 if ($zhsnr === 1) { 157 198 echo "\n<tr>" 158 ."\n\t<td class='li'>Name</td>" 159 ."\n\t<td>".$nam."</td>" 199 ."\n\t<td class='li' title='Lage mit Hausnummer oder Pseudonummer'>Adresse</td>" 200 ."\n\t<td class='fett'>"; 201 } 202 echo "\n\t\t<img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''> "; 203 if ($showkey) {echo "<span class='key'>(".$skey.")</span> ";} 204 echo "\n\t\t<a title='Hausnummer' href='alkislage.php?gkz=".$gkz."&gmlid=".$gmllag."&ltyp=".$ltyp; 205 if ($showkey) {echo "&showkey=j";} 206 echo "'>".$snam." ".$hsnr; 207 if ($ltyp === "p") {echo ", lfd.Nr ".$hlfd;} 208 echo "</a><br>"; 209 } // Ende Loop Lagezeilen m.H. 210 if ($zhsnr > 0) {echo "\n\t</td>\n\t<td> </td>\n</tr>";} 211 pg_free_result($resl); 212 213 // GebÀudefunktion 214 echo "\n<tr>" 215 ."\n\t<td class='li'>Gebäudefunktion</td>" 216 ."\n\t<td class='fett'>"; 217 if ($showkey and $kfunk != '') {echo "<span class='key'>(".$kfunk.")</span> ";} 218 echo $bfunk."</td>" 219 ."\n\t<td>" 220 ."\n\t\t<p class='erklk'>'Gebäudefunktion' ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des Gebäudes'</p>" 221 ."\n\t\t<p class='erkli'>".$dfunk."</p>" 222 ."</td>" 223 ."\n</tr>"; 224 225 // Bauweise 226 if ($baw != "" OR $allefelder) { 227 echo "\n<tr>" 228 ."\n\t<td class='li'>Bauweise</td>" 229 ."\n\t<td class='fett'>"; 230 if ($showkey and $baw != '') {echo "<span class='key'>(".$baw.")</span> ";} 231 echo $bbauw."</td>" 232 ."\n\t<td>" 233 ."\n\t\t<p class='erklk'>'Bauweise' ist die Beschreibung der Art der Bauweise.</p>" 234 ."\n\t\t<p class='erkli'>".$dbauw."</p>" 235 ."\n\t</td>" 236 ."\n</tr>"; 237 } 238 239 // Geschosse 240 if ($aog != "" OR $allefelder) { 241 echo "\n<tr>" 242 ."\n\t<td class='li'>Geschosse</td>" 243 ."\n\t<td class='fett'>".$aog."</td>" 244 ."\n\t<td>" 245 ."\n\t\t<p class='erklk'>Anzahl oberirdischer Geschosse.</p>" 246 ."\n\t</td>" 247 ."\n</tr>"; 248 } 249 250 // U-Geschosse 251 if ($aug != "" OR $allefelder) { 252 echo "\n<tr>" 253 ."\n\t<td class='li'>U-Geschosse</td>" 254 . "\n\t<td class='fett'>".$aug."</td>" 255 ."\n\t<td>" 256 ."\n\t\t<p class='erklk'>Anzahl unterirdischer Geschosse.</p>" 257 ."\n\t</td>" 258 ."\n</tr>"; 259 } 260 261 // Hochhaus 262 if ($hoh != "" OR $allefelder) { 263 echo "\n<tr>" 264 ."\n\t<td class='li'>Hochhaus</td>" 265 ."\n\t<td class='fett'>".$hoh."</td>" 266 ."\n\t<td>" 267 ."\n\t\t<p class='erklk'>'Hochhaus' ist ein Gebäude, das nach Gebäudehöhe und Ausprägung als Hochhaus zu bezeichnen ist. Für Gebäude im Geschossbau gilt dieses i.d.R. ab 8 oberirdischen Geschossen, für andere Gebäude ab einer Gebäudehöhe von 22 m." 268 ."\n\t</td>" 269 ."\n</tr>"; 270 } 271 272 // Lage zur ErdoberflÀche 273 if ($ofl != "" OR $allefelder) { 274 echo "\n<tr>" 275 ."\n\t<td class='li'>Lage zur Erdoberfläche</td>" 276 ."\n\t<td class='fett'>"; 277 if ($showkey and $ofl != '') {echo "<span class='key'>(".$ofl.")</span> ";} 278 echo $oflv."</td>" 279 ."\n\t<td>" 280 ."\n\t\t<p class='erklk'>'Lage zur Erdoberfläche' ist die Angabe der relativen Lage des Gebäudes zur Erdoberfläche. Diese Attributart wird nur bei nicht ebenerdigen Gebäuden geführt.<br>" 281 ."\n\t\t<p class='erkli'>".$ofld."</p>" 282 ."\n\t</td>" 283 ."\n</tr>"; 284 } 285 286 // Dachgeschossausbau, Spalte dokumentation ist immer leer 287 if ($dga != "" OR $allefelder) { 288 echo "\n<tr>" 289 ."\n\t<td class='li'>Dachgeschossausbau</td>" 290 ."\n\t<td class='fett'>"; 291 if ($showkey and $dga != '') {echo "<span class='key'>(".$dga.")</span> ";} 292 echo $dgav."</td>" 293 ."\n\t<td>" 294 ."\n\t\t<p class='erklk'>'Dachgeschossausbau' ist ein Hinweis auf den Ausbau bzw. die Ausbaufähigkeit des Dachgeschosses." 295 ."\n\t</td>" 296 ."\n</tr>"; 297 } 298 299 // Zustand 300 if ($zus != "" OR $allefelder) { 301 echo "\n<tr>" 302 ."\n\t<td class='li'>Zustand</td>" 303 ."\n\t<td class='fett'>"; 304 if ($showkey and $zus != '') {echo "<span class='key'>(".$zus.")</span> ";} 305 echo $zusv."</td>" 306 ."\n\t<td>" 307 ."\n\t\t<p class='erklk'>'Zustand' beschreibt die Beschaffenheit oder die Betriebsbereitschaft von 'Gebäude'. Diese Attributart wird nur dann optional geführt, wenn der Zustand des Gebäudes vom nutzungsfähigen Zustand abweicht.</p>" 308 ."\n\t\t<p class='erkli'>".$zusd."</p>" 309 ."\n\t</td>" 310 ."\n</tr>"; 311 } 312 313 // Weitere GebÀudefunktionen 314 // Suche Testfall: SELECT gml_id, gebaeudefunktion, weiteregebaeudefunktion FROM ax_gebaeude WHERE (NOT weiteregebaeudefunktion IS NULL) AND cardinality(weiteregebaeudefunktion) > 1 liMIT 10; 315 if ($wgf != "" OR $allefelder) { // ... ist ein Array 316 echo "\n<tr>" 317 ."\n\t<td class='li'>Weitere Gebäudefunktionen</td>" 318 ."\n\t<td>"; 319 if ($wgf != "") { // Kommagetrennte Liste aus Array 320 $sqlw="SELECT wert, beschreibung, dokumentation FROM ax_gebaeudefunktion WHERE wert IN ( $1 ) ORDER BY wert;"; 321 $v = array($wgf); 322 $resw = pg_prepare("", $sqlw); 323 $resw = pg_execute("", $v); 324 if (!$resw) { 325 echo "\n<p class='err'>Fehler bei Gebäude - weitere Funktion.</p>"; 326 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqlw."<br>$1 = Werteliste = '".$wgf."'</p>";} 327 } 328 $zw=0; 329 while($roww = pg_fetch_assoc($resw)) { // LOOP Funktion 330 if ($zw > 0) {echo "<br>";} 331 if ($showkey and $roww["wert"] != '') {echo "<span class='key'>(".$roww["wert"].")</span> ";} 332 echo "<span title='".$roww["dokumentation"]."'>".$roww["beschreibung"]."</span>"; 333 $zw++; 334 } 335 pg_free_result($resw); 336 } 337 echo "</td>" 338 ."\n\t<td>" 339 ."\n\t\t<p class='erklk'>'Weitere Gebäudefunktion' ist die Funktion, die ein Gebäude neben der dominierenden Gebäudefunktion hat." 340 ."\n\t</td>" 341 ."\n</tr>"; 342 } 343 344 // Dachform, Spalte dokumentation ist immer leer 345 if ($daf != "" OR $allefelder) { 346 echo "\n<tr>" 347 ."\n\t<td class='li'>Dachform</td>" 348 ."\n\t<td class='fett'>"; 349 if ($showkey and $daf != '') {echo "<span class='key'>(".$daf.")</span> ";} 350 echo $dach."</td>" 351 ."\n\t<td>" 352 ."\n\t\t<p class='erklk'>'Dachform' beschreibt die charakteristische Form des Daches." 353 ."\n\t</td>" 354 ."\n</tr>"; 355 } 356 357 // Objekthöhe 358 if ($hho != "" OR $allefelder) { 359 echo "\n<tr>" 360 ."\n\t<td class='li'>Objekthöhe</td>" 361 ."\n\t<td class='fett'>".$hho."</td>" 362 ."\n\t<td>" 363 ."\n\t\t<p class='erklk'>'Objekthöhe' ist die Höhendifferenz in [m] zwischen dem höchsten Punkt der Dachkonstruktion und der festgelegten Geländeoberfläche des Gebäudes." 364 ."\n\t</td>" 365 ."\n</tr>"; 366 } 367 368 // GeschossflÀche 369 if ($gfl != "" OR $allefelder) { 370 echo "\n<tr>" 371 ."\n\t<td class='li'>Geschossfläche</td>" 372 ."\n\t<td class='fett'>"; 373 if ($gfl != "") {echo $gfl." m²";} 374 echo "</td>" 375 ."\n\t<td>" 376 ."\n\t\t<p class='erklk'>'Geschossfläche' ist die Gebäudegeschossfläche in [qm]." 377 ."\n\t</td>" 378 ."\n</tr>"; 379 } 380 381 // GrundflÀche 382 if ($grf != "" OR $allefelder) { 383 echo "\n<tr>" 384 ."\n\t<td class='li'>Grundfläche</td>" 385 ."\n\t<td class='fett'>"; 386 if ($grf != "") {echo $grf." m²";} 387 echo "\n\t<td>" 388 ."\n\t\t<p class='erklk'>'Grundfläche' ist die Gebäudegrundfläche in [qm]." 389 ."\n\t</td>" 390 ."\n</tr>"; 391 } 392 393 // Umbauter Raum 394 if ($ura != "" OR $allefelder) { 395 echo "\n<tr>" 396 ."\n\t<td class='li'>Umbauter Raum</td>" 397 ."\n\t<td class='fett'>".$ura."</td>" 398 ."\n\t<td>" 399 ."\n\t\t<p class='erklk'>'Umbauter Raum' ist der umbaute Raum [Kubikmeter] des Gebäudes." 400 ."\n\t</td>" 401 ."\n</tr>"; 402 } 403 404 // Baujahr 405 if ($bja != "" OR $allefelder) { 406 echo "\n<tr>" 407 ."\n\t<td class='li'>Baujahr</td>" 408 ."\n\t<td class='fett'>".$bja."</td>" 409 ."\n\t<td>" 410 ."\n\t\t<p class='erklk'>'Baujahr' ist das Jahr der Fertigstellung oder der baulichen Veränderung des Gebäudes." 411 ."\n\t</td>" 412 ."\n</tr>"; 413 } 414 415 // Dachart 416 if ($daa != "" OR $allefelder) { 417 echo "\n<tr>" 418 ."\n\t<td class='li'>Dachart</td>" 419 ."\n\t<td class='fett'>".$daa."</td>" 420 ."\n\t<td>" 421 ."\n\t\t<p class='erklk'>'Dachart' gibt die Art der Dacheindeckung (z.B. Reetdach) an." 422 ."\n\t</td>" 423 ."\n</tr>"; 424 } 425 426 // D a t e n e r h e b u n g (QualitÀt der Einmessung) 427 $sqle ="SELECT g.gml_id, e.wert, e.beschreibung, e.dokumentation FROM ax_gebaeude g 428 LEFT JOIN ax_datenerhebung e ON cast(e.wert AS varchar) = any(g.herkunft_source_source_ax_datenerhebung) 429 WHERE g.gml_id= $1 AND g.endet IS NULL;"; 430 $v = array($gmlid); 431 $rese = pg_prepare("", $sqle); 432 $rese = pg_execute("", $v); 433 if (!$rese) { 434 echo "\n<p class='err'>Fehler bei Datenerhebung.<br>".pg_last_error()."</p>"; 435 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqle."<br>$1 = gml_id = '".$gmlid."'</p>";} 436 } 437 while($rowe = pg_fetch_assoc($rese)) { // Schleife weil array-Feld, meist aber leer 438 $erheb =$rowe["wert"]; 439 $berheb=$rowe["beschreibung"]; 440 $derheb=$rowe["dokumentation"]; // immer leer, oder 441 if ($derheb == '' AND $erheb != '') { // Wert ohne Doku 442 if ( $erheb >= 2000) { // selbst was dazu sagen 443 $derheb = 'nicht eingemessenes Gebäude'; // so hieà das in der ALK 444 } 445 } 446 if ($erheb != "" OR $allefelder) { 447 echo "\n<tr>" 448 ."\n\t<td class='li'>Datenerhebung</td>" 449 ."\n\t<td class='fett'>"; 450 if ($showkey) {echo "<span class='key'>(".$erheb.")</span> ";} 451 echo $berheb."</td>" 160 452 ."\n\t<td>" 161 ."\n\t\t<p class='erklk'>'Name' ist der Eigenname oder die Bezeichnung des Gebäudes." 162 ."\n\t</td>" 453 ."\n\t\t<p class='erklk'>'Datenerhebung' beschreibt Qualitätsangaben, Herkunft.</p>" 454 ."\n\t\t<p class='erkli'>".$derheb."</p>" 455 ."</td>" 163 456 ."\n</tr>"; 164 457 } 165 166 // 0 bis N L a g e bezeichnungen mit Haus- oder Pseudo-Nummer 167 168 // HAUPTgebÀude 169 $sqll ="SELECT 'm' AS ltyp, lh.gml_id AS gmllag, sh.lage, sh.bezeichnung, lh.hausnummer, '' AS laufendenummer FROM ax_gebaeude gh 170 JOIN ax_lagebezeichnungmithausnummer lh ON lh.gml_id=ANY(gh.zeigtauf) 171 JOIN ax_lagebezeichnungkatalogeintrag sh ON lh.kreis=sh.kreis AND lh.gemeinde=sh.gemeinde AND lh.lage=sh.lage 172 WHERE gh.gml_id= $1 AND gh.endet IS NULL AND lh.endet IS NULL AND sh.endet IS NULL"; 173 // oder NEBENgebÀude 174 $sqll.=" UNION 175 SELECT 'p' AS ltyp, ln.gml_id AS gmllag, sn.lage, sn.bezeichnung, ln.pseudonummer AS hausnummer, ln.laufendenummer 176 FROM ax_gebaeude gn 177 JOIN ax_lagebezeichnungmitpseudonummer ln ON ln.gml_id=gn.hat 178 JOIN ax_lagebezeichnungkatalogeintrag sn ON ln.kreis=sn.kreis AND ln.gemeinde=sn.gemeinde AND ln.lage=sn.lage 179 WHERE gn.gml_id= $1 AND gn.endet IS NULL AND ln.endet IS NULL AND sn.endet IS NULL "; 180 181 $sqll.="ORDER BY bezeichnung, hausnummer ;"; 182 183 $v = array($gmlid); 184 $resl = pg_prepare("", $sqll); 185 $resl = pg_execute("", $v); 186 if (!$resl) { 187 echo "\n<p class='err'>Fehler bei Lage mit HsNr.</p>"; 188 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqll."<br>$1 = gml_id = '".$gmlid."'</p>";} 458 } 459 echo "\n</table>"; 460 pg_free_result($rese); 461 462 $gfla=$rowg["gebflae"]; // bei Flurstck. gebraucht 463 pg_free_result($resg); 464 465 echo "\n\n<h3><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurstücke</h3>" 466 ."\n<p>.. auf dem das Gebäude steht. Ermittelt durch Verschneidung der Geometrie.</p>"; 467 468 // F l u r s t ÃŒ c k 469 $sqlf ="SELECT f.gml_id, round(st_area(ST_Intersection(g.wkb_geometry,f.wkb_geometry))::numeric,2) AS schnittflae, 470 st_within(g.wkb_geometry,f.wkb_geometry) as drin, o.gemarkungsnummer, o.bezeichnung, f.flurnummer, f.zaehler, f.nenner 471 FROM ax_gebaeude g, ax_flurstueck f LEFT JOIN ax_gemarkung o ON f.land=o.land AND f.gemarkungsnummer=o.gemarkungsnummer 472 WHERE g.gml_id= $1 AND f.endet IS NULL and g.endet IS NULL 473 AND st_intersects(g.wkb_geometry,f.wkb_geometry) = true ORDER BY schnittflae DESC;"; 474 475 $v=array($gmlid); 476 $resf=pg_prepare("", $sqlf); 477 $resf=pg_execute("", $v); 478 if (!$resf) { 479 echo "\n<p class='err'>Fehler bei FS-Verschneidung.</p>"; 480 if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqlf."<br>$1 = gml_id = '".$gmlid."'</p>";} 481 } 482 483 echo "\n<hr>\n<table class='geb'>" 484 ."\n<tr>" 485 ."\n\t<td class='heads fla' title='Schnittfläche zwischen Flurstück und Gebäude'><img src='ico/sortd.png' width='10' height='10' alt='' title='Sortierung (absteigend)'>Fläche</td>" 486 ."\n\t<td class='head' title='Verhältnis Gebäudefläche zur FlurstÃŒcksfläche'>Verhältnis</td>" 487 ."\n\t<td class='head' title='Flurstückskennzeichen Ortsteil'>Gemarkung</td>" 488 ."\n\t<td class='head' title='Flurstückskennzeichen Flur-Nummer'>Flur</td>" 489 ."\n\t<td class='heads fsnr' title='Flurstückskennzeichen Flurstücks-Nummer'>Flurstück</td>" 490 ."\n\t<td class='head nwlink' title='Flurstücks-Nachweis'>weitere Auskunft</td>" 491 ."\n</tr>"; 492 493 while($rowf = pg_fetch_assoc($resf)) { 494 $fgml=$rowf["gml_id"]; 495 $drin=$rowf["drin"]; 496 $schni=$rowf["schnittflae"]; 497 $flur= $rowf["flurnummer"]; 498 $fskenn=$rowf["zaehler"]; 499 if ($rowf["nenner"] != "") { $fskenn.="/".$rowf["nenner"];} 500 501 // 3 FÀlle: 502 if ($drin === "t") { // GebÀude liegt komplett in FlurstÃŒck 503 $gstyle="gin"; // siehe .css 504 $f1=number_format($schni,2,",",".") . " m²"; 505 $f2="vollständig"; 506 } else { 507 if ($schni === "0.00") { // GebÀude angrenzend (Grenzbebauung) 508 $gstyle="gan"; 509 $f1=" "; 510 $f2="angrenzend"; 511 } else { // Teile des GebÀudes stehen auf dem FlurstÃŒck 512 $gstyle="gtl"; 513 $f1=number_format($schni,2,",",".") . " m²"; 514 $f2="teilweise"; 515 } 189 516 } 190 $zhsnr=0; 191 while($rowl = pg_fetch_assoc($resl)) { // LOOP: Lagezeilen 192 $zhsnr++; 193 $ltyp=$rowl["ltyp"]; // Lagezeilen-Typ 194 $skey=$rowl["lage"]; // Str.-Schluessel 195 $snam=htmlentities($rowl["bezeichnung"], ENT_QUOTES, "UTF-8"); // -Name 196 $hsnr=$rowl["hausnummer"]; 197 $hlfd=$rowl["laufendenummer"]; 198 $gmllag=$rowl["gmllag"]; 199 200 if ($zhsnr == 1) { 201 echo "\n<tr>" 202 ."\n\t<td class='li' title='Lage mit Hausnummer oder Pseudonummer'>Adresse</td>" 203 ."\n\t<td class='fett'>"; 204 } 205 echo "\n\t\t<img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''> "; 206 if ($showkey) {echo "<span class='key'>(".$skey.")</span> ";} 207 echo "\n\t\t<a title='Hausnummer' href='alkislage.php?gkz=".$gkz."&gmlid=".$gmllag."&ltyp=".$ltyp; 208 if ($showkey) {echo "&showkey=j";} 209 echo "'>".$snam." ".$hsnr; 210 if ($ltyp == "p") {echo ", lfd.Nr ".$hlfd;} 211 echo "</a><br>"; 212 } // Ende Loop Lagezeilen m.H. 213 if ($zhsnr > 0) {echo "\n\t</td>\n\t<td> </td>\n</tr>";} 214 215 // In der 3. Spalte: 216 // p.erklk = ErklÀrungen zur Kategorie 217 // p.erkli = .. zum Inhalt 218 219 // GebÀudefunktion 220 echo "\n<tr>" 221 ."\n\t<td class='li'>Gebäudefunktion</td>" 222 ."\n\t<td class='fett'>"; 223 if ($showkey) {echo "<span class='key'>".$kfunk."</span> ";} 224 echo $bfunk."</td>" 225 ."\n\t<td>" 226 ."\n\t\t<p class='erklk'>'Gebäudefunktion' ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des Gebäudes'</p>" 227 ."\n\t\t<p class='erkli'>".$dfunk."</p>" 228 ."</td>" 229 ."\n</tr>"; 230 231 // Bauweise 232 if ($baw != "" OR $allefelder) { 233 echo "\n<tr>" 234 ."\n\t<td class='li'>Bauweise</td>" 235 ."\n\t<td class='fett'>"; 236 if ($showkey) {echo "<span class='key'>".$baw."</span> ";} 237 echo $bbauw."</td>" 238 ."\n\t<td>" 239 ."\n\t\t<p class='erklk'>'Bauweise' ist die Beschreibung der Art der Bauweise.</p>" 240 ."\n\t\t<p class='erkli'>".$dbauw."</p>" 241 ."\n\t</td>" 242 ."\n</tr>"; 243 } 244 245 // Geschosse 246 if ($aog != "" OR $allefelder) { 247 echo "\n<tr>" 248 ."\n\t<td class='li'>Geschosse</td>" 249 ."\n\t<td class='fett'>".$aog."</td>" 250 ."\n\t<td>" 251 ."\n\t\t<p class='erklk'>Anzahl oberirdischer Geschosse.</p>" 252 ."\n\t</td>" 253 ."\n</tr>"; 254 } 255 256 // U-Geschosse 257 if ($aug != "" OR $allefelder) { 258 echo "\n<tr>" 259 ."\n\t<td class='li'>U-Geschosse</td>" 260 . "\n\t<td class='fett'>".$aug."</td>" 261 ."\n\t<td>" 262 ."\n\t\t<p class='erklk'>Anzahl unterirdischer Geschosse.</p>" 263 ."\n\t</td>" 264 ."\n</tr>"; 265 } 266 267 // Hochhaus 268 if ($hoh != "" OR $allefelder) { 269 echo "\n<tr>" 270 ."\n\t<td class='li'>Hochhaus</td>" 271 ."\n\t<td class='fett'>".$hoh."</td>" 272 ."\n\t<td>" 273 ."\n\t\t<p class='erklk'>'Hochhaus' ist ein Gebäude, das nach Gebäudehöhe und Ausprägung als Hochhaus zu bezeichnen ist. Für Gebäude im Geschossbau gilt dieses i.d.R. ab 8 oberirdischen Geschossen, für andere Gebäude ab einer Gebäudehöhe von 22 m." 274 ."\n\t</td>" 275 ."\n</tr>"; 276 } 277 278 // Lage zur ErdoberflÀche 279 if ($ofl != "" OR $allefelder) { 280 echo "\n<tr>" 281 ."\n\t<td class='li'>Lage zur Erdoberfläche</td>" 282 ."\n\t<td class='fett'>"; 283 if ($showkey) {echo "<span class='key'>".$ofl."</span> ";} 284 echo $oflv."</td>" 285 ."\n\t<td>" 286 ."\n\t\t<p class='erklk'>'Lage zur Erdoberfläche' ist die Angabe der relativen Lage des Gebäudes zur Erdoberfläche. Diese Attributart wird nur bei nicht ebenerdigen Gebäuden geführt.<br>" 287 ."\n\t\t<p class='erkli'>".$ofld."</p>" 288 ."\n\t</td>" 289 ."\n</tr>"; 290 } 291 292 // Dachgeschossausbau, Spalte dokumentation ist immer leer 293 if ($dga != "" OR $allefelder) { 294 echo "\n<tr>" 295 ."\n\t<td class='li'>Dachgeschossausbau</td>" 296 ."\n\t<td class='fett'>"; 297 if ($showkey) {echo "<span class='key'>".$dga."</span> ";} 298 echo $dgav."</td>" 299 ."\n\t<td>" 300 ."\n\t\t<p class='erklk'>'Dachgeschossausbau' ist ein Hinweis auf den Ausbau bzw. die Ausbaufähigkeit des Dachgeschosses." 301 ."\n\t</td>" 302 ."\n</tr>"; 303 } 304 305 // Zustand 306 if ($zus != "" OR $allefelder) { 307 echo "\n<tr>" 308 ."\n\t<td class='li'>Zustand</td>" 309 ."\n\t<td class='fett'>"; 310 if ($showkey) {echo "<span class='key'>".$zus."</span> ";} 311 echo $zusv."</td>" 312 ."\n\t<td>" 313 ."\n\t\t<p class='erklk'>'Zustand' beschreibt die Beschaffenheit oder die Betriebsbereitschaft von 'Gebäude'. Diese Attributart wird nur dann optional geführt, wenn der Zustand des Gebäudes vom nutzungsfähigen Zustand abweicht.</p>" 314 ."\n\t\t<p class='erkli'>".$zusd."</p>" 315 ."\n\t</td>" 316 ."\n</tr>"; 317 } 318 319 // Weitere GebÀudefunktionen 320 // Suche Testfall: SELECT gml_id, gebaeudefunktion, weiteregebaeudefunktion FROM ax_gebaeude WHERE (NOT weiteregebaeudefunktion IS NULL) AND cardinality(weiteregebaeudefunktion) > 1 liMIT 10; 321 if ($wgf != "" OR $allefelder) { // ... ist ein Array 322 echo "\n<tr>" 323 ."\n\t<td class='li'>Weitere Gebäudefunktionen</td>" 324 ."\n\t<td>"; 325 if ($wgf != "") { // Kommagetrennte Liste aus Array 326 $sqlw="SELECT wert, beschreibung, dokumentation FROM ax_gebaeudefunktion WHERE wert IN ( $1 ) ORDER BY wert;"; 327 $v = array($wgf); 328 $resw = pg_prepare("", $sqlw); 329 $resw = pg_execute("", $v); 330 if (!$resw) { 331 echo "\n<p class='err'>Fehler bei Gebäude - weitere Funktion.</p>"; 332 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqlw."<br>$1 = Werteliste = '".$wgf."'</p>";} 333 } 334 $zw=0; 335 while($roww = pg_fetch_assoc($resw)) { // LOOP Funktion 336 if ($zw > 0) {echo "<br>";} 337 if ($showkey) {echo "<span class='key'>".$roww["wert"]."</span> ";} 338 echo "<span title='".$roww["dokumentation"]."'>".$roww["beschreibung"]."</span>"; 339 $zw++; 340 } 341 } 342 echo "</td>" 343 ."\n\t<td>" 344 ."\n\t\t<p class='erklk'>'Weitere Gebäudefunktion' ist die Funktion, die ein Gebäude neben der dominierenden Gebäudefunktion hat." 345 ."\n\t</td>" 346 ."\n</tr>"; 347 } 348 349 // Dachform, Spalte dokumentation ist immer leer 350 if ($daf != "" OR $allefelder) { 351 echo "\n<tr>" 352 ."\n\t<td class='li'>Dachform</td>" 353 ."\n\t<td class='fett'>"; 354 if ($showkey) {echo "<span class='key'>".$daf."</span> ";} 355 echo $dach."</td>" 356 ."\n\t<td>" 357 ."\n\t\t<p class='erklk'>'Dachform' beschreibt die charakteristische Form des Daches." 358 ."\n\t</td>" 359 ."\n</tr>"; 360 } 361 362 // Objekthöhe 363 if ($hho != "" OR $allefelder) { 364 echo "\n<tr>" 365 ."\n\t<td class='li'>Objekthöhe</td>" 366 ."\n\t<td class='fett'>".$hho."</td>" 367 ."\n\t<td>" 368 ."\n\t\t<p class='erklk'>'Objekthöhe' ist die Höhendifferenz in [m] zwischen dem höchsten Punkt der Dachkonstruktion und der festgelegten Geländeoberfläche des Gebäudes." 369 ."\n\t</td>" 370 ."\n</tr>"; 371 } 372 373 // GeschossflÀche 374 if ($gfl != "" OR $allefelder) { 375 echo "\n<tr>" 376 ."\n\t<td class='li'>Geschossfläche</td>" 377 ."\n\t<td class='fett'>"; 378 if ($gfl != "") {echo $gfl." m²";} 379 echo "</td>" 380 ."\n\t<td>" 381 ."\n\t\t<p class='erklk'>'Geschossfläche' ist die Gebäudegeschossfläche in [qm]." 382 ."\n\t</td>" 383 ."\n</tr>"; 384 } 385 386 // GrundflÀche 387 if ($grf != "" OR $allefelder) { 388 echo "\n<tr>" 389 ."\n\t<td class='li'>Grundfläche</td>" 390 ."\n\t<td class='fett'>"; 391 if ($grf != "") {echo $grf." m²";} 392 echo "\n\t<td>" 393 ."\n\t\t<p class='erklk'>'Grundfläche' ist die Gebäudegrundfläche in [qm]." 394 ."\n\t</td>" 395 ."\n</tr>"; 396 } 397 398 // Umbauter Raum 399 if ($ura != "" OR $allefelder) { 400 echo "\n<tr>" 401 ."\n\t<td class='li'>Umbauter Raum</td>" 402 ."\n\t<td class='fett'>".$ura."</td>" 403 ."\n\t<td>" 404 ."\n\t\t<p class='erklk'>'Umbauter Raum' ist der umbaute Raum [Kubikmeter] des Gebäudes." 405 ."\n\t</td>" 406 ."\n</tr>"; 407 } 408 409 // Baujahr 410 if ($bja != "" OR $allefelder) { 411 echo "\n<tr>" 412 ."\n\t<td class='li'>Baujahr</td>" 413 ."\n\t<td class='fett'>".$bja."</td>" 414 ."\n\t<td>" 415 ."\n\t\t<p class='erklk'>'Baujahr' ist das Jahr der Fertigstellung oder der baulichen Veränderung des Gebäudes." 416 ."\n\t</td>" 417 ."\n</tr>"; 418 } 419 420 // Dachart 421 if ($daa != "" OR $allefelder) { 422 echo "\n<tr>" 423 ."\n\t<td class='li'>Dachart</td>" 424 ."\n\t<td class='fett'>".$daa."</td>" 425 ."\n\t<td>" 426 ."\n\t\t<p class='erklk'>'Dachart' gibt die Art der Dacheindeckung (z.B. Reetdach) an." 427 ."\n\t</td>" 428 ."\n</tr>"; 429 } 430 431 // QualitÀtsangaben 432 /* if ($qag != "" OR $allefelder) { 433 echo "\n<tr>" 434 ."\n\t<td class='li'>Qualitätsangaben</td>" 435 ."\n\t<td class='fett'>".$qag."</td>" 436 ."\n\t<td>" 437 ."\n\t\t<p class='erklk'>Angaben zur Herkunft der Informationen (Erhebungsstelle). Die Information ist konform zu den Vorgaben aus ISO 19115 zu repräsentieren." 438 ."\n\t</td>" 439 ."\n</tr>"; 440 } */ 441 echo "\n</table>"; 442 } 443 if ($gebnr == 0) {echo "\n<p class='err'><br>Kein Gebäude gefunden<br> </p>";} 444 445 // ++ ToDo: -Verschnitt mit FS? -Ausgeben ax_georeferenziertegebaeudeadresse dazz, wenn gefÃŒllt. 517 echo "\n<tr>" 518 ."\n\t<td class='fla'>".$f1."</td>" 519 ."\n\t<td class='".$gstyle."'>".$f2."</td>"; 520 echo "\n\t<td>"; 521 if ($showkey) {echo "<span class='key'>(".$rowf["gemarkungsnummer"].")</span> ";} 522 echo $rowf["bezeichnung"]."</td>" 523 ."\n\t<td>".$flur."</td>" 524 ."\n\t<td class='fsnr'><span class='wichtig'>".$fskenn."</span></td>"; 525 526 echo "\n\t<td class='nwlink noprint'>" // Link FS 527 ."\n\t\t<a title='Flurstück' href='alkisfsnw.php?gkz=".$gkz."&gmlid=".$fgml; 528 if ($showkey) {echo "&showkey=j";} 529 echo "'>Flurstück <img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''></a>" 530 ."\n\t</td>" 531 ."\n</tr>"; 532 } 533 534 $gfla=number_format($gfla,2,",",".") . " m²"; 535 echo "\n<tr>\n\t<td class='fla sum'>".$gfla."</td>\n\t<td>Gebäudefläche</td>\n\t<td></td>\n</tr>"; 536 echo "\n</table>"; // Ende FlurstÃŒcke 446 537 ?> 447 538 … … 452 543 </div> 453 544 454 <?php footer($gmlid, $_SERVER['PHP_SELF']."?", ""); ?>545 <?php footer($gmlid, selbstverlinkung()."?", ""); ?> 455 546 456 547 </body>
Note: See TracChangeset
for help on using the changeset viewer.