source: trunk/var/www/info/alkis/alkisgebaeudenw.php @ 76

Revision 76, 11.5 KB checked in by frank.jaeger, 13 years ago (diff)

Feinschliff an css und Tabellen-Formatierung

RevLine 
[34]1<?php
[41]2/*      alkisgebaeudenw.php - Gebaeudenachweis
[34]3        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
[45]4
[34]5        Version:
[49]6        15.09.2010  Function "buchungsart" durch JOIN ersetzt
[60]7        21.09.2010  vergessenen Parameter &style und Kommentar entfernt
8        01.10.2010  Geschoss-Anzahl
9        14.12.2010  Pfad zur Conf
[75]10        17.12.2010  Astrid Emde: Prepared Statements (pg_query -> pg_prepare + pg_execute)
11        25.01.2011  F.J.: Strassennamen zur Hausnummer
[76]12                                        https://trac.wheregroup.com/PostNAS/ticket/6
13        26.01.2011  Space in leere td
[75]14        ToDo: lfd.Nr. der NebengebÀude alternativ zur Hausnummer anzeigen.
15                Dazu aber Join auf ax_lagebezeichnungmitpseudonummer notwendig.
[34]16*/
17ini_set('error_reporting', 'E_ALL & ~ E_NOTICE');
18session_start();
[60]19$gkz=urldecode($_REQUEST["gkz"]);
20require_once("alkis_conf_location.php");
[49]21if ($auth == "mapbender") {
22        // Bindung an Mapbender-Authentifizierung
23        require_once($mapbender);
24} include("alkisfkt.php");
[34]25?>
26<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
27<html>
28<head>
29        <meta name="author" content="F. Jaeger krz" >
[49]30        <meta http-equiv="cache-control" content="no-cache">
[34]31        <meta http-equiv="pragma" content="no-cache">
32        <meta http-equiv="expires" content="0">
33        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
34        <title>ALKIS Geb&auml;udenachweis</title>
35        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
[41]36        <link rel="shortcut icon" type="image/x-icon" href="ico/Haus.ico">
37        <style type='text/css' media='print'>
[34]38                .noprint {visibility: hidden;}
[60]39        </style>
[34]40</head>
41<body>
42<?php
43$gmlid=urldecode($_REQUEST["gmlid"]);
44$id = isset($_GET["id"]) ? $_GET["id"] : "n";
[43]45if ($id == "j") {
46        $idanzeige=true;
47} else {
48        $idanzeige=false;
49}
50$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
51if ($keys == "j") {
52        $showkey=true;
53} else {
54        $showkey=false;
55}
56$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
[34]57if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
[60]58
[41]59// Flurstueck
60$sqlf ="SELECT f.name, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, f.zeitpunktderentstehung, ";
61$sqlf.="g.gemarkungsnummer, g.bezeichnung ";
62$sqlf.="FROM ax_flurstueck f ";
63$sqlf.="JOIN ax_gemarkung  g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
64$sqlf.="WHERE f.gml_id= $1;";
[61]65
66$v = array($gmlid);
67$resf = pg_prepare("", $sqlf);
68$resf = pg_execute("", $v);
69
70if (!$resf) {
[45]71        echo "\n<p class='err'>Fehler bei Flurst&uuml;cksdaten\n<br>".$sqlf."</p>\n";
72}
73
74if ($rowf = pg_fetch_array($resf)) {
[41]75        $gemkname=htmlentities($rowf["bezeichnung"], ENT_QUOTES, "UTF-8");
76        $gmkgnr=$rowf["gemarkungsnummer"];
77        $flurnummer=$rowf["flurnummer"];
78        $flstnummer=$rowf["zaehler"];
79        $nenner=$rowf["nenner"];
80        if ($nenner > 0) { // BruchNr
[45]81                $flstnummer.="/".$nenner;
82        }
83        $flstflaeche = $rowf["amtlicheflaeche"] ;
[41]84} else {
85        echo "<p class='err'>Fehler! Kein Treffer fuer gml_id=".$gmlid."</p>";
86}
[34]87
[41]88// Balken echo "<p class='geb'>ALKIS Flurst&uuml;ck (Geb&auml;ude) ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>\n";
89
90echo "\n<h2><img src='ico/Flurstueck.ico' width='16' height='16' alt=''> Flurst&uuml;ck (Geb&auml;ude)</h2>\n";
91
92// Kennzeichen in Rahmen
93echo "\n<table class='outer'>\n<tr>\n<td>";
94        echo "\n\t<table class='kennzfs' title='Flurst&uuml;ckskennzeichen'>";
[34]95                echo "\n\t<tr>";
[43]96                        echo "\n\t\t<td class='head'>Gmkg</td>";
[41]97                        echo "\n\t\t<td class='head'>Flur</td>";
[43]98                        echo "\n\t\t<td class='head'>Flurst-Nr.</td>";
99                echo "\n\t</tr>";
100                echo "\n\t<tr>";
[41]101                        echo "\n\t\t<td title='Gemarkung'>";
102                        if  ($shaowkey) {
[43]103                                echo "<span class='key'>".$gmkgnr."</span><br>";
104                        }
105                        echo $gemkname."</td>";
106                        echo "\n\t\t<td title='Flurnummer'>".$flurnummer."</td>";
107                        echo "\n\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>";
[41]108                echo "\n\t</tr>";
109        echo "\n\t</table>";
110echo "\n</td>\n<td>";
111
112// Links zu anderen Nachweisen
113echo "\n\t<p class='nwlink noprint'>";
114        echo "\n\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
115        if ($idanzeige) {echo "&amp;id=j";}
116        if ($showkey)   {echo "&amp;showkey=j";}         echo "&amp;eig=n' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck <img src='ico/Flurstueck_Link.ico' width='16' height='16' alt=''></a>";
[43]117echo "\n\t</p>";
118
[41]119if ($idanzeige) {linkgml($gkz, $gmlid, "Flurst&uuml;ck"); }
120echo "\n\t</td>\n</tr>\n</table>";
121// Ende Seitenkopf
[43]122
[34]123echo "\n<p class='fsd'>Flurst&uuml;cksfl&auml;che: <b>".number_format($flstflaeche,0,",",".") . " m&#178;</b></p>";
124
[41]125echo "\n\n<h3><img src='ico/Haus.ico' width='16' height='16' alt=''> Geb&auml;ude</h3>";
126echo "\n<p>.. auf oder an dem Flurst&uuml;ck. Ermittelt durch Verschneidung der Geometrie.</p>";
127
128// G e b a e u d e
129$sqlg ="SELECT g.gml_id, g.name, g.description, g.bauweise, g.gebaeudefunktion, g.anzahlderoberirdischengeschosse AS aog, ";
130$sqlg.="h.bauweise_beschreibung, u.bezeichner, v.beziehungsart, v.beziehung_zu, s.lage, s.bezeichnung, l.hausnummer, ";
131
[60]132// Gebaeudeflaeche komplett auch ausserhalb des FS
[75]133$sqlg.="round(area(g.wkb_geometry)::numeric,2) AS gebflae, ";
[41]134
135// wie viel vom GEB liegt im FS?
136$sqlg.="round(st_area(ST_Intersection(g.wkb_geometry,f.wkb_geometry))::numeric,2) AS schnittflae, ";
137
138// liegt das GEB komplett im FS?
139$sqlg.="st_within(g.wkb_geometry,f.wkb_geometry) as drin ";
140
141// FS und GEB geometrisch verschneiden
142$sqlg.="FROM ax_flurstueck f, ax_gebaeude g ";
143
144// Entschluesseln
145$sqlg.="LEFT JOIN ax_gebaeude_bauweise h ON g.bauweise = h.bauweise_id ";
146$sqlg.="LEFT JOIN ax_gebaeude_funktion u ON g.gebaeudefunktion = u.wert ";
147
[45]148// Beziehungen verfolgen (holt die Hausnummer Hauptgeb.)
149$sqlg.="LEFT JOIN alkis_beziehungen v ON g.gml_id=v.beziehung_von ";
[41]150$sqlg.="LEFT JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu=l.gml_id ";
[75]151// Straßen-Name
[41]152$sqlg.="LEFT JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde ";
153$sqlg.="AND to_char(l.lage, 'FM00000') = lpad(s.lage,5,'0') ";
[75]154
155// Alternativ zur Hauptgebaeude-Hausnummer auch die Nebengebaeude-Pseudo-Nummern suchen?
156// $sqlg.="LEFT JOIN ax_lagebezeichnungmitpseudonummer p ON ... ";
[41]157// oder in Loop: Wenn HsNr leer ist, eine kurze Abfrage auf NebengebÀude-Nr.
[75]158
159// ID des aktuellen FS
160$sqlg.="WHERE f.gml_id= $1 ";
[41]161
162// ALT: "within" liefert nur Gebaeude, die komplett im Flurstueck liegen
[61]163//$sqlg.="AND within(g.wkb_geometry,f.wkb_geometry) = true ";
[41]164
165// "intersects" liefert ueberlappende Flaechen
166$sqlg.="AND st_intersects(g.wkb_geometry,f.wkb_geometry) = true ";
167
168// RLP: keine Relationen zu Nebengebaeuden:
169// auf Qualifizierung verzichten, sonst werden NebengebÀude nicht angezeigt
170        //$sqlg.="AND (v.beziehungsart='zeigtAuf' OR v.beziehungsart='hat') ";
171
172$sqlg.="ORDER BY schnittflae DESC;";
173 
174// ax_gebaeude  (zeigtAuf) ax_LagebezeichnungMitHausnummer    (HauptgebÀude)
175// ax_gebaeude  (hat)      ax_LagebezeichnungMitPseudonummer  (NebengebÀude)
[75]176
[41]177$v = array($gmlid);
[61]178$resg = pg_prepare("", $sqlg);
179$resg = pg_execute("", $v);
180
181if (!$resg) {
182        echo "\n<p class='err'>Keine Geb&auml;ude ermittelt.<br>\nSQL=<br></p>\n";
183        echo "\n<p class='err'>".$sqlg."</p>\n";
[41]184}
185
186$gebnr=0;
187echo "\n<hr>\n<table class='geb'>";
188        // Header
189        echo "\n<tr>\n";
190                //echo "\n\t<td class='head' title='laufende Nummer'>Lfd. Nr.</td>";
191                echo "\n\t<td class='head' title='ggf. Hausnummer und/oder Geb&auml;udename'>Nr/Name</td>";
192                echo "\n\t<td class='head fla' title='Schnittsfl&auml;che'>Fl&auml;che</td>";
[60]193                echo "\n\t<td class='head' title='Geb&auml;udefl&auml;che'>&nbsp;</td>";
194                echo "\n\t<td class='head' title='Anzahl oberirdischer Geschosse'>Gesch.</td>";
195                echo "\n\t<td class='head' title='Geb&auml;udefunktion ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des Geb&auml;udes'>Funktion</td>";
[41]196                echo "\n\t<td class='head' title='Bauweise (Schl&uuml;ssel und Beschreibung)'>Bauweise</td>";
[60]197                echo "\n\t<td class='head nwlink' title='Typ von .. und Link zur Lagebezeichnung'>Lage</td>";
[41]198        echo "\n</tr>";
[60]199        // Body
200        while($rowg = pg_fetch_array($resg)) {
[41]201                $gebnr = $gebnr + 1;
202                $gebflsum = $gebflsum + $rowg["schnittflae"];
203                $skey=$rowg["lage"]; // Strassenschluessel             
[34]204                $gnam=$rowg["name"];
[64]205                echo "\n<tr>";
[76]206                        if ($skey.$gnam != "") {        // Hausnummer und Strassenname oder Gebaeudename
207                                echo "\n\t<td title='Hauptgeb&auml;ude'>";
[41]208                                        if ($showkey) {
[76]209                                                echo "<span class='key'>(".$skey.")</span>&nbsp;";
210                                        }
211                                        echo htmlentities($rowg["bezeichnung"], ENT_QUOTES, "UTF-8")."&nbsp;"; // Str.-Name
212                                        echo $rowg["hausnummer"]."&nbsp;".$gnam;
213                                        if ($idanzeige) {
214                                                linkgml($gkz, $rowg["gml_id"], "Geb&auml;ude");
215                                        }
216                                echo "</td>";
217                        } else {
218                                echo "\n\t<td title='Nebengeb&auml;ude'>";
219                                        echo "(Nebengeb&auml;ude)"; // +++ nur vorlaeufiger Platzhalter! Hier kommt lfd-Nr hin.
220                                        // +++ SQL-Abfrage auf ax_LagebezeichnungMitPseudonummer
221                                echo "</td>";           
222                        }
223
224                        if ($rowg["drin"] == "t") { // 3 komplett enthalten
225                                echo "\n\t<td class='fla'>".$rowg["schnittflae"]." m&#178;</td>";
[60]226                                echo "\n\t<td>&nbsp;</td>";
[41]227                        } else {
228                if ($rowg["schnittflae"] == "0.00") { // angrenzend
229                                        echo "\n\t<td class='fla'>&nbsp;</td>";
230                                        echo "\n\t<td>angrenzend</td>";
231                                } else { // Teile enthalten
232                                        echo "\n\t<td class='fla'>".$rowg["schnittflae"]." m&#178;</td>";
233                                        echo "\n\t<td>(von ".$rowg["gebflae"]." m&#178;)</td>";
234                                }
235                        }
236
237                        echo "\n\t<td>".$rowg["aog"]."&nbsp;</td>";
238
[60]239                        echo "\n\t<td>";
[76]240                        if ($showkey) {
[60]241                                echo "<span class='key'>".$rowg["gebaeudefunktion"]."</span>&nbsp;";
[43]242                        }
243                        echo $rowg["bezeichner"]."</td>";
244
245                        echo "\n\t<td>";
[60]246                        if ($showkey) {
247                                echo "<span class='key'>".$rowg["bauweise"]."</span>&nbsp;";
[43]248                        }
249                        echo $rowg["bauweise_beschreibung"]."&nbsp;</td>";
250
251                        echo "\n\t<td class='nwlink noprint'>";
[76]252                        $bezieh=$rowg["beziehungsart"];
[60]253                        if (!$bezieh == "" ) {
[41]254                                $gmllag=$rowg["beziehung_zu"];
[64]255                                switch ($bezieh) {
[41]256                                        case "hat":                     // *P*seudonummer
[60]257                                                echo "\n\t\t<a title='Lagebezeichnung' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag;
[41]258                                                if ($idanzeige) {echo "&amp;id=j";}
[60]259                                                echo "&amp;ltyp=p'>lfd-Nr</a>";
260                                                break;
261                                        case "zeigtAuf":        // *M*it HausNr
262                                                echo "\n\t\t<a title='Lagebezeichnung' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag;
[41]263                                                if ($idanzeige) {echo "&amp;id=j";}
264                                                echo "&amp;ltyp=m'>Haus-Nr</a>";
[60]265                                                break;
266                                        default:
267                                                echo "<p>unbekannte Beziehungsart ".$bezieh."</p>";
[41]268                                                break;
269                                }
270                        }
271                        echo "\n\t</td>";
272                echo "\n</tr>";
[64]273        } // Footer
[41]274        if ($gebnr == 0) {
275                echo "\n</table>";
276                echo "<p class='err'><br>Keine Geb&auml;ude auf diesem Flurst&uuml;ck.<br>&nbsp;</p>";
277        } else {
278                echo "\n<tr>";
279                        echo "\n\t<td>Summe:</td>"; // 1
280                        echo "\n\t<td class='fla sum'>".number_format($gebflsum,0,",",".")."&nbsp;&nbsp;&nbsp;&nbsp;m&#178;</td>";
281                        echo "\n\t<td>&nbsp;</td>"; // 3
282                        echo "\n\t<td>&nbsp;</td>"; // 4
283                        echo "\n\t<td>&nbsp;</td>"; // 5
284                        echo "\n\t<td>&nbsp;</td>"; // 6
285                        echo "\n\t<td>&nbsp;</td>"; // 7
286                echo "\n</tr>";
287        echo "\n</table>";
[76]288        $unbebaut = number_format(($flstflaeche - $gebflsum),0,",",".") . " m&#178;";         echo "\n<p>Flurst&uuml;cksfl&auml;che abz&uuml;glich Geb&auml;udefl&auml;che: <b>".$unbebaut."</b></p><br>";
289}
[41]290
291?>
292<form action=''>
[76]293        <div class='buttonbereich noprint'>
[41]294        <hr>
295                <input type='button' name='back'  value='&lt;&lt;' title='Zur&uuml;ck'  onClick='javascript:history.back()'>&nbsp;
[34]296                <input type='button' name='print' value='Druck' title='Seite Drucken' onClick='window.print()'>&nbsp;
297                <input type='button' name='close' value='X' title='Fenster schlie&szlig;en' onClick='window.close()'>
298        </div>
299</form>
300
301<?php footer($gkz, $gmlid, $idumschalter, $idanzeige, $_SERVER['PHP_SELF']."?", $hilfeurl, "", $showkey); ?>
302
303</body>
[41]304</html>
Note: See TracBrowser for help on using the repository browser.