source: trunk/info/info/alkisn/alkisgebaeudenw.php @ 377

Revision 377, 11.7 KB checked in by frank.jaeger, 7 years ago (diff)

ALKIS-Auskunft: in info/alkis/ den Stand 372 wieder hergestellt (Versionen aus "alkisn" versehendlich dort hoch geladen).
In info/alkisn/ Nachbesserungen an Gebäude-Name und Nutzungsart.

Line 
1<?php
2/*      alkisgebaeudenw.php - Gebaeudenachweis
3        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
4
5        Version:
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*/
10session_start();
11$id="n";
12$cntget = extract($_GET);
13require_once("alkis_conf_location.php");
14if ($auth == "mapbender") {require_once($mapbender);}
15include("alkisfkt.php");
16$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
17if ($keys == "j") {$showkey=true;} else {$showkey=false;}
18?>
19<!doctype html>
20<html lang="de">
21<head>
22        <meta charset="utf-8">
23        <title>ALKIS Geb&auml;udenachweis</title>
24        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
25        <link rel="shortcut icon" type="image/x-icon" href="ico/Haus.ico">
26        <style type='text/css' media='print'>
27                .noprint {visibility: hidden;}
28        </style>
29</head>
30<body>
31<?php
32$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisgebaeudenw.php'");
33if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
34
35// Flurstueck
36$sqlf ="SELECT f.name, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, f.zeitpunktderentstehung, g.gemarkungsnummer, g.bezeichnung
37FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer
38WHERE f.gml_id= $1 AND f.endet IS NULL;";
39$v=array($gmlid);
40$resf=pg_prepare("", $sqlf);
41$resf=pg_execute("", $v);
42if (!$resf) {
43        echo "\n<p class='err'>Fehler bei Flurst&uuml;cksdaten.</p>\n";
44        if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqlf."<br>$1 = gml_id = '".$gmlid."'</p>";}
45}
46
47if ($rowf = pg_fetch_array($resf)) {
48        $gemkname=htmlentities($rowf["bezeichnung"], ENT_QUOTES, "UTF-8");
49        $gmkgnr=$rowf["gemarkungsnummer"];
50        $flurnummer=$rowf["flurnummer"];
51        $flstnummer=$rowf["zaehler"];
52        $nenner=$rowf["nenner"];
53        if ($nenner > 0) { // BruchNr
54                $flstnummer.="/".$nenner;
55        }
56        $flstflaeche = $rowf["amtlicheflaeche"] ;
57} else {
58        echo "<p class='err'>Fehler! Kein Treffer fuer gml_id=".$gmlid."</p>";
59}
60
61// Balken
62echo "<p class='geb'>ALKIS Flurst&uuml;ck (Geb&auml;ude) ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>\n";
63
64echo "\n<h2><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;ck (Geb&auml;ude)</h2>\n";
65
66// Kennzeichen in Rahmen
67echo "\n<table class='outer'>\n<tr>\n<td>"
68        ."\n\t<table class='kennzfs' title='Flurst&uuml;ckskennzeichen'>"
69    ."\n\t<tr>"
70        ."\n\t\t<td class='head'>Gmkg</td>"
71        ."\n\t\t<td class='head'>Flur</td>"
72        ."\n\t\t<td class='head'>Flurst-Nr.</td>"
73    ."\n\t</tr>\n\t<tr>"
74        ."\n\t\t<td title='Gemarkung'>";
75        if  ($showkey) {echo "<span class='key'>".$gmkgnr."</span><br>";}
76        echo $gemkname."&nbsp;</td>"
77        ."\n\t\t<td title='Flurnummer'>".$flurnummer."</td>"
78        ."\n\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>"
79    ."\n\t</tr>"
80        ."\n\t</table>"
81."\n</td>\n<td>";
82
83// Links zu anderem Nachweis
84echo "\n\t<p class='nwlink noprint'>"
85        ."\n\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
86        if ($showkey) {echo "&amp;showkey=j";}
87        echo "&amp;eig=n' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck <img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''></a>"
88."\n\t</p>"
89."\n\t</td>\n</tr>\n</table>";
90// Ende Seitenkopf
91
92echo "\n<p class='fsd'>Flurst&uuml;cksfl&auml;che: <b>".number_format($flstflaeche,0,",",".") . " m&#178;</b></p>";
93pg_free_result($resf);
94
95echo "\n\n<h3><img src='ico/Haus.png' width='16' height='16' alt=''> Geb&auml;ude</h3>"
96."\n<p>.. auf oder an dem Flurst&uuml;ck. Ermittelt durch Verschneidung der Geometrie.</p>";
97
98// G e b a e u d e
99$sqlg ="SELECT g.gml_id, g.name, g.bauweise, g.gebaeudefunktion, h.v AS bauweise_beschreibung, u.v AS bezeichner, g.zustand, z.v AS bzustand,
100round(st_area(g.wkb_geometry)::numeric,2) AS gebflae, "; // GEB-Flaeche komplett auch die Fl. ausserhalb des FS
101$sqlg.="round(st_area(ST_Intersection(g.wkb_geometry,f.wkb_geometry))::numeric,2) AS schnittflae, "; // wie viel vom GEB liegt im FS?
102$sqlg.="st_within(g.wkb_geometry,f.wkb_geometry) as drin "; // liegt das GEB komplett im FS?
103$sqlg.="FROM ax_flurstueck f, ax_gebaeude g
104LEFT JOIN alkis_wertearten h ON cast(g.bauweise AS character varying) = h.k AND h.element='ax_gebaeude' and h.bezeichnung='bauweise'
105LEFT JOIN alkis_wertearten u ON cast(g.gebaeudefunktion AS character varying) = u.k AND u.element='ax_gebaeude' and u.bezeichnung='gebaeudefunktion'
106LEFT JOIN alkis_wertearten z ON cast(g.zustand AS character varying) = z.k AND z.element='ax_gebaeude' and z.bezeichnung='zustand'
107WHERE f.gml_id= $1 AND f.endet IS NULL and g.endet IS NULL "; // ID des akt. FS
108
109// "within" -> nur Geb., die komplett im FS liegen. "intersects" -> auch teil-ueberlappende Flst.
110$sqlg.="AND st_intersects(g.wkb_geometry,f.wkb_geometry) = true ";
111// RLP: keine Relationen zu NebengebÀuden. Auf Qualifizierung verzichten, sonst werden NebengebÀude nicht angezeigt
112//$sqlg.="AND (v.beziehungsart='zeigtAuf' OR v.beziehungsart='hat') ";
113$sqlg.="ORDER BY schnittflae DESC;";
114
115$v=array($gmlid);
116$resg=pg_prepare("", $sqlg);
117$resg=pg_execute("", $v);
118if (!$resg) {
119        echo "\n<p class='err'>Fehler bei Geb&auml;ude-Verschneidung.</p>\n";
120        if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqlg."<br>$1 = gml_id = '".$gmlid."'</p>";}
121}
122$gebnr=0;
123$gebflsum=0;
124echo "\n<hr>\n<table class='geb'>";
125        // T-Header
126        echo "\n<tr>\n"
127                ."\n\t<td class='head' title='ggf. Geb&auml;udename'>Name</td>"
128                ."\n\t<td class='heads fla' title='Schnittsfl&auml;che'><img src='ico/sortd.png' width='10' height='10' alt='' title='Sortierung (absteigend)'>Fl&auml;che</td>"
129                ."\n\t<td class='head' title='Geb&auml;udefl&auml;che'>&nbsp;</td>"
130                ."\n\t<td class='head' title='Geb&auml;udefunktion ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des Geb&auml;udes'>Funktion</td>"
131                ."\n\t<td class='head' title='Bauweise ist die Beschreibung der Art der Bauweise'>Bauweise</td>"
132                ."\n\t<td class='head' title='Zustand beschreibt die Beschaffenheit oder die Betriebsbereitschaft von Geb&auml;ude. Diese Attributart wird nur dann optional gef&uuml;hrt, wenn der Zustand des Geb&auml;udes vom nutzungsf&auml;higen Zustand abweicht.'>Zustand</td>"
133                ."\n\t<td class='head nwlink' title='Lagebezeichnung mit Stra&szlig;e und Hausnummer'>Lage</td>"
134                ."\n\t<td class='head nwlink' title='Link zu den kompletten Hausdaten'>Haus</td>"
135        ."\n</tr>";
136        // T-Body
137        while($rowg = pg_fetch_array($resg)) {
138                $gebnr = $gebnr + 1;
139                $ggml=$rowg["gml_id"];
140                $gebflsum=$gebflsum + $rowg["schnittflae"];
141                $gnam= trim(trim($rowg["name"], "{}"), '"'); // Gebaeude-Name ist ein Array in der DB: '{"A","B"}'
142                // Mehrfachbelegung nur theoretisch. Entklammern reicht. Mal mit und mal ohne "" drum !?
143                /* SELECT name FROM ax_gebaeude WHERE NOT name IS NULL AND array_length(name, 1) > 1; */
144                $gzus=$rowg["zustand"];
145                $gzustand=$rowg["bzustand"];
146
147                // 3 FÀlle unterscheiden:
148                if ($rowg["drin"] == "t") { // GebÀude liegt komplett in FlurstÃŒck
149                        $f1=$rowg["schnittflae"]." m&#178;";
150                        $f2="&nbsp;";
151                        $gstyle="gin"; // siehe .css
152                } else {
153                if ($rowg["schnittflae"] == "0.00") { // GebÀude angrenzend (Grenzbebauung)
154                                $gstyle="gan";
155                                $f1="&nbsp;";
156                                $f2="angrenzend";
157                        } else { // Teile des GebÀudes stehen auf dem FlurstÃŒck
158                                $gstyle="gtl";
159                                $f1=$rowg["schnittflae"]." m&#178;";
160                                $f2="(von ".$rowg["gebflae"]." m&#178;)";
161                        }
162                }
163
164                echo "\n<tr>"
165                        ."\n\t<td class='".$gstyle."'>";
166                        if ($gnam != "") {echo "<span title='Geb&auml;udename'>".$gnam."</span><br>";}
167                        echo "\n\t</td>";
168
169                        echo "\n\t<td class='fla'>".$f1."</td>"
170                        ."\n\t<td class='".$gstyle."'>".$f2."</td>"; // FlÀchenangaben
171
172                        echo "\n\t<td class='".$gstyle."'>";
173                        if ($showkey) {echo "<span class='key'>".$rowg["gebaeudefunktion"]."</span>&nbsp;";}
174                        echo $rowg["bezeichner"]."</td>";
175
176                        echo "\n\t<td class='".$gstyle."'>";
177                        if ($showkey) {echo "<span class='key'>".$rowg["bauweise"]."</span>&nbsp;";}
178                        echo $rowg["bauweise_beschreibung"]."&nbsp;</td>";
179
180                        echo "\n\t<td class='".$gstyle."'>";
181                        if ($showkey) {echo "<span class='key'>".$gzus."</span>&nbsp;";}
182                        echo $gzustand."&nbsp;</td>";
183
184                        echo "\n\t<td class='nwlink noprint'>";
185                        // 0 bis N Lagebezeichnungen mit Haus- oder Pseudo-Nummer, alle in ein TD zu EINEM GebÀude
186
187                        // HAUPTgebÀude  Geb >zeigtAuf> lage (mehrere)
188                        $sqll="SELECT 'm' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.hausnummer, '' AS laufendenummer "
189                        ."FROM ax_gebaeude g JOIN ax_lagebezeichnungmithausnummer l ON l.gml_id=ANY(g.zeigtauf) "
190                        ."JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage "
191                        ."WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL ";
192
193                        // oder NEBENgebÀude  Geb >hat> Pseudo
194                        $sqll.="UNION SELECT 'p' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.pseudonummer AS hausnummer, l.laufendenummer "
195                        ."FROM ax_gebaeude g JOIN ax_lagebezeichnungmitpseudonummer l ON l.gml_id=g.hat "
196                        ."JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage "
197                        ."WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL "; // ID des Hauses"
198               
199                        $sqll.="ORDER BY bezeichnung, hausnummer;";
200
201                        $v = array($ggml);
202                        $resl = pg_prepare("", $sqll);
203                        $resl = pg_execute("", $v);
204                        if (!$resl) {
205                                echo "\n<p class='err'>Fehler bei Lage mit HsNr.</p>\n";
206                                if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sqll."<br>$1 = gml_id = '".$gmlid."'</p>";}
207                        }
208                        while($rowl = pg_fetch_array($resl)) { // LOOP: Lagezeilen
209                                $ltyp=$rowl["ltyp"]; // Lagezeilen-Typ
210                                $skey=$rowl["lage"]; // Str.-Schluessel
211                                $snam=htmlentities($rowl["bezeichnung"], ENT_QUOTES, "UTF-8"); //-Name
212                                $hsnr=$rowl["hausnummer"];
213                                $hlfd=$rowl["laufendenummer"];
214                                $gmllag=$rowl["lgml"];
215                                if ($ltyp == "p") {
216                                        $lagetitl="NebengebÀude - Pseudonummer";
217                                        $lagetxt="Nebengeb&auml;ude Nr. ".$hlfd;
218                                } else {
219                                        $lagetitl="HauptgebÀude - Hausnummer";
220                                        $lagetxt=$snam."&nbsp;".$hsnr;
221                                }
222                                echo "\n\t\t<img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''>&nbsp;";
223                                if ($showkey) {echo "<span class='key'>(".$skey.")</span>&nbsp;";}                     
224                                echo "\n\t\t<a title='".$lagetitl."' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag."&amp;ltyp=".$ltyp;
225                                        if ($showkey)   {echo "&amp;showkey=j";}
226                                echo "'>".$lagetxt."</a>";
227                                echo "<br>";
228                        } // Ende Loop Lage m.H.
229            pg_free_result($resl);
230                        echo "\n\t</td>";
231
232                        echo "\n\t<td class='nwlink noprint'>"
233                                ."\n\t\t<a title='Daten zum Geb&auml;ude-Objekt' href='alkishaus.php?gkz=".$gkz."&amp;gmlid=".$ggml;
234                                if ($showkey) {echo "&amp;showkey=j";}
235                                echo "'><img src='ico/Haus.png' width='16' height='16' alt=''></a>"
236                        ."\n\t</td>"
237                ."\n</tr>";
238        }
239        // Footer
240        if ($gebnr == 0) {
241                echo "\n</table>"
242                ."<p class='err'><br>Keine Geb&auml;ude auf diesem Flurst&uuml;ck.<br>&nbsp;</p>";
243        } else {
244                echo "\n<tr>"
245                        ."\n\t<td>Summe:</td>"
246                        ."\n\t<td class='fla sum' title='von Geb&auml;uden &uuml;berbaute Fl&auml;che des Flurst&uuml;cks'>".number_format($gebflsum,0,",",".")."&nbsp;&nbsp;&nbsp;&nbsp;m&#178;</td>"
247                        ."\n\t<td colspan='6'>&nbsp;</td>"
248                ."\n</tr>"
249        ."\n</table>";
250        $unbebaut = number_format(($flstflaeche - $gebflsum),0,",",".") . " m&#178;";
251        echo "\n<p><br>Flurst&uuml;cksfl&auml;che abz&uuml;glich Geb&auml;udefl&auml;che: <b>".$unbebaut."</b></p><br>";
252}
253pg_free_result($resg);
254?>
255
256<div class='buttonbereich noprint'>
257<hr>
258        <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp;
259        <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a>
260</div>
261
262<?php footer($gmlid, $_SERVER['PHP_SELF']."?", ""); ?>
263
264</body>
265</html>
Note: See TracBrowser for help on using the repository browser.