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