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

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