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

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