source: trunk/var/www/info/alkis/alkislage.php @ 60

Revision 60, 15.9 KB checked in by frank.jaeger, 12 years ago (diff)
Line 
1<?php
2/*      alkislage.php
3
4        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
5        Kann die 3 Arten von Lagebezeichnung anzeigen und verbundene Objekte verlinken
6
7        Version:         15.09.2010  Function "buchungsart" durch JOIN ersetzt
8        01.10.2010  Flaeche umgruppiert
9        14.12.2010  Pfad zur Conf
10*/
11ini_set('error_reporting', 'E_ALL & ~ E_NOTICE');
12session_start();
13$gkz=urldecode($_REQUEST["gkz"]);
14require_once("alkis_conf_location.php");
15if ($auth == "mapbender") {
16        // Bindung an Mapbender-Authentifizierung
17        require_once($mapbender);
18}
19include("alkisfkt.php");
20?>
21<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
22<html>
23<head>
24        <meta name="author" content="F. Jaeger krz" >
25        <meta http-equiv="cache-control" content="no-cache">
26        <meta http-equiv="pragma" content="no-cache">
27        <meta http-equiv="expires" content="0">
28        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
29        <title>ALKIS Lagebezeichnung</title>
30        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
31        <link rel="shortcut icon" type="image/x-icon" href="ico/Lage_mit_Haus.ico">
32        <style type='text/css' media='print'>
33                .noprint {visibility: hidden;}
34        </style>
35</head>
36<body>
37<?php
38$gmlid=urldecode($_REQUEST["gmlid"]);
39$ltyp=urldecode($_REQUEST["ltyp"]); // 3 Arten Lage-Typ
40switch ($ltyp) {
41        case "m": // "Mit HsNr"     = Hauptgebaeude
42                $tnam = "ax_lagebezeichnungmithausnummer";
43        break;
44        case "p": // "mit PseudoNr" = Nebengebaeude
45                $tnam = "ax_lagebezeichnungmitpseudonummer";
46        break;
47        case "o": //"Ohne HsNr"    = Gewanne oder Strasse
48                $tnam = "ax_lagebezeichnungohnehausnummer";
49        break;
50        default:
51                $ltyp = "m";
52                $tnam = "ax_lagebezeichnungmithausnummer";
53        break;
54}
55$id = isset($_GET["id"]) ? $_GET["id"] : "n";
56if ($id == "j") {
57        $idanzeige=true;
58} else {
59        $idanzeige=false;
60}
61$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
62if ($keys == "j") {
63        $showkey=true;
64} else {
65        $showkey=false;
66} $con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
67if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
68
69// Lagebezeichnung
70$sql ="SELECT s.bezeichnung AS snam, g.bezeichnung AS gnam, l.land, l.regierungsbezirk, l.kreis, l.gemeinde, l.lage, ";
71switch ($ltyp) {
72        case "m": // "Mit HsNr"
73                $sql.="l.hausnummer ";
74        break;
75        case "p": // "mit PseudoNr"
76                $sql.="l.pseudonummer, l.laufendenummer ";
77        break;
78        case "o": //"Ohne HsNr"
79                $sql.="l.unverschluesselt ";
80        break;
81}
82$sql.="FROM ".$tnam." l ";
83
84// Gemeinde entschluesseln
85$sql.="LEFT JOIN  ax_gemeinde g ";
86$sql.="ON l.kreis=g.kreis AND l.gemeinde=g.gemeinde ";
87
88// Strasse entschluesseln
89$sql.="LEFT JOIN  ax_lagebezeichnungkatalogeintrag s ";
90// Besonderheit: unterschiedliche Feldformate und Fuellungen!!!
91
92switch ($ltyp) {
93        case "o": //"Ohne HsNr"
94                // hier beide .lage als Char(5)
95                //  in ax_lagebezeichnungKatalogeintrag mit fÃŒhrenden Nullen
96                //  in ax_lagebezeichnungOhneHausnummer jedoch ohne fÃŒhrende Nullen
97                $sql.="ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=trim(leading '0' from s.lage) ";
98        break;
99        default: // "Mit HsNr" + "mit PseudoNr"
100                // ax_LagebezeichnungKatalogeintrag.lage   ist char,
101                // ax_LagebezeichnungMitHausnummer.lage    ist integer,
102                // ax_lagebezeichnungMitPseudonummer.lage  ist integer,
103                $sql.="ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND to_char(l.lage, 'FM00000')=s.lage ";
104        break;
105}
106
107$sql.="WHERE l.gml_id='".$gmlid."';";
108
109$res=pg_query($con,$sql);
110if (!$res) echo "\n<p class='err'>Fehler bei Lagebezeichnung\n<br>".$sql."</p>\n";
111
112if ($row = pg_fetch_array($res)) {     
113        $land =$row["land"];
114        $regbez=$row["regierungsbezirk"];
115        $kreis=$row["kreis"];
116        $gem  =$row["gemeinde"];
117        $gnam =$row["gnam"];
118        $lage =$row["lage"]; // Strassenschluessel
119        $snam =$row["snam"]; //Strassennamen
120        $unver=$row["unverschluesselt"]; // Gewanne
121        $kennz=$land."-".$regbez."-".$kreis."-".$gem."-".$lage."-";     
122
123        switch ($ltyp) {
124
125                case "m": // "Mit HsNr"
126                        $hsnr=$row["hausnummer"];
127                        $kennz.=$hsnr;
128                        $untertitel="Hauptgeb&auml;ude mit Hausnummer";                 
129                        // Balken
130                        echo "<p class='lage'>ALKIS Lagebezeichnung mit Hausnummer ".$kennz."&nbsp;</p>\n"; // Balken
131                break;
132
133                case "p": // "mit PseudoNr"
134                        $pseu=$row["pseudonummer"];
135                        $lfd=$row["laufendenummer"];
136                        $kennz.=$pseu."-".$lfd;
137                        $untertitel="NebengebÀude mit laufender Nummer (Lagebezeichnung mit Pseudonummer)";                   
138                        // Balken                       
139                //      echo "<p class='lage'>ALKIS Lagebezeichnung mit Pseudonummer ".$kennz."&nbsp;</p>\n"; // Balken
140                        echo "<p class='lage'>ALKIS Lagebezeichnung NebengebÀude ".$kennz."&nbsp;</p>\n"; // Balken
141                break;
142
143                case "o": //"Ohne HsNr"
144                        if ($lage == "") {
145                                $kennz=" - ".$unver;
146                        } else {
147                                $kennz.=$unver;                         
148                        }                         $untertitel="Stra&szlig;e ohne Hausnummer und/oder Gewanne (unverschl&uuml;sselte Lage)";                       
149                        // Balken                       
150                        echo "<p class='lage'>ALKIS Lagebezeichnung Ohne Hausnummer ".$kennz."&nbsp;</p>\n"; // Balken
151                break;
152        }
153 } else {
154        echo "<p class='err'>Fehler! Kein Treffer fuer gml_id=".$gmlid."</p>";
155}
156
157echo "\n<h2><img src='ico/Lage_mit_Haus.ico' width='16' height='16' alt=''> Lagebezeichnung</h2>\n";
158
159echo "<p>Typ: ".$untertitel."</p>";
160
161echo "\n<table class='outer'>\n<tr>\n\t<td>";
162        // Tabelle Kennzeichen
163        // ToDo: !! kleiner, wenn ltyp=0 und die Schluesselfelder leer sind
164        echo "\n\t<table class='kennzla' title='Lage'>";
165                echo "\n\t<tr>";
166                        echo "\n\t\t<td class='head'>Land</td>";
167                        echo "\n\t\t<td class='head'>Reg.-Bez.</td>";
168                        echo "\n\t\t<td class='head'>Kreis</td>";
169                        echo "\n\t\t<td class='head'>Gemeinde</td>";
170                        echo "\n\t\t<td class='head'>Stra&szlig;e</td>";
171                        switch ($ltyp) {
172                                case "m": // "Mit HsNr"
173                                        echo "\n\t\t<td class='head'>Haus-Nr</td>";
174                                break;
175                                case "p": // "mit PseudoNr"
176                                        echo "\n\t\t<td class='head'>Haus-Nr</td>";
177                                        echo "\n\t\t<td class='head'>lfd.-Nr</td>";     
178                                break;
179                                case "o": //"Ohne HsNr"
180                                        echo "\n\t\t<td class='head'>unverschl&uuml;sselte Lage</td>";
181                                break;
182                        }
183                echo "\n\t</tr>";
184                echo "\n\t<tr>";
185                        echo "\n\t\t<td title='Bundesland'>".$land."</td>";
186                        echo "\n\t\t<td title='Regierungsbezirk'>".$regbez."</td>";
187                        echo "\n\t\t<td title='Kreis'>".$kreis."</td>";
188                        echo "\n\t\t<td title='Gemeinde'>";
189                        if ($showkey) {
190                                echo "<span class='key'>".$gem."</span><br>";
191                        }                       
192                        echo $gnam."</td>";
193                        echo "\n\t\t<td title='Stra&szlig;e'>";
194                        if ($showkey) {
195                                echo "<span class='key'>".$lage."</span><br>";
196                        }
197                        echo $snam."</td>";
198                        switch ($ltyp) {
199                                case "m":
200                                        echo "\n\t\t<td title='Hausnummer und Zusatz'><span class='wichtig'>".$hsnr."</span></td>";
201                                break;
202                                case "p":
203                                        echo "\n\t\t<td title='Pseudonummer - Nebengeb&auml;ude zu dieser Hausnummer'>".$pseu."</td>";
204                                        echo "\n\t\t<td title='Laufende Nummer Nebengeb&auml;ude'><span class='wichtig'>".$lfd."</span></td>";
205                                break;
206                                case "o":
207                                        echo "\n\t\t<td title='Gewanne'><span class='wichtig'>".$unver."</span></td>";
208                                break;
209                        }
210                echo "\n\t</tr>";
211        echo "\n\t</table>";
212
213        echo "\n\t</td>\n\t<td>";
214
215        // Kopf Rechts: weitere Daten?
216        // z.B. hier Ausgabe von "georeferenzierte GebÀudeadresse" ?   
217        if ($idanzeige) {linkgml($gkz, $gmlid, "Lage"); }
218
219echo "\n\t</td>\n</tr>\n</table>";
220// Ende Seitenkopf
221
222// F L U R S T U E C K E
223if ($ltyp <> "p") { // Pseudonummer linkt nur GebÀude
224        echo "\n\n<a name='fs'></a><h3><img src='ico/Flurstueck.ico' width='16' height='16' alt=''> Flurst&uuml;cke</h3>\n";
225        echo "\n<p>mit dieser Lagebezeichnung.</p>";
226        // ax_Flurstueck  >weistAuf>  ax_LagebezeichnungMitHausnummer
227        // ax_Flurstueck  >zeigtAuf>  ax_LagebezeichnungOhneHausnummer
228        switch ($ltyp) {
229                case "m":
230                        $bezart="weistAuf";
231                break;
232                case "o":
233                        $bezart="zeigtAuf";
234                break;
235        }
236        $sql="SELECT g.gemarkungsnummer, g.bezeichnung, ";
237        $sql.="f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.regierungsbezirk, f.kreis, f.gemeinde, f.amtlicheflaeche ";
238        $sql.="FROM ax_gemarkung g ";
239        $sql.="JOIN ax_flurstueck f ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
240        $sql.="JOIN alkis_beziehungen v ON f.gml_id=v.beziehung_von ";
241        $sql.="WHERE v.beziehung_zu='".$gmlid."' "; // id Lage
242        $sql.="AND v.beziehungsart='".$bezart."' ";
243        $sql.="ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
244
245        $resf=pg_query($con,$sql);
246        if (!$resf) {echo "<p class='err'>Fehler bei Flurst&uuml;ck<br><br>".$sql."</p>\n";}
247
248        echo "\n<table class='fs'>";
249        echo "\n<tr>"; // Kopfzeile der Tabelle
250                echo "\n\t<td class='head'>Gemarkung</td>";
251                echo "\n\t<td class='head'>Flur</td>";
252                echo "\n\t<td class='head' title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'>Flurst.</td>";
253                echo "\n\t<td class='head fla'>Fl&auml;che</td>";
254                echo "\n\t<td class='head nwlink noprint' title='Link: weitere Auskunft'>weit. Auskunft</td>";
255        echo "\n</tr>";
256        $j=0;
257        while($rowf = pg_fetch_array($resf)) {
258                $flur=str_pad($rowf["flurnummer"], 3, "0", STR_PAD_LEFT);
259
260                //$fskenn=str_pad($rowf["zaehler"], 5, "0", STR_PAD_LEFT);
261                //if ($rowf["nenner"] != "") {$fskenn.="/".str_pad($rowf["nenner"], 3, "0", STR_PAD_LEFT);}
262
263                $fskenn=$rowf["zaehler"]; // Bruchnummer (ohne fuehrende Nullen)
264                if ($rowf["nenner"] != "") {
265                        $fskenn.="/".$rowf["nenner"];
266                }
267
268                $flae=number_format($rowf["amtlicheflaeche"],0,",",".") . " m&#178;";
269                echo "\n<tr>";                         echo "\n\t<td>";
270                        if ($showkey) {
271                                echo "<span class='key'>".$rowf["gemarkungsnummer"]."</span> ";
272                        }
273                        echo $rowf["bezeichnung"]."</td>";
274                        echo "\n\t<td>".$flur."</td>";
275                        echo "\n\t<td><span class='wichtig'>".$fskenn."</span>";
276                                if ($idanzeige) {linkgml($gkz, $rowf["gml_id"], "Flurst&uuml;ck");}
277                        echo "</td>";
278                        echo "\n\t<td class='fla'>".$flae."</td>";
279                        echo "\n\t<td>\n\t\t<p class='nwlink noprint'>";
280                                echo "\n\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$rowf["gml_id"]."&amp;eig=n";
281                                if ($idanzeige) {echo "&amp;id=j";}
282                                if ($showkey)   {echo "&amp;showkey=j";}
283                                echo "' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck <img src='ico/Flurstueck_Link.ico' width='16' height='16' alt=''></a>";
284                        echo "\n\t\t</p>\n\t</td>";
285                echo "\n</tr>";
286                $j++;
287        }
288        echo "\n</table>";
289}
290
291// L A G E
292// andere Lage mit gleicher Hausnummer suchen
293if ($ltyp <> "o") { // nicht bei Gewanne (Ohne HsNr)
294        echo "\n\n<a name='lage'></a><h3><img src='ico/Lage_mit_Haus.ico' width='16' height='16' alt=''> Lage</h3>\n";
295        echo "\n<p>andere Lagebezeichnungen zur gleichen Hausnummer.</p>";
296        $whereclaus="WHERE land='".$land."' AND regierungsbezirk='".$regbez."' AND kreis='".$kreis."' AND gemeinde='".$gem."' AND lage=".$lage." ";
297        $url=$self."gkz=".$gkz."&amp;id=".$id."&amp;gmlid="; // Basis
298
299        switch ($ltyp) {
300                case "m": // aktuell Hausnummer gefunden
301                        // dazu alle NebengebÀude suchen
302                        echo "\n<p>Nebengeb&auml;ude: ";
303                        $sql ="SELECT l.gml_id, l.laufendenummer FROM ax_lagebezeichnungmitpseudonummer l ";
304                        $sql.=$whereclaus."AND lage=".$lage." AND pseudonummer='".$hsnr."' ORDER BY laufendenummer;";
305                // pseudonummer character varying(5), laufendenummer character varying(2),
306                        $res=pg_query($con,$sql);
307                        if (!$res) echo "\n<p class='err'>Fehler bei Nebengeb&auml;ude.<br>".$sql."</p>\n";
308                        while($row = pg_fetch_array($res)) {
309                                echo "\n\t<a href='".$url.$row["gml_id"]."&amp;ltyp=p'>lfd.-Nr ".$row["laufendenummer"]."</a>&nbsp;&nbsp;";
310                        }
311                        echo "\n</p>";
312                break;
313
314                case "p": // aktuell NebengebÀude: Haupt- und NebengebÀude suchen
315                        echo "\n<p>Hauptgeb&auml;ude: ";
316                        $sql ="SELECT l.gml_id FROM ax_lagebezeichnungmithausnummer l ";
317                        $sql.=$whereclaus."AND hausnummer='".$pseu."';";
318                        $res=pg_query($con,$sql);
319                        if (!$res) echo "<p class='err'>Fehler bei Hauptgeb&auml;ude.<br>".$sql."</p>\n";
320                        while($row = pg_fetch_array($res)) {
321                                echo "\n\t<a href='".$url.$row["gml_id"]."&amp;ltyp=m'>Haus-Nr ".$pseu."</a>&nbsp;&nbsp;";
322                        }
323                        echo "\n</p>";
324
325                        echo "\n<p>weitere Nebengeb&auml;ude: ";
326                        $sql ="SELECT l.gml_id, l.laufendenummer FROM ax_lagebezeichnungmitpseudonummer l ";
327                        $sql.=$whereclaus."AND pseudonummer='".$pseu."' AND laufendenummer <> '".$lfd."' ORDER BY laufendenummer;";
328                        $res=pg_query($con,$sql);
329                        if (!$res) echo "\n<p class='err'>Fehler bei Nebengeb&auml;ude.<br>".$sql."</p>\n";
330                        while($row = pg_fetch_array($res)) {
331                                echo "\n\t<a href='".$url.$row["gml_id"]."&amp;ltyp=p'>lfd.-Nr ".$row["laufendenummer"]."</a>&nbsp;&nbsp;";
332                        }
333                        echo "\n</p>";
334                break;         }
335}
336
337// G E B A E U D E
338
339// Mittelfristig ist zu ueberlegen, ob hier weitere Einzelheiten dargestellt werden,
340// oder ob nicht besser ein eigenes Modul alkisgebaeude.php dies uebernehmen sollte.
341// Dort sollten auch diese Relationen abgebildet werden:
342//  ax_gebaeude >gehoertZu> ax_gebaeude  (ringförmige Verbindung GebÀudekomplex)
343//  ax_gebaeude (umschliesst) ax_bauteil
344//  ax_gebaeude >gehoert> ax_person  (Ausnahme)
345
346if ($ltyp <> "o") { // OhneHsNr linkt nur Flurst.
347        echo "\n\n<a name='geb'></a><h3><img src='ico/Haus.ico' width='16' height='16' alt=''> Geb&auml;ude</h3>";
348        echo "\n<p>mit dieser Lagebezeichnung.</p>";
349        switch ($ltyp) {
350                case "p":
351                        $bezart="hat";
352                        break;
353                case "m":
354                        $bezart="zeigtAuf";
355                        break;
356        }
357        $sql ="SELECT g.gml_id, g.gebaeudefunktion, g.description, g.name, g.lagezurerdoberflaeche, g.bauweise, g.anzahlderoberirdischengeschosse AS aog, g.grundflaeche, g.individualname, g.zustand, ";
358        $sql.="round(area(g.wkb_geometry)::numeric,2) AS flaeche, h.bauweise_beschreibung, u.bezeichner ";
359        $sql.="FROM ax_gebaeude g ";
360        $sql.="JOIN alkis_beziehungen v ON g.gml_id=v.beziehung_von ";
361        $sql.="LEFT JOIN ax_gebaeude_bauweise h ON g.bauweise = h.bauweise_id ";
362        $sql.="LEFT JOIN ax_gebaeude_funktion u ON g.gebaeudefunktion = u.wert ";
363        $sql.="WHERE v.beziehung_zu='".$gmlid."' ";
364        $sql.="AND   v.beziehungsart='".$bezart."' ;";
365        $res=pg_query($con,$sql);
366
367        if (!$res) echo "<p class='err'>Fehler bei Gebaeude.<br>".$sql."</p>\n";
368        $i=0;
369        while($row = pg_fetch_array($res)) { // Only You!
370                echo "<p>";
371                        if ($idanzeige) {linkgml($gkz, $row["gml_id"], "Geb&auml;ude");}               
372                echo "</p>";
373                echo "\n<table>";
374
375                        echo "\n\t<tr><td>Funktion:</td><td>";
376                        if ($showkey) {
377                                echo "<span class='key'>".$row["gebaeudefunktion"]."</span> ";
378                        }
379                        echo $row["bezeichner"]."</td></tr>"; // integer
380
381                        if (!$row["description"] == "") {
382                                echo "\n\t<tr><td>Beschreibung:</td><td>".$row["description"]."</td></tr>"; // integer - EntschlÃŒsseln!
383                        }                       
384
385                        if (!$row["name"] == "") {
386                                echo "\n\t<tr><td>Name:</td><td>".$row["name"]."</td></tr>"; // char(25)
387                        }
388
389                        if (!$row["lagezurerdoberflaeche"] == "") {
390                                echo "\n\t<tr><td>Lage zur Erdoberfl&auml;che:</td><td>".$row["lagezurerdoberflaeche"]."</td></tr>";
391                        } // integer - EntschlÃŒsseln!
392
393                        if (!$row["bauweise"] == "") {
394                                echo "\n\t<tr><td>Bauweise:</td><td>";
395                                if ($showkey) {
396                                        echo "<span class='key'>".$row["bauweise"]."</span> ";
397                                }
398                                echo $row["bauweise_beschreibung"]."</td></tr>"; // integer
399                        }                       
400
401                        if (!$row["aog"] == "") {
402                                echo "\n\t<tr><td>Anz. der oberird. Geschosse:</td><td>".$row["aog"]."</td></tr>"; //
403                        }                               
404
405                        if (!$row["grundflaeche"] == "") {
406                                echo "\n\t<tr><td>Grundfl&auml;che:</td><td title='Buchfl&auml;che'>".$row["grundflaeche"]."</td></tr>"; // integer
407                        }
408
409                        echo "\n\t<tr><td>Geometrische Fl&auml;che:</td><td title='berechnete Fl&auml;che'>".$row["flaeche"]." m&#178;</td></tr>";
410
411                        if (!$row["individualname"] == "") {                   
412                                echo "\n\t<tr><td>Individualname:</td><td>".$row["individualname"]."</td></tr>"; // char(7)
413                        }
414
415                        if (!$row["zustand"] == "") {
416                                echo "\n\t<tr><td>Zustand:</td><td>".$row["zustand"]."</td></tr>"; // integer
417                        }               
418
419                echo "\n</table>";
420        }
421}
422
423?>
424
425<form action=''>
426        <div class='buttonbereich noprint'>
427        <hr>
428                <input type='button' name='back'  value='&lt;&lt;' title='Zur&uuml;ck'  onClick='javascript:history.back()'>&nbsp;
429                <input type='button' name='print' value='Druck' title='Seite Drucken' onClick='window.print()'>&nbsp;
430                <input type='button' name='close' value='X' title='Fenster schlie&szlig;en' onClick='window.close()'>
431        </div>
432</form>
433
434<?php footer($gkz, $gmlid, $idumschalter, $idanzeige, $_SERVER['PHP_SELF']."?", $hilfeurl, "&amp;ltyp=".$ltyp , $showkey); ?>
435
436</body>
437</html>
438
Note: See TracBrowser for help on using the repository browser.