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

Revision 41, 10.2 KB checked in by frank.jaeger, 14 years ago (diff)
Line 
1<?php
2/*      alkisgebaeudenw.php - Gebaeudenachweis
3        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
4        Parameter:      &gkz= &gmlid= &eig=j/n
5        Version:
6        27.08.2010 von WhereGroup uebernommen
7        31.08.2010 Link zum FS-NW, Lage
8        01.09.2010 RLP-Daten: keine Relation Nebengebaeude->LagePseudonummer
9                                        Spalte lfd.-Nr raus wegen Verwechslungsgefhr mit lfd-Nr.-Nebengebaeuude
10        02.09.2010  Mit Icons
11*/
12ini_set('error_reporting', 'E_ALL & ~ E_NOTICE');
13session_start();
14// Bindung an Mapbender-Authentifizierung
15require_once("/data/mapwww/http/php/mb_validateSession.php");
16require_once("/data/conf/alkis_www_conf.php");
17#require_once(dirname(__FILE__)."/../../../../php/mb_validateSession.php");
18#require_once(dirname(__FILE__)."/../../../../conf/alkis_conf.php"); include("alkisfkt.php");
19?>
20<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
21<html>
22<head>
23        <meta name="author" content="Frank Jaeger" >
24        <meta http-equiv="cache-control" content="no-cache">
25        <meta http-equiv="pragma" content="no-cache">
26        <meta http-equiv="expires" content="0">
27        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
28        <title>ALKIS Geb&auml;udenachweis</title>
29        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
30        <link rel="shortcut icon" type="image/x-icon" href="ico/Haus.ico">
31        <style type='text/css' media='print'>
32                .noprint { visibility: hidden;}
33        </style>
34</head>
35<body>
36<?php
37$gkz=urldecode($_REQUEST["gkz"]);
38$gmlid=urldecode($_REQUEST["gmlid"]);
39$id = isset($_GET["id"]) ? $_GET["id"] : "n";
40$idanzeige=false;
41if ($id == "j") {$idanzeige=true;}
42$style=isset($_GET["style"]) ? $_GET["style"] : "kompakt";
43$dbname = 'alkis05' . $gkz;
44$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
45
46// Flurstueck
47$sqlf ="SELECT f.name, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, f.zeitpunktderentstehung, ";
48$sqlf.="g.gemarkungsnummer, g.bezeichnung ";
49$sqlf.="FROM ax_flurstueck f ";
50$sqlf.="JOIN ax_gemarkung  g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
51$sqlf.="WHERE f.gml_id='".$gmlid."';";
52$resf=pg_query($con,$sqlf);
53if (!$resf) echo "\n<p class='err'>Fehler bei Flurst&uuml;cksdaten\n<br>".$sqlf."</p>\n";
54if ($rowf = pg_fetch_array($resf)) {
55        $gemkname=htmlentities($rowf["bezeichnung"], ENT_QUOTES, "UTF-8");
56        $gmkgnr=$rowf["gemarkungsnummer"];
57        $flurnummer=$rowf["flurnummer"];
58        $flstnummer=$rowf["zaehler"];
59        $nenner=$rowf["nenner"];
60        if ($nenner > 0) $flstnummer.="/".$nenner; // BruchNr
61        $flstflaeche = $rowf["amtlicheflaeche"] ;
62} else {
63        echo "<p class='err'>Fehler! Kein Treffer fuer gml_id=".$gmlid."</p>";
64}
65
66// Balken echo "<p class='geb'>ALKIS Flurst&uuml;ck (Geb&auml;ude) ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>\n";
67
68echo "\n<h2><img src='ico/Flurstueck.ico' width='16' height='16' alt=''> Flurst&uuml;ck (Geb&auml;ude)</h2>\n";
69
70// Kennzeichen in Rahmen
71echo "\n<table class='outer'>\n<tr>\n<td>";
72        echo "\n\t<table class='kennz' title='Flurst&uuml;ckskennzeichen'>";
73                echo "\n\t<tr>";
74                        echo "\n\t\t<td class='head'>Gmkg</td>\n\t\t<td class='head'>Flur</td>\n\t\t<td class='head'>Flurst-Nr.</td>";
75                echo "\n\t</tr>";
76                echo "\n\t<tr>";
77                        echo "\n\t\t<td title='Gemarkung'><span class='key'>".$gmkgnr."</span><br>".$gemkname."</td>";
78                        echo "\n\t\t<td title='Flurnummer'>".$flurnummer."</td>";
79                        echo "\n\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>";
80                echo "\n\t</tr>";
81        echo "\n\t</table>";
82echo "\n</td>\n<td>";
83
84// Links zu anderen Nachweisen
85echo "\n\t<p class='nwlink noprint'>";
86        echo "\n\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
87        if ($idanzeige) {echo "&amp;id=j";}         echo "&amp;eig=n' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck <img src='ico/Flurstueck_Link.ico' width='16' height='16' alt=''></a>";
88echo "\n\t</p>";
89
90if ($idanzeige) { linkgml($gkz, $gmlid, "Flurst&uuml;ck"); }
91echo "\n\t</td>\n</tr>\n</table>";
92// Ende Seitenkopf
93
94echo "\n<p class='fsd'>Flurst&uuml;cksfl&auml;che: <b>".number_format($flstflaeche,0,",",".") . " m&#178;</b></p>";
95
96echo "\n\n<h3><img src='ico/Haus.ico' width='16' height='16' alt=''> Geb&auml;ude</h3>";
97echo "\n<p>.. auf oder an dem Flurst&uuml;ck. Ermittelt durch Verschneidung der Geometrie.</p>";
98
99// G e b a e u d e
100$sqlg ="SELECT g.gml_id, g.name, g.description, g.bauweise, g.gebaeudefunktion, ";
101$sqlg.=" h.bauweise_beschreibung, u.bezeichner, v.beziehungsart, v.beziehung_zu, l.hausnummer, ";
102
103// Gebaeudeflaeche komplett auch ausserhalb des FS
104$sqlg.="round(area(g.wkb_geometry)::numeric,2) AS gebflae, ";
105
106// wie viel vom GEB liegt im FS?
107$sqlg.="round(st_area(ST_Intersection(g.wkb_geometry,f.wkb_geometry))::numeric,2) AS schnittflae, ";
108
109// liegt das GEB komplett im FS?
110$sqlg.="st_within(g.wkb_geometry,f.wkb_geometry) as drin ";
111
112// FS und GEB geometrisch verschneiden
113$sqlg.="FROM ax_flurstueck f, ax_gebaeude g ";
114
115// Entschluesseln
116$sqlg.="LEFT JOIN ax_bauweise_gebaeude h ON g.bauweise = h.bauweise_id ";
117$sqlg.="LEFT JOIN ax_gebaeude_gebaeudefunktion u ON g.gebaeudefunktion = u.wert ";
118
119// Beziehungen verfolgen (holt die Hausnummer)
120$sqlg.="LEFT JOIN alkis_beziehungen v ON g.gml_id=v.beziehung_von ";
121$sqlg.="LEFT JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu=l.gml_id ";
122
123// auch die Nebengebaeude-Pseudo-Nummern suchen?
124// $sqlg.="LEFT JOIN ax_lagebezeichnungmitpseudonummer p ON v.beziehung_zu=p.gml_id ";
125
126// ID des aktuellen FS
127$sqlg.="WHERE f.gml_id='".$gmlid."' ";
128
129// ALT: "within" liefert nur Gebaeude, die komplett im Flurstueck liegen
130//$sqlg.="AND within(g.wkb_geometry,f.wkb_geometry) = true ";
131
132// "intersects" liefert ueberlappende Flaechen
133$sqlg.="AND st_intersects(g.wkb_geometry,f.wkb_geometry) = true ";
134
135// RLP: keine Relationen zu Nebengebaeuden:
136// auf Qualifizierung verzichten, sonst werden NebengebÀude nicht angezeigt
137        //$sqlg.="AND (v.beziehungsart='zeigtAuf' OR v.beziehungsart='hat') ";
138
139$sqlg.="ORDER BY schnittflae DESC;";
140
141// Problem: HsNr ist linksbuedig Char:
142//$sqlg.="ORDER BY hausnummer, flaeche DESC;"; 
143
144// ax_gebaeude  (zeigtAuf) ax_LagebezeichnungMitHausnummer    (HauptgebÀude)
145// ax_gebaeude  (hat)      ax_LagebezeichnungMitPseudonummer  (NebengebÀude)
146$resg=pg_query($con,$sqlg);
147if (!$resg) {
148        echo "\n<p class='err'>Keine Geb&auml;ude ermittelt.<br>\nSQL=<br></p>\n";
149        echo "\n<p class='err'>".$sqlg."</p>\n";
150}
151
152$gebnr=0;
153echo "\n<hr>\n<table class='geb'>";
154        // Header
155        echo "\n<tr>\n";
156                //echo "\n\t<td class='head' title='laufende Nummer'>Lfd. Nr.</td>"; // 1
157                echo "\n\t<td class='head' title='ggf. Hausnummer und/oder Geb&auml;udename'>Nr/Name</td>"; // 2
158                echo "\n\t<td class='head fla' title='Schnittsfl&auml;che'>Fl&auml;che</td>"; // 3
159                echo "\n\t<td class='head' title='Geb&auml;udefl&auml;che'>&nbsp;</td>";
160                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>";
161                echo "\n\t<td class='head' title='Bauweise (Schl&uuml;ssel und Beschreibung)'>Bauweise</td>"; // 5
162                echo "\n\t<td class='head nwlink' title='Typ von .. und Link zur Lagebezeichnung'>Lage</td>"; // 6
163        echo "\n</tr>";
164        // Body
165        while($rowg = pg_fetch_array($resg)) {
166                $gebnr = $gebnr + 1;
167                $gebflsum = $gebflsum + $rowg["schnittflae"];           
168                echo "\n<tr>";
169                        //echo "\n\t<td>".$gebnr."</td>"; // 1
170                        echo "\n\t<td>".$rowg["hausnummer"]."&nbsp;".$rowg["name"];
171                                if ($idanzeige) {
172                                        linkgml($gkz, $rowg["gml_id"], "Geb&auml;ude");
173                                }       
174                        echo "</td>"; // 2
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><span class='key'>".$rowg["gebaeudefunktion"]."</span>&nbsp;".$rowg["bezeichner"]."</td>"; // 4
188                        echo "\n\t<td><span class='key'>".$rowg["bauweise"]."</span>&nbsp;".$rowg["bauweise_beschreibung"]."</td>"; // 5
189                        echo "\n\t<td class='nwlink noprint'>";
190                        $bezieh=$rowg["beziehungsart"];         
191                        if (!$bezieh == "" ) {
192                                switch ($bezieh) {
193                                        case "hat":                     // *P*seudonummer
194                                                echo "\n\t\t<a title='Lagebezeichnung' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$rowg["beziehung_zu"]."&amp;ltyp=p'>lfd-Nr</a>";
195                                                break;
196                                        case "zeigtAuf":        // *M*it HausNr
197                                                echo "\n\t\t<a title='Lagebezeichnung' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$rowg["beziehung_zu"]."&amp;ltyp=m'>Haus-Nr</a>";
198                                                break;
199                                        default:
200                                                echo "<p>unbekannte Beziehungsart ".$bezieh."</p>";
201                                                break;
202                                }
203                        }                       
204                        echo "\n\t</td>";
205                echo "\n</tr>";
206        } // Footer
207        if ($gebnr == 0) {
208                echo "\n</table>";
209                echo "<p class='err'><br>Keine Geb&auml;ude auf diesem Flurst&uuml;ck.<br>&nbsp;</p>";
210        } else {
211                echo "\n<tr>";
212                        echo "\n\t<td>Summe:</td>"; // 1
213                        echo "\n\t<td class='fla sum'>".number_format($gebflsum,0,",",".")."&nbsp;&nbsp;&nbsp;&nbsp;m&#178;</td>";
214                        echo "\n\t<td>&nbsp;</td>"; // 3
215                        echo "\n\t<td>&nbsp;</td>"; // 4
216                        echo "\n\t<td>&nbsp;</td>"; // 5
217                        echo "\n\t<td>&nbsp;</td>"; // 6
218                echo "\n</tr>";
219        echo "\n</table>";
220        $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>";
221}
222
223// Diese Berechnung beruht auf der Annahme, dass alle gefundenen Gebaeude vollstaendig innerhalb
224// des Flurstuecks liegen. Fehler bei GebÀuden auf der Grenze.
225
226//echo "\n<p class='err'>".$sqlg."</p>\n";
227
228?>
229<form action=''>
230        <div class='buttonbereich noprint'>
231        <hr>
232                <input type='button' name='back'  value='&lt;&lt;' title='Zur&uuml;ck'  onClick='javascript:history.back()'>&nbsp;
233                <input type='button' name='print' value='Druck' title='Seite Drucken' onClick='window.print()'>&nbsp;
234                <input type='button' name='close' value='X' title='Fenster schlie&szlig;en' onClick='window.close()'>
235        </div>
236</form>
237
238<?php footer($gkz, $gmlid, $idanzeige, $self, $hilfeurl, ""); ?>
239
240</body>
241</html>
Note: See TracBrowser for help on using the repository browser.