source: trunk/info/info/alkis/alkisgebaeudenw.php @ 355

Revision 355, 12.1 KB checked in by frank.jaeger, 8 years ago (diff)

Grafiken in der Auskunft umgestellt von .ico auf .png

RevLine 
[313]1<?php
2/*      alkisgebaeudenw.php - Gebaeudenachweis
3        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
4
5        Version:
6        2011-11-22 Feld ax_gebaeude.description ist entfallen, neue Spalte Zustand
7        2011-11-30 Fehlerkorrektur Gebaeude mit mehreren Adressen nicht mehrfach
8        2013-04-08 deprecated "import_request_variables" ersetzt
9    2014-01-30 pg_free_result
[330]10        2014-09-04 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
11        2014-09-10 Bei Relationen den Timestamp abschneiden
[339]12        2014-09-30 Umbenennung SchlÃŒsseltabellen (Prefix), RÃŒckbau substring(gml_id)
[355]13        2015-12-09 Austausch .ico durch .png
[313]14*/
[132]15session_start();
[355]16$id="n";
[313]17$cntget = extract($_GET);
18require_once("alkis_conf_location.php");
19if ($auth == "mapbender") {require_once($mapbender);}
[132]20include("alkisfkt.php");
[313]21if ($id == "j") {$idanzeige=true;} else {$idanzeige=false;}
22$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
23if ($keys == "j") {$showkey=true;} else {$showkey=false;}
24?>
25<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
26<html>
27<head>
28        <meta name="author" content="b600352" >
29        <meta http-equiv="cache-control" content="no-cache">
30        <meta http-equiv="pragma" content="no-cache">
31        <meta http-equiv="expires" content="0">
32        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
33        <title>ALKIS Geb&auml;udenachweis</title>
34        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
35        <link rel="shortcut icon" type="image/x-icon" href="ico/Haus.ico">
36        <style type='text/css' media='print'>
37                .noprint {visibility: hidden;}
38        </style>
39</head>
40<body>
41<?php
42$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
43if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
44
45// Flurstueck
[330]46$sqlf ="SELECT f.name, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, f.zeitpunktderentstehung, g.gemarkungsnummer, g.bezeichnung
47FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer
[333]48WHERE f.gml_id= $1 AND f.endet IS NULL;";
[313]49$v=array($gmlid);
50$resf=pg_prepare("", $sqlf);
51$resf=pg_execute("", $v);
52if (!$resf) {
53        echo "\n<p class='err'>Fehler bei Flurst&uuml;cksdaten.</p>\n";
54        if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqlf."<br>$1 = gml_id = '".$gmlid."'</p>";}
55}
56
57if ($rowf = pg_fetch_array($resf)) {
58        $gemkname=htmlentities($rowf["bezeichnung"], ENT_QUOTES, "UTF-8");
59        $gmkgnr=$rowf["gemarkungsnummer"];
60        $flurnummer=$rowf["flurnummer"];
61        $flstnummer=$rowf["zaehler"];
62        $nenner=$rowf["nenner"];
63        if ($nenner > 0) { // BruchNr
64                $flstnummer.="/".$nenner;
65        }
66        $flstflaeche = $rowf["amtlicheflaeche"] ;
67} else {
68        echo "<p class='err'>Fehler! Kein Treffer fuer gml_id=".$gmlid."</p>";
69}
70
71// Balken
72echo "<p class='geb'>ALKIS Flurst&uuml;ck (Geb&auml;ude) ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>\n";
73
[355]74echo "\n<h2><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;ck (Geb&auml;ude)</h2>\n";
[313]75
76// Kennzeichen in Rahmen
77echo "\n<table class='outer'>\n<tr>\n<td>";
78        echo "\n\t<table class='kennzfs' title='Flurst&uuml;ckskennzeichen'>";
79    echo "\n\t<tr>";
80        echo "\n\t\t<td class='head'>Gmkg</td>";
81        echo "\n\t\t<td class='head'>Flur</td>";
82        echo "\n\t\t<td class='head'>Flurst-Nr.</td>";
83    echo "\n\t</tr>\n\t<tr>";
84        echo "\n\t\t<td title='Gemarkung'>";
85        if  ($showkey) {echo "<span class='key'>".$gmkgnr."</span><br>";}
86        echo $gemkname."&nbsp;</td>";
87        echo "\n\t\t<td title='Flurnummer'>".$flurnummer."</td>";
88        echo "\n\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>";
89    echo "\n\t</tr>";
90        echo "\n\t</table>";
91echo "\n</td>\n<td>";
92
93// Links zu anderen Nachweisen
94echo "\n\t<p class='nwlink noprint'>";
95        echo "\n\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
96        if ($idanzeige) {echo "&amp;id=j";}
97        if ($showkey)   {echo "&amp;showkey=j";}
[355]98        echo "&amp;eig=n' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck <img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''></a>";
[313]99echo "\n\t</p>";
[330]100if ($idanzeige) {linkgml($gkz, $gmlid, "Flurst&uuml;ck", "ax_flurstueck"); }
[313]101echo "\n\t</td>\n</tr>\n</table>";
102// Ende Seitenkopf
103
104echo "\n<p class='fsd'>Flurst&uuml;cksfl&auml;che: <b>".number_format($flstflaeche,0,",",".") . " m&#178;</b></p>";
105pg_free_result($resf);
106
[355]107echo "\n\n<h3><img src='ico/Haus.png' width='16' height='16' alt=''> Geb&auml;ude</h3>";
[313]108echo "\n<p>.. auf oder an dem Flurst&uuml;ck. Ermittelt durch Verschneidung der Geometrie.</p>";
109
110// G e b a e u d e
[333]111$sqlg ="SELECT g.gml_id, g.name, g.bauweise, g.gebaeudefunktion, h.bauweise_beschreibung, u.bezeichner, g.zustand, z.bezeichner AS bzustand, ";
[132]112
[330]113// GEB-Flaeche komplett auch die Fl. ausserhalb des FS
[313]114$sqlg.="round(area(g.wkb_geometry)::numeric,2) AS gebflae, ";
115
116// wie viel vom GEB liegt im FS?
117$sqlg.="round(st_area(ST_Intersection(g.wkb_geometry,f.wkb_geometry))::numeric,2) AS schnittflae, ";
118
119// liegt das GEB komplett im FS?
120$sqlg.="st_within(g.wkb_geometry,f.wkb_geometry) as drin ";
121
122// FS und GEB geometrisch verschneiden
123$sqlg.="FROM ax_flurstueck f, ax_gebaeude g ";
124
125// Entschluesseln
[339]126$sqlg.="LEFT JOIN v_geb_bauweise h ON g.bauweise=h.bauweise_id
127LEFT JOIN v_geb_funktion u ON g.gebaeudefunktion=u.wert
128LEFT JOIN v_geb_zustand z ON g.zustand=z.wert
[333]129WHERE f.gml_id= $1 AND f.endet IS NULL and g.endet IS NULL "; // ID des akt. FS
[313]130
[330]131// "within" -> nur Geb., die komplett im FS liegen
[333]132// "intersects" -> auch teil-ueberlappende Flst.
[313]133$sqlg.="AND st_intersects(g.wkb_geometry,f.wkb_geometry) = true ";
[333]134// RLP: keine Relationen zu NebengebÀuden. Auf Qualifizierung verzichten, sonst werden NebengebÀude nicht angezeigt
135//$sqlg.="AND (v.beziehungsart='zeigtAuf' OR v.beziehungsart='hat') ";
[313]136$sqlg.="ORDER BY schnittflae DESC;";
137
138$v=array($gmlid);
139$resg=pg_prepare("", $sqlg);
140$resg=pg_execute("", $v);
141if (!$resg) {
142        echo "\n<p class='err'>Keine Geb&auml;ude ermittelt.</p>\n";
143        if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqlg."<br>$1 = gml_id = '".$gmlid."'</p>";}
144}
145$gebnr=0;
[355]146$gebflsum=0;
[313]147echo "\n<hr>\n<table class='geb'>";
148        // T-Header
149        echo "\n<tr>\n";
150                echo "\n\t<td class='head' title='ggf. Geb&auml;udename'>Name</td>";
151                echo "\n\t<td class='head fla' title='Schnittsfl&auml;che'>Fl&auml;che</td>";
152                echo "\n\t<td class='head' title='Geb&auml;udefl&auml;che'>&nbsp;</td>";
153                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>";
[132]154                echo "\n\t<td class='head' title='Bauweise (Schl&uuml;ssel und Beschreibung)'>Bauweise</td>";
[313]155                echo "\n\t<td class='head' title='Zustand (Schl&uuml;ssel und Beschreibung)'>Zustand</td>";
156                echo "\n\t<td class='head nwlink' title='Lagebezeichnung mit Stra&szlig;e und Hausnummer'>Lage</td>";
[132]157                echo "\n\t<td class='head nwlink' title='Link zu den kompletten Hausdaten'>Haus</td>";
[313]158        echo "\n</tr>";
159        // T-Body
160        while($rowg = pg_fetch_array($resg)) {
161                $gebnr = $gebnr + 1;
162// ++ ToDo: Die Zeilen abwechselnd verschieden einfÀrben, Angrenzend anders einfÀrben
[132]163                $ggml=$rowg["gml_id"];
[313]164                $gebflsum = $gebflsum + $rowg["schnittflae"];
[355]165        #       $skey=$rowg["lage"]; // Strassenschluessel             
[313]166                $gnam=$rowg["name"];
[132]167                $gzus=$rowg["zustand"];
168                $gzustand=$rowg["bzustand"];
169
[313]170                echo "\n<tr>";
[132]171                        echo "\n\t<td>";
172                                if ($gnam != "") {echo "<span title='Geb&auml;udename'>".$gnam."</span><br>";}
173                        echo "\n\t</td>";
174
[313]175                        if ($rowg["drin"] == "t") { // 3 komplett enthalten
176                                echo "\n\t<td class='fla'>".$rowg["schnittflae"]." m&#178;</td>";
177                                echo "\n\t<td>&nbsp;</td>";
178                        } else {
179                if ($rowg["schnittflae"] == "0.00") { // angrenzend
180                                        echo "\n\t<td class='fla'>&nbsp;</td>";
181                                        echo "\n\t<td>angrenzend</td>";
182                                } else { // Teile enthalten
183                                        echo "\n\t<td class='fla'>".$rowg["schnittflae"]." m&#178;</td>";
184                                        echo "\n\t<td>(von ".$rowg["gebflae"]." m&#178;)</td>";
185                                }
186                        }
187                        echo "\n\t<td>";
188                        if ($showkey) {echo "<span class='key'>".$rowg["gebaeudefunktion"]."</span>&nbsp;";}
189                        echo $rowg["bezeichner"]."</td>";
190
191                        echo "\n\t<td>";
192                        if ($showkey) {echo "<span class='key'>".$rowg["bauweise"]."</span>&nbsp;";}
193                        echo $rowg["bauweise_beschreibung"]."&nbsp;</td>";
194
195                        echo "\n\t<td>";
196                        if ($showkey) {echo "<span class='key'>".$gzus."</span>&nbsp;";}
[132]197                        echo $gzustand."&nbsp;</td>";
198
[313]199                        echo "\n\t<td class='nwlink noprint'>";
[330]200                        // 0 bis N Lagebezeichnungen mit Haus- oder Pseudo-Nummer, alle in ein TD zu EINEM GebÀude
[313]201
[330]202                        // HAUPTgebÀude  Geb >zeigtAuf> lage (mehrere)
203                        $sqll ="SELECT 'm' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.hausnummer, '' AS laufendenummer ";
[339]204                        $sqll.="FROM ax_gebaeude g JOIN ax_lagebezeichnungmithausnummer l ON l.gml_id=ANY(g.zeigtauf) ";
[313]205                        $sqll.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage ";
[333]206                        $sqll.="WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL ";
[330]207
208                        // oder NEBENgebÀude  Geb >hat> Pseudo
209                        $sqll.="UNION SELECT 'p' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.pseudonummer AS hausnummer, l.laufendenummer ";
[339]210                        $sqll.="FROM ax_gebaeude g JOIN ax_lagebezeichnungmitpseudonummer l ON l.gml_id=g.hat ";
[313]211                        $sqll.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage ";
[333]212                        $sqll.="WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL "; // ID des Hauses"
[132]213               
[330]214                        $sqll.="ORDER BY bezeichnung, hausnummer;";
215
[313]216                        $v = array($ggml);
217                        $resl = pg_prepare("", $sqll);
218                        $resl = pg_execute("", $v);
219                        if (!$resl) {
220                                echo "\n<p class='err'>Fehler bei Lage mit HsNr.</p>\n";
221                                if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sqll."<br>$1 = gml_id = '".$gmlid."'</p>";}
[132]222                        }
223                        while($rowl = pg_fetch_array($resl)) { // LOOP: Lagezeilen
224                                $ltyp=$rowl["ltyp"]; // Lagezeilen-Typ
225                                $skey=$rowl["lage"]; // Str.-Schluessel
[330]226                                $snam=htmlentities($rowl["bezeichnung"], ENT_QUOTES, "UTF-8"); //-Name
[132]227                                $hsnr=$rowl["hausnummer"];
228                                $hlfd=$rowl["laufendenummer"];
[330]229                                $gmllag=$rowl["lgml"];
[132]230                                if ($ltyp == "p") {
231                                        $lagetitl="NebengebÀude - Pseudonummer";
232                                        $lagetxt="Nebengeb&auml;ude Nr. ".$hlfd;
233                                } else {
[330]234                                        $lagetitl="HauptgebÀude - Hausnummer";
[132]235                                        $lagetxt=$snam."&nbsp;".$hsnr;
236                                }
[355]237                                echo "\n\t\t<img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''>&nbsp;";
[132]238                                if ($showkey) {echo "<span class='key'>(".$skey.")</span>&nbsp;";}                     
239                                echo "\n\t\t<a title='".$lagetitl."' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag."&amp;ltyp=".$ltyp;
240                                        if ($idanzeige) {echo "&amp;id=j";}
241                                        if ($showkey)   {echo "&amp;showkey=j";}
242                                echo "'>".$lagetxt."</a>";
[330]243                                if ($idanzeige) {linkgml($gkz, $gmllag, "Lage", ""); }
[132]244                                echo "<br>";
[330]245                        } // Ende Loop Lage m.H.
[313]246            pg_free_result($resl);
[132]247                        echo "\n\t</td>";
248
249                        echo "\n\t<td class='nwlink noprint'>";
[313]250                                echo "\n\t\t<a title='Daten zum Geb&auml;ude-Objekt' href='alkishaus.php?gkz=".$gkz."&amp;gmlid=".$ggml;
[132]251                                if ($idanzeige) {echo "&amp;id=j";}
[313]252                                if ($showkey)   {echo "&amp;showkey=j";}
[355]253                                echo "'><img src='ico/Haus.png' width='16' height='16' alt=''></a>";
[132]254                        echo "\n\t</td>";
[313]255
256                echo "\n</tr>";
257        }
[330]258        // Footer
[313]259        if ($gebnr == 0) {
260                echo "\n</table>";
261                echo "<p class='err'><br>Keine Geb&auml;ude auf diesem Flurst&uuml;ck.<br>&nbsp;</p>";
262        } else {
263                echo "\n<tr>";
264                        echo "\n\t<td>Summe:</td>"; // 1
265                        echo "\n\t<td class='fla sum'>".number_format($gebflsum,0,",",".")."&nbsp;&nbsp;&nbsp;&nbsp;m&#178;</td>";
266                        echo "\n\t<td>&nbsp;</td>"; // 3
267                        echo "\n\t<td>&nbsp;</td>"; // 4
268                        echo "\n\t<td>&nbsp;</td>"; // 5
269                        echo "\n\t<td>&nbsp;</td>"; // 6
270                        echo "\n\t<td>&nbsp;</td>"; // 7
271                echo "\n</tr>";
272        echo "\n</table>";
273        $unbebaut = number_format(($flstflaeche - $gebflsum),0,",",".") . " m&#178;";
274        echo "\n<p>Flurst&uuml;cksfl&auml;che abz&uuml;glich Geb&auml;udefl&auml;che: <b>".$unbebaut."</b></p><br>";
275}
276pg_free_result($resg);
[198]277?>
[313]278
279<form action=''>
280        <div class='buttonbereich noprint'>
[198]281        <hr>
[355]282                <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp;
283                <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a>
[313]284        </div>
285</form>
286
287<?php footer($gmlid, $_SERVER['PHP_SELF']."?", ""); ?>
288
289</body>
290</html>
Note: See TracBrowser for help on using the repository browser.