source: trunk/info/info/alkis/alkisfshist.php @ 355

Revision 355, 11.2 KB checked in by frank.jaeger, 8 years ago (diff)

Grafiken in der Auskunft umgestellt von .ico auf .png

Line 
1<?php
2/*      Modul: alkisfshist.php
3
4        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
5        Flurstuecks-Historie fuer ein Flurstueckskennzeichen aus ALKIS PostNAS
6        Version:
7        2011-11-16 Zum aktuellen FS die VorgÀnger suchen
8        2011-11-17 Parameter der Functions geÀndert
9        2011-11-30 import_request_variables
10        2012-11-27 Function split deprecated: explode
11        2013-04-08 deprecated "import_request_variables" ersetzt
12        2014-09-15 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
13        2015-12-09 Austausch .ico durch .png
14*/
15
16function fzerleg($fs) {
17/*      Flurstueckskennzeichen (20) zerlegen als lesbares Format (wie im Balken):
18        Dies FS-Kennz-Format wird auch als Eingabe in der Navigation akzeptiert
19   ....*....1....*....2
20   ll    fff     nnnn
21     gggg   zzzzz    __
22*/
23        $fst=rtrim($fs,"_");   
24        $zer=substr ($fst, 2, 4)."-".ltrim(substr($fst, 6, 3), "0")."-<b>".ltrim(substr($fst, 9, 5),"0");
25        $nenn=ltrim(substr($fst, 14), "0");
26        if ($nenn != "") {$zer.="/".$nenn;}
27        $zer.="</b>";
28        return $zer;
29}
30
31function vornach($dbarr) {
32// Datenbank-Array-Feld zeilenweise ausgeben als Selbst-Link
33        global $gkz, $idanzeige, $showkey;
34        if ($dbarr == "") {
35                echo "(keine)";
36        } else {
37                $stri=trim($dbarr, "{}");
38                //$arr = split(",",$stri);
39                $arr = explode(",",$stri);
40                foreach($arr AS $val){
41                   echo "Flurst&uuml;ck <a title=' zur Flurst&uuml;ck Historie' href='".$_SERVER['PHP_SELF']."?gkz=".$gkz."&amp;fskennz=".$val;
42                        if ($idanzeige) {echo "&amp;id=j";}
43                                if ($showkey)   {echo "&amp;showkey=j";}
44                        echo "'>".fzerleg($val)."</a><br>";
45                }
46        }
47        return 0;
48}
49
50function gemkg_name($gkey) {
51// Schluessel wird uebergeben, Name in DB nachschlagen
52        global $con;
53        $sql ="SELECT bezeichnung FROM ax_gemarkung g WHERE g.gemarkungsnummer= $1 ;";
54        $v=array($gkey);
55        $res=pg_prepare("", $sql);
56        $res=pg_execute("", $v);
57        if (!$res) {echo "\n<p class='err'>Fehler bei Gemarkung.</p>";}
58        $zgmk=0;
59        while($row = pg_fetch_array($res)) { // eigentlich nur EINE
60                $gmkg=$row["bezeichnung"];
61                $zgmk++;
62        }
63        if ($zgmk == 0) {
64                echo "\n<p class='err'>Gemarkung ".$gkey." ist unbekannt.</p>";
65                return;
66        }
67        return $gmkg;
68}
69
70function such_vor_arr($fsk) {
71// Suchen der Vorgaenger zum aktuellen Flurst. Ausgabe von Selbst-Links Zeilenweise in <td>.
72// Akt. FS hat keine Verweise auf Vorgaenger. Darum in den Nachfolger-Verweisen von Hist.-FS suchen.
73// Problem: Dies sind Arrays, die nicht performant durchsucht werden koennen.
74        global $gkz, $con, $debug;
75
76        $wherecl="WHERE $1 = ANY (nachfolgerflurstueckskennzeichen) ";
77
78        // Bei kleinere Datenbanken keine spÃŒrbare Verzögerung bei Suche mit " = ANY(Array)"
79        // FÃŒr grosse BestÀnde zusÀtzlich filtern ÃŒber indizierte Felder Gemarkung + Flur?
80        // Dazu die nÀchsten 2 Zeilen aktivieren.     
81//      $wherecl.="AND gemarkungsnummer=".substr($fsk, 2, 4)." ";
82//      $wherecl.="AND flurnummer=".ltrim(substr($fsk, 6, 3), "0")." ";
83        // Frage: kann das bei Historisierung wechseln? (Umflurung, Umgemarkung). Dann ggf. Fehler (nicht gefunden)
84
85        $sqlv="SELECT 'h' AS ftyp, gml_id, flurstueckskennzeichen FROM ax_historischesflurstueck h ".$wherecl
86        ."UNION SELECT 'o' AS ftyp, gml_id, flurstueckskennzeichen FROM ax_historischesflurstueckohneraumbezug o ".$wherecl
87        ."ORDER BY flurstueckskennzeichen";
88
89        $v=array($fsk);
90        $resv = pg_prepare("", $sqlv);
91        $resv = pg_execute("", $v);
92        if (!$resv) {
93                echo "\n<p class='err'>Fehler bei Vorg&auml;nger-FS.</p>";
94                if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sqlv."<br>$1='".$fsk."'</p>";}
95        }
96        $zv=0;
97        while($rowv = pg_fetch_array($resv)) {
98                $ftyp=$rowv["ftyp"];
99                $gmlv=$rowv["gml_id"];
100                $vfsk=$rowv["flurstueckskennzeichen"];
101                echo "Flurst&uuml;ck <a title='Historie des Vorg&auml;ngerflurst&uuml;cks' href='".$_SERVER['PHP_SELF']."?gkz=".$gkz."&amp;fskennz=".$vfsk."&amp;gmlid=".$gmlv;
102                if ($idanzeige) {echo "&amp;id=j";}
103                        if ($showkey)   {echo "&amp;showkey=j";}
104                echo "'>".fzerleg($vfsk)."</a><br>";
105                $zv++;
106        }
107        if ($zv == 0) {echo "(keine)";}
108        return;
109}
110
111session_start();
112$id="n";
113$cntget = extract($_GET);
114require_once("alkis_conf_location.php");
115if ($auth == "mapbender") {require_once($mapbender);}
116include("alkisfkt.php");
117if ($id == "j") {$idanzeige=true;} else {$idanzeige=false;}
118$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
119if ($keys == "j") {$showkey=true;} else {$showkey=false;}
120?>
121<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
122<html>
123<head>
124        <meta name="author" content="b600352" >
125        <meta http-equiv="cache-control" content="no-cache">
126        <meta http-equiv="pragma" content="no-cache">
127        <meta http-equiv="expires" content="0">
128        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
129        <title>ALKIS Flurst&uuml;cks-Historie</title>
130        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
131        <link rel="shortcut icon" type="image/x-icon" href="ico/Flurstueck_Historisch.ico">
132        <style type='text/css' media='print'>
133                .noprint {visibility: hidden;}
134        </style>
135</head>
136<body>
137<?php
138$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
139if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
140// if ($debug > 1) {echo "<p class='err'>DB=".$dbname.", user=".$dbuser."</p>";}
141
142// Such-Parameter bekommen? Welche?
143if ($gmlid != "") { // Ja, die GML wurde uebergeben
144        $parmtyp="GML";
145        $parmval=$gmlid;
146        $whereclause="WHERE gml_id= $1 ";
147        $v = array($gmlid);
148} else {        // Alternativ: Flurst.-Kennz. uebergeben
149        if ($fskennz != "") {
150                $parmtyp="Flurst&uuml;ckskennzeichen";
151                $parmval=$fskennz;
152                $whereclause="WHERE flurstueckskennzeichen= $1 "; // hinten auffuellen mit _ auf 20 Stellen
153                $v = array($fskennz);
154        } else { // Pfui!
155                $parmtyp="";
156                echo "<p class='err'>Parameter 'gmlid' oder 'fskennz' fehlt.</p>";
157        }
158}
159
160if ($parmtyp != "") { // einer der beiden erlaubten FÀlle
161        // UNION-Abfrage auf 3Àhnliche Tabellen, darin aber immer nur 1 Treffer.
162
163        $felder="gml_id, flurnummer, zaehler, nenner, flurstueckskennzeichen, amtlicheflaeche, zeitpunktderentstehung, gemarkungsnummer, ";
164
165        $sqlu ="SELECT 'a' AS ftyp, ".$felder."null AS nach, null AS vor, null AS \"name\" FROM ax_flurstueck f ".$whereclause." AND f.endet IS NULL "
166        ."UNION SELECT 'h' AS ftyp, ".$felder."nachfolgerflurstueckskennzeichen AS nach, vorgaengerflurstueckskennzeichen AS vor, name FROM ax_historischesflurstueck h ".$whereclause." AND h.endet IS NULL "
167        ."UNION SELECT 'o' AS ftyp, ".$felder."nachfolgerflurstueckskennzeichen AS nach, vorgaengerflurstueckskennzeichen AS vor, name FROM ax_historischesflurstueckohneraumbezug o ".$whereclause." AND o.endet IS NULL;";
168
169        $resu = pg_prepare("", $sqlu);
170        $resu = pg_execute("", $v);
171        if ($rowu = pg_fetch_array($resu)) {
172                $ftyp=$rowu["ftyp"];
173                $gmkgnr=$rowu["gemarkungsnummer"];
174                $flurnummer=$rowu["flurnummer"];
175                $zaehler=$rowu["zaehler"];
176                $nenner=$rowu["nenner"];
177                $flstnummer=$zaehler;
178                if ($nenner > 0) {$flstnummer.="/".$nenner;} // BruchNr
179                $fskenn=$rowu["flurstueckskennzeichen"];
180                $flae=number_format($rowu["amtlicheflaeche"],0,",",".") . " m&#178;";
181                $name=$rowu["name"]; // in DB ein Array
182                $arrn=explode(",", trim($name, "{}") ); // PHP-Array
183                $gemkname= gemkg_name($gmkgnr);
184                $entsteh=$rowu["zeitpunktderentstehung"];
185                $vor=$rowu["vor"];
186                $nach=$rowu["nach"];
187                if ($gmlid == "") {$gmlid=$rowu["gml_id"];} // fuer selbst-link-Umschalter ueber footer
188        } else {
189                if ($debug > 1) {echo "<br><p class='err'>Fehler! Kein Treffer f&uuml;r ".$parmtyp." = '".$parmval."'</p><br>";}
190                if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sqlu."<br>$1=".$parmtyp." = '".$parmval."'</p>";}
191        }
192}
193
194switch ($ftyp) { // Unterschiede Hist./Aktuell
195        case 'a':
196                $wert = "aktuell";
197                $ico= "Flurstueck.png";
198                $cls= "kennzfs";       
199        break;
200        case 'h':
201                $wert = "historisch<br>(mit Raumbezug)";
202                $ico= "Flurstueck_Historisch.png"; //
203                $cls= "kennzfsh";
204        break;
205        case 'o':
206                $wert = "historisch<br>ohne Raumbezug";
207                $ico= "Flurstueck_Historisch_oR.png";
208                $cls= "kennzfsh";
209        break;
210        default:
211                $wert = "<b>nicht gefunden: ".$parmtyp." = '".$parmval."'</b>";
212                $ico= "Flurstueck_Historisch.png";
213                $cls= "kennzfsh";
214        break;
215}
216
217// Balken
218echo "<p class='fshis'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>\n";
219echo "\n<h2><img src='ico/".$ico."' width='16' height='16' alt=''> Flurst&uuml;ck Historie</h2>\n";
220
221echo "\n<table class='outer'>\n<tr>\n\t<td>"; // linke Seite
222        // darin Tabelle Kennzeichen
223        echo "\n\t<table class='".$cls."' title='Flurst&uuml;ckskennzeichen'>\n\t<tr>";
224                echo "\n\t\t<td class='head'>Gmkg</td>\n\t\t<td class='head'>Flur</td>\n\t\t<td class='head'>Flurst-Nr.</td>\n\t</tr>";
225                echo "\n\t<tr>\n\t\t<td title='Gemarkung'>";
226                if ($showkey) {echo "<span class='key'>".$gmkgnr."</span><br>";}
227                echo $gemkname."&nbsp;</td>";
228                echo "\n\t\t<td title='Flurnummer'>".$flurnummer."</td>";
229                echo "\n\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>\n\t</tr>";
230        echo "\n\t</table>";
231echo "\n\t</td>\n\t<td>"; // rechte Seite
232        // FS-Daten 2 Spalten
233        echo "\n\t<table class='fsd'>";
234                echo "\n\t<tr>\n\t\t<td>Entstehung</td>";
235                        echo "\n\t\t<td>".$entsteh."</td>";
236                echo "\n\t</tr>";
237                echo "\n\t<tr>";
238                        echo "\n\t\t<td>letz. Fortf</td>";
239                        echo "\n\t\t<td title='Jahrgang / Fortf&uuml;hrungsnummer - Fortf&uuml;hrungsart'>";
240                                foreach($arrn AS $val) { // Zeile f. jedes Element
241                                        echo trim($val, '"')."<br>";
242                                }
243                        echo "</td>";
244                echo "\n\t</tr>";
245        echo "\n\t</table>";
246        if ($idanzeige) {linkgml($gkz, $gmlid, "Flurst&uuml;ck", "ax_flurstueck"); }
247echo "\n\t</td>\n</tr>\n</table>";
248
249if ($ftyp == "a") { // Aktuell -> Historie
250        echo "\n<p class='nwlink noprint'>weitere Auskunft: ";
251                echo "<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$gmlid."&amp;eig=n";
252                        if ($idanzeige) {echo "&amp;id=j";}
253                        if ($showkey)   {echo "&amp;showkey=j";}
254                        echo "' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck ";
255                        echo "<img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''>";
256                echo "</a>";
257}
258echo "\n<hr>";
259
260echo "<table class='outer'>";
261        echo "\n<tr>
262                <td class='head'>Flurst&uuml;ck</td>
263                <td class='head'>Vorg&auml;nger</td>
264                <td class='head'>Nachfolger</td>
265        </tr>"; // Head
266       
267        // Spalte 1: F l u r s t ÃŒ c k
268        echo "\n<tr>\n\t<td>";
269                echo "<img src='ico/".$ico."' width='16' height='16' alt=''> ".$wert;
270                echo "<br>Fl&auml;che <span class='flae'>".$flae."</span>";
271        echo "</td>";
272
273        // Spalte 2: V o r g À n g e r
274        echo "\n\t<td>";
275        switch ($ftyp) { // Unterschiede Historisch/Aktuell
276                case 'a':
277                        such_vor_arr($fskenn);
278                break;
279                case 'h':
280                        if ($vor == "") {
281                                echo "Geometrische Suche<br>(noch nicht m&ouml;glich)";
282                        } else {
283                                vornach($vor);
284                        }
285                break;
286                case 'o':
287                        vornach($vor);
288                break;
289        }
290        echo"</td>";
291
292        // Spalte 3: N a c h f o l g e r
293        echo "\n\t<td>";
294                vornach($nach);
295        echo "</td>\n</tr>";
296echo "\n</table>";
297
298if ($debug > 1) {
299        $z=1;
300        while($rowu = pg_fetch_array($resu)) {
301                $ftyp=$rowu["ftyp"];
302                echo "<p class='dbg'>Mehr als EIN Eintrag gefunden: '".$ftyp."' (".$z.")</p>";
303                $z++;
304        }
305}
306?>
307
308<form action=''>
309        <div class='buttonbereich noprint'>
310        <hr>
311                <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp;
312                <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a>&nbsp;
313        </div>
314</form>
315
316<?php footer($gmlid, $_SERVER['PHP_SELF']."?", ""); ?>
317
318</body>
319</html>
Note: See TracBrowser for help on using the repository browser.