source: trunk/info/info/alkisn/alkishaus.php @ 362

Revision 362, 13.3 KB checked in by frank.jaeger, 8 years ago (diff)

Anpassung der ALKIS-Buchauskunft an die Datenbank-Struktur des norGIS-ALKIS-Importer.

Line 
1<?php
2/*      alkishaus.php - viele Daten zu EINEM ALKIS-GebÀude-Objekt
3        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
4
5        Version:
6        2016-02-24 Version fuer norGIS-ALKIS-Import
7
8        ToDo:
9        - sinnvolle Sortierung und Gruppierung der Felder
10        - geometrische Suche nach FS, auf denen das Haus steht
11        - Template im WMS auf Ebene GebÀude hierhin verknÃŒpfen.
12        - Auch diese Relationen abbilden:
13                ax_gebaeude >gehoertZu> ax_gebaeude  (ringförmige Verbindung GebÀudekomplex)
14                ax_gebaeude (umschliesst) ax_bauteil
15                ax_gebaeude >gehoert> ax_person  (Ausnahme)
16*/
17session_start();
18$id="n";
19$cntget = extract($_GET);
20require_once("alkis_conf_location.php");
21if ($auth == "mapbender") {require_once($mapbender);}
22include("alkisfkt.php");
23$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
24if ($keys == "j") {$showkey=true;} else {$showkey=false;}
25if ($allfld == "j") {$allefelder=true;} else {$allefelder=false;}
26?>
27<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
28<html>
29<head>
30        <meta name="author" content="b600352" >
31        <meta http-equiv="cache-control" content="no-cache">
32        <meta http-equiv="pragma" content="no-cache">
33        <meta http-equiv="expires" content="0">
34        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
35        <title>ALKIS Daten zum Haus</title>
36        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
37        <link rel="shortcut icon" type="image/x-icon" href="ico/Haus.ico">
38        <style type='text/css' media='print'>
39                .noprint {visibility: hidden;}
40        </style>
41</head>
42<body>
43<?php
44
45$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
46if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
47
48// G e b a e u d e
49// ++ auch .d-Spalten der alkis_werte?
50$sqlg ="SELECT g.gml_id, g.name, g.bauweise, g.gebaeudefunktion, g.anzahlderoberirdischengeschosse AS aog, g.anzahlderunterirdischengeschosse AS aug,
51g.lagezurerdoberflaeche, g.dachgeschossausbau, g.zustand, array_to_string(g.weiteregebaeudefunktion, ',') AS wgf, g.dachform, g.hochhaus, g.objekthoehe, g.geschossflaeche, g.grundflaeche, g.umbauterraum, g.baujahr, g.dachart, g.qualitaetsangaben,
52h.v bbauw, u.v AS bfunk, z.v AS zustandv, d.v AS bdach, a.v AS dgaus, o.v AS oflv,
53round(st_area(g.wkb_geometry)::numeric,2) AS gebflae FROM ax_gebaeude g
54LEFT JOIN alkis_wertearten h ON cast(g.bauweise AS character varying)=h.k AND h.element='ax_gebaeude' and h.bezeichnung='bauweise'
55LEFT JOIN alkis_wertearten u ON cast(g.gebaeudefunktion AS character varying)=u.k AND u.element='ax_gebaeude' and u.bezeichnung='gebaeudefunktion'
56LEFT JOIN alkis_wertearten z ON cast(g.zustand AS character varying)=z.k AND z.element='ax_gebaeude' AND z.bezeichnung='zustand'
57LEFT JOIN alkis_wertearten d ON cast(g.dachform AS character varying)=d.k AND d.element='ax_gebaeude' AND d.bezeichnung='dachform'
58LEFT JOIN alkis_wertearten a ON cast(g.dachgeschossausbau AS character varying)=a.k AND a.element='ax_gebaeude' AND a.bezeichnung='dachgeschossausbau'
59LEFT JOIN alkis_wertearten o ON cast(g.lagezurerdoberflaeche AS character varying)=o.k AND o.element='ax_gebaeude' AND o.bezeichnung='lagezurerdoberflaeche'
60WHERE g.gml_id= $1 AND g.endet IS NULL;";
61
62$v = array($gmlid);
63$resg = pg_prepare("", $sqlg);
64$resg = pg_execute("", $v);
65if (!$resg) {
66        echo "\n<p class='err'>Fehler bei Geb&auml;ude.<br>".pg_last_error()."</p>\n";
67        if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sqlg."<br>$1 = gml_id = '".$gmlid."'</p>";}
68}
69
70// Balken
71echo "<p class='geb'>ALKIS Haus ".$gmlid."&nbsp;</p>\n"; // ++ Kennzeichen?
72
73echo "\n<h2><img src='ico/Haus.png' width='16' height='16' alt=''> Haus (Geb&auml;ude)</h2>\n";
74
75// Kennzeichen in Rahmen
76// - Welches Kennzeichen zum Haus ?
77echo "\n<hr>";
78// Umschalter: auch leere Felder ausgeben?
79echo "<p class='nwlink noprint'>";
80echo "<a class='nwlink' href='".$_SERVER['PHP_SELF']."?gkz=".$gkz."&amp;gmlid=".$gmlid;
81        if ($showkey) {echo "&amp;showkey=j";} else {echo "&amp;showkey=n";}
82        if ($allefelder) {echo "&amp;allfld=n'>nur Felder mit Inhalt";}
83        else {echo "&amp;allfld=j'>auch leere Felder";}
84echo "</a></p>";
85
86while($rowg = pg_fetch_array($resg)) { // Schleife, kann aber nur EIN Haus sein.
87        $gebnr++;
88        echo "\n<table class='geb'>"
89        ."\n<tr>\n"
90                ."\n\t<td class='head' title=''>Attribut</td>"
91                ."\n\t<td class='head' title=''>Wert</td>"
92        ."\n</tr>";
93
94        $aog=$rowg["aog"];
95        $aug=$rowg["aug"];
96        $hoh=$rowg["hochhaus"];
97        $nam=$rowg["name"]; // Gebaeude-Name
98        $bfunk=$rowg["bfunk"];
99
100        $baw=$rowg["bauweise"];
101        $bbauw=$rowg["bbauw"];
102
103        $ofl=$rowg["lagezurerdoberflaeche"]; // Key
104        $oflv=$rowg["oflv"]; // Value
105
106        $dga=$rowg["dachgeschossausbau"]; // Key
107        $dgav=$rowg["dgaus"]; // Value
108
109        $zus=$rowg["zustand"]; // Key
110        $zusv=$rowg["zustandv"]; // Value
111
112        $wgf=$rowg["wgf"]; // Array-> kommagetrennte Liste
113
114        $daf=$rowg["dachform"]; // Key
115        $dach=$rowg["bdach"]; // Value
116
117        $hho=$rowg["objekthoehe"];
118        $gfl=$rowg["geschossflaeche"];
119        $grf=$rowg["grundflaeche"];
120        $ura=$rowg["umbauterraum"];
121        $bja=$rowg["baujahr"];
122        $daa=$rowg["dachart"];
123        $qag=$rowg["qualitaetsangaben"];
124
125        if (($nam != "") OR $allefelder) {
126                echo "\n<tr>"
127                        ."\n\t<td title='\"Name\" ist der Eigenname oder die Bezeichnung des Geb&auml;udes.'>Name</td>"
128                        ."\n\t<td>".$nam."</td>"
129                ."\n</tr>";
130        }
131
132        // 0 bis N   L a g e bezeichnungen mit Haus- oder Pseudo-Nummer
133
134        // HAUPTgebÀude
135        $sqll ="SELECT 'm' AS ltyp, l.gml_id AS gmllag, s.lage, s.bezeichnung, l.hausnummer, '' AS laufendenummer FROM ax_gebaeude g
136        JOIN ax_lagebezeichnungmithausnummer l ON l.gml_id=ANY(g.zeigtauf)
137        JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage
138        WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL";
139        // oder NEBENgebÀude
140        $sqll.=" UNION
141        SELECT 'p' AS ltyp, l.gml_id AS gmllag, s.lage, s.bezeichnung, l.pseudonummer AS hausnummer, l.laufendenummer
142        FROM ax_gebaeude g
143        JOIN ax_lagebezeichnungmitpseudonummer l ON l.gml_id=g.hat
144        JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage
145        WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL ";
146
147        $sqll.="ORDER BY bezeichnung, hausnummer ;";
148
149        $v = array($gmlid);
150        $resl = pg_prepare("", $sqll);
151        $resl = pg_execute("", $v);
152        if (!$resl) {
153                echo "\n<p class='err'>Fehler bei Lage mit HsNr.</p>\n";
154                if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sqll."<br>$1 = gml_id = '".$gmlid."'</p>";}
155        }
156        $zhsnr=0;
157        while($rowl = pg_fetch_array($resl)) { // LOOP: Lagezeilen
158                $zhsnr++;
159                $ltyp=$rowl["ltyp"]; // Lagezeilen-Typ
160                $skey=$rowl["lage"]; // Str.-Schluessel
161                $snam=htmlentities($rowl["bezeichnung"], ENT_QUOTES, "UTF-8"); // -Name
162                $hsnr=$rowl["hausnummer"];
163                $hlfd=$rowl["laufendenummer"];
164                $gmllag=$rowl["gmllag"];
165
166                if ($zhsnr == 1) {
167                        echo "\n<tr>\n\t<td title='Lage mit Hausnummer oder Pseudonummer'>Adresse</td>";
168                        echo "\n\t<td>";
169                }
170                echo "\n\t\t<img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''>&nbsp;";
171                if ($showkey) {echo "<span class='key'>(".$skey.")</span>&nbsp;";}                     
172                echo "\n\t\t<a title='Hausnummer' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag."&amp;ltyp=".$ltyp."'>";
173                        echo $snam."&nbsp;".$hsnr;
174                        if ($ltyp == "p") { echo ", lfd.Nr ".$hlfd;}
175                echo "</a><br>";
176        } // Ende Loop Lagezeilen m.H.
177        if ($zhsnr > 0) {echo "\n\t</td>\n</tr>";}
178
179        echo "\n<tr>"
180                ."\n\t<td title='\"Geb&auml;udefunktion\" ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des Geb&auml;udes'>Funktion</td>"
181                ."\n\t<td>";
182                if ($showkey) {echo "<span class='key'>".$rowg["gebaeudefunktion"]."</span>&nbsp;";}
183                echo $bfunk."</td>"
184        ."\n</tr>";
185        if ($baw != "" OR $allefelder) {
186                echo "\n<tr>"
187                        ."\n\t<td title='\"Bauweise\" ist die Beschreibung der Art der Bauweise.'>Bauweise</td>"
188                        ."\n\t<td>";
189                        if ($showkey) {echo "<span class='key'>".$baw."</span>&nbsp;";}
190                        echo $bbauw."</td>"
191                . "\n</tr>";
192        }
193        if ($aog != "" OR $allefelder) {
194                echo "\n<tr>"
195                        ."\n\t<td title='Anzahl oberirdischer Geschosse'>Geschosse</td>"
196                        . "\n\t<td>".$aog."</td>"
197                . "\n</tr>";
198        }
199        if ($aug != "" OR $allefelder) {
200                echo "\n<tr>"
201                        ."\n\t<td title='Anzahl unterirdischer Geschosse'>U-Geschosse</td>"
202                        . "\n\t<td>".$aug."</td>"
203                . "\n</tr>";
204        }
205        if ($hoh != "" OR $allefelder) {
206                echo "\n<tr>"
207                        ."\n\t<td title='\"Hochhaus\" ist ein Geb&auml;ude, das nach Geb&auml;udeh&ouml;he und Auspr&auml;gung als Hochhaus zu bezeichnen ist. F&uuml;r Geb&auml;ude im Geschossbau gilt dieses i.d.R. ab 8 oberirdischen Geschossen, f&uuml;r andere Geb&auml;ude ab einer Geb&auml;udeh&ouml;he von 22 m.'>Hochhaus</td>";
208                        echo "\n\t<td>".$hoh."</td>";
209                echo "\n</tr>";
210        }
211        if ($ofl != "" OR $allefelder) {
212                echo "\n<tr>"
213                        ."\n\t<td title='\"Lage zur Erdoberfl&auml;che\" ist die Angabe der relativen Lage des Geb&auml;udes zur Erdoberfl&auml;che. Diese Attributart wird nur bei nicht ebenerdigen Geb&auml;uden gef&uuml;hrt.'>Lage zur Erdoberfl&auml;che</td>"
214                        ."\n\t<td>";
215                        if ($showkey) {echo "<span class='key'>".$ofl."</span>&nbsp;";}
216                        echo $oflv;"</td>"
217                ."\n</tr>";
218        }
219        if ($dga != "" OR $allefelder) {
220                echo "\n<tr>"
221                        ."\n\t<td title='\"Dachgeschossausbau\" ist ein Hinweis auf den Ausbau bzw. die Ausbauf&auml;higkeit des Dachgeschosses.'>Dachgeschossausbau</td>"
222                        ."\n\t<td>";
223                        if ($showkey) {echo "<span class='key'>".$dga."</span>&nbsp;";}
224                        echo $dgav."</td>"
225                ."\n</tr>";
226        }
227        if ($zus != "" OR $allefelder) {
228                echo "\n<tr>"
229                        ."\n\t<td 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>"
230                        ."\n\t<td>";
231                        if ($showkey) {echo "<span class='key'>".$zus."</span>&nbsp;";}
232                        echo $zusv."</td>"
233                ."\n</tr>";
234        }
235        // Suche Testfall: SELECT * FROM ax_gebaeude WHERE NOT weiteregebaeudefunktion IS NULL;
236        // Keiner zu finden. Das folgende ungetestet:
237        if ($wgf != "" OR $allefelder) { // "weiteregebaeudefunktion" ist ein Array
238                echo "\n<tr>"
239                        ."\n\t<td title='\"Weitere Geb&auml;udefunktion\" ist die Funktion, die ein Geb&auml;ude neben der dominierenden Geb&auml;udefunktion hat.'>Weitere Geb&auml;udefunktionen</td>\n\t<td>";
240                        if ($wgf != "") { // Kommagetrennte Liste aus Array
241                                $sqlw="SELECT k, v, d FROM alkis_wertearten WHERE k IN ( $1 ) AND element='ax_gebaeude' AND bezeichnung='weiteregebaeudefunktion' ORDER BY k;";
242                                $v = array($wgf);
243                                $resw = pg_prepare("", $sqlw);
244                                $resw = pg_execute("", $v);
245                                if (!$resw) {
246                                        echo "\n<p class='err'>Fehler bei Geb&auml;ude - weitere Funktion.</p>\n";
247                                        if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sqlw."<br>$1 = Werteliste = '".$wgf."'</p>";}
248                                }
249                                $zw=0;
250                                while($roww = pg_fetch_array($resw)) { // LOOP: w.Funktion
251                                        if ($zw > 0) {echo "<br>";}
252                                        if ($showkey) {echo "<span class='key'>".$roww["k"]."</span>&nbsp;";}
253                                        echo "<span title='".$roww["d"]."'>".$roww["v"]."</span>";
254                                        $zw++;
255                           }
256                        }
257                        echo "</td>"
258                ."\n</tr>";
259        }
260        if ($daf != "" OR $allefelder) {
261                echo "\n<tr>"
262                        ."\n\t<td title='\"Dachform\" beschreibt die charakteristische Form des Daches.'>Dachform</td>"
263                        ."\n\t<td>";
264                        if ($showkey) {echo "<span class='key'>".$daf."</span>&nbsp;";}
265                        echo $dach."</td>"
266                ."\n</tr>";
267        }
268        if ($hho != "" OR $allefelder) {
269                echo "\n<tr>"
270                        ."\n\t<td title='\"Objekth&ouml;he\" ist die H&ouml;hendifferenz in [m] zwischen dem h&ouml;chsten Punkt der Dachkonstruktion und der festgelegten Gel&auml;ndeoberfl&auml;che des Geb&auml;udes.'>Objekth&ouml;he</td>"
271                        ."\n\t<td>".$hho."</td>"
272                ."\n</tr>";
273        }
274        if ($gfl != "" OR $allefelder) {
275                echo "\n<tr>"
276                        ."\n\t<td title='\"Geschossfl&auml;che\" ist die Geb&auml;udegeschossfl&auml;che in [qm].'>Geschossfl&auml;che</td>"
277                        ."\n\t<td>";
278                        if ($gfl != "") {echo $gfl." m&#178;";}
279                        echo "</td>"
280                ."\n</tr>";
281        }
282        if ($grf != "" OR $allefelder) {
283                echo "\n<tr>"
284                        ."\n\t<td title='\"Grundfl&auml;che\" ist die Geb&auml;udegrundfl&auml;che in [qm].'>Grundfl&auml;che</td>"
285                        ."\n\t<td>";
286                        if ($grf != "") {echo $grf." m&#178;";}
287                echo "\n</tr>";
288        }
289        if ($ura != "" OR $allefelder) {
290                echo "\n<tr>"
291                        ."\n\t<td title='\"Umbauter Raum\" ist der umbaute Raum [Kubikmeter] des Geb&auml;udes.'>Umbauter Raum</td>"
292                        ."\n\t<td>".$ura."</td>"
293                ."\n</tr>";
294        }
295        if ($bja != "" OR $allefelder) {
296                echo "\n<tr>"
297                        ."\n\t<td title='\"Baujahr\" ist das Jahr der Fertigstellung oder der baulichen Ver&auml;nderung des Geb&auml;udes.'>Baujahr</td>"
298                        ."\n\t<td>".$bja."</td>"
299                ."\n</tr>";
300        }
301        if ($daa != "" OR $allefelder) {
302                echo "\n<tr>"
303                        ."\n\t<td title='\"Dachart\" gibt die Art der Dacheindeckung (z.B. Reetdach) an.'>Dachart</td>"
304                        ."\n\t<td>".$daa."</td>"
305                ."\n</tr>";
306        }
307        if ($qag != "" OR $allefelder) {
308                echo "\n<tr>"
309                        ."\n\t<td title='Angaben zur Herkunft der Informationen (Erhebungsstelle). Die Information ist konform zu den Vorgaben aus ISO 19115 zu repr&auml;sentieren.'>Qualit&auml;tsangaben</td>"
310                        ."\n\t<td>".$qag."</td>"
311                ."\n</tr>";
312        }
313        echo "\n</table>";
314}
315if ($gebnr == 0) {echo "<p class='err'><br>Kein Geb&auml;ude gefunden<br>&nbsp;</p>";}
316
317// ++ ToDo: Verschnitt mit FS?
318
319?>
320
321<form action=''>
322        <div class='buttonbereich noprint'>
323        <hr>
324                <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp;
325                <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a>&nbsp;
326        </div>
327</form>
328
329<?php footer($gmlid, $_SERVER['PHP_SELF']."?", ""); ?>
330
331</body>
332</html>
Note: See TracBrowser for help on using the repository browser.