source: trunk/var/www/info/alkis/alkisfshist.php @ 123

Revision 123, 9.9 KB checked in by frank.jaeger, 12 years ago (diff)

Neue Flurstücks-Historie zur Buchauskunft, DB-Schema mit neuem Index, Konvertierungs-Scripte ohne User und Passwort

Line 
1<?php
2/*      Modul: alkisfshist.php
3
4        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
5        FlurstÃŒcks-Historie fuer ein FlurstÃŒckskennzeichen aus ALKIS PostNAS
6
7        Version:         03.11.2011  Entwurf Prototyp
8
9        Sinnvoller Einstieg als Erweiterung der Navigation (Suche in Flur, (auch) nach Hist-FS).
10        VerknÃŒpfung aus aktuellem FS zur Zeit mangels Verweis nicht möglich.
11        Oder kann man Sinvoll in einem Array-Feld suchen?
12
13        Um auch VorgÀnger eines aktuellen FlurstÃŒcks zu finden, mÃŒssten die Array-Felder mit den Verweisen
14        als echte Verbindungstabellen aufgelöst werden (als Nachprozessierung zur Konvertierung in der DB).
15
16        Ein aktuelles FS hat keine Verweise auf VorgÀnger.
17        Ein historischs FS (also MIT Raumbezug) hat keine Verweise auf VorgÀnger.
18
19        +++ Eine Geometrische VorgÀnger-Suche dazu realisieren? Oder besser Hist-Layer in Mapfile als Einstieg.
20       
21        +++ ZusÀtzlicher Parameter x/y (aus WMS-Feature-Info) als Geometriescher Einstieg fÃŒr historische FS MIT Raumbezug
22*/
23
24function fzerleg($fs) {
25/*      FlurstÃŒckskennzeichen (20) zerlegen als lesbares Format (wie im Balken):
26        Dies FS-Kennz-Format wird auch als Eingabe in der Navigation akzeptiert
27   ....*....1....*....2
28   ll    fff     nnnn
29     gggg   zzzzz    __
30*/
31        $fst=rtrim($fs,"_");   
32        $zer=substr ($fst, 2, 4)."-".ltrim(substr($fst, 6, 3), "0")."-".ltrim(substr($fst, 9, 5),"0");
33        $nenn=ltrim(substr($fst, 14), "0");
34        if ($nenn != "") {$zer.="/".$nenn;}
35        return $zer;
36}
37
38function vornach($dbarr, $gkz, $idanzeige, $showkey) {
39// Datenbank-Array-Feld zeilenweise ausgeben als Selbst-Link
40        if ($dbarr == "") {
41                echo "&nbsp;";
42        } else {
43                $stri=trim($dbarr, "{}");
44                $arr = split(",",$stri);
45                foreach($arr AS $val){
46                   echo "<a title=' zur Flurst&uuml;ck Historie' href='".$_SERVER['PHP_SELF']."?gkz=".$gkz."&amp;fskennz=".$val;
47                        if ($idanzeige) {echo "&amp;id=j";}
48                                if ($showkey)   {echo "&amp;showkey=j";}
49                        echo "'>".fzerleg($val)."</a><br>";
50                }
51        }
52        return 0;
53}
54
55session_start();
56$gkz=urldecode($_REQUEST["gkz"]);
57require_once("alkis_conf_location.php");
58if ($auth == "mapbender") {require_once($mapbender);}
59include("alkisfkt.php");
60?>
61<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
62<html>
63<head>
64        <meta name="author" content="F. Jaeger krz" >
65        <meta http-equiv="cache-control" content="no-cache">
66        <meta http-equiv="pragma" content="no-cache">
67        <meta http-equiv="expires" content="0">
68        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
69        <title>ALKIS Flurst&uuml;cks-Historie</title>
70        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
71        <link rel="shortcut icon" type="image/x-icon" href="ico/Flurstueck_Historisch.ico">
72        <style type='text/css' media='print'>
73                .noprint {visibility: hidden;}
74        </style>
75</head>
76<body>
77<?php
78$gmlid = urldecode($_REQUEST["gmlid"]);
79$fskennz = urldecode($_REQUEST["fskennz"]);
80$id = isset($_GET["id"]) ? $_GET["id"] : "n";
81if ($id == "j") {$idanzeige=true;} else {$idanzeige=false;}
82$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
83if ($keys == "j") {$showkey=true;} else {$showkey=false;}
84$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
85if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
86// if ($debug > 1) {echo "<p class='err'>DB=".$dbname.", user=".$dbuser."</p>";}
87
88// Such-Parameter bekommen? Welche?
89if ($gmlid != "") { // Ja, die GML wurde uebergeben
90        $parmtyp="GML";
91        $parmval=$gmlid;
92        $whereclause="WHERE gml_id= $1 ";
93        $v = array($gmlid);
94} else {        // Alternativ: das FlurstÃŒcks-Kennzeichen wurde ÃŒbergeben
95        if ($fskennz != "") {
96                $parmtyp="Flurst&uuml;ckskennzeichen";
97                $parmval=$fskennz;
98                $whereclause="WHERE flurstueckskennzeichen= $1 "; // hinten auffuellen mit _ auf 20 Stellen
99                $v = array($fskennz);
100        } else { // Pfui!
101                $parmtyp="";
102                echo "<p class='err'>Parameter 'gmlid' oder 'fskennz' fehlt.</p>";
103                // ++ Formular ausgeben um das FlurstÃŒckskennzeichen einzugeben?
104        }
105}
106
107if ($parmtyp != "") { // einer der beiden erlaubten FÀlle
108        // UNION-Abfrage auf 3 Àhnliche Tabellen, darin aber immr nur 1 Treffer.
109        $sqlu ="SELECT 'a' AS ftyp, gml_id, flurnummer, zaehler, nenner, amtlicheflaeche, zeitpunktderentstehung, gemarkungsnummer, null AS nach, null AS vor ";
110        $sqlu.="FROM ax_flurstueck f ".$whereclause;
111        $sqlu.="UNION ";
112        $sqlu.="SELECT 'h' AS ftyp, gml_id, flurnummer, zaehler, nenner, amtlicheflaeche, zeitpunktderentstehung, gemarkungsnummer, nachfolgerflurstueckskennzeichen AS nach, vorgaengerflurstueckskennzeichen AS vor ";
113        $sqlu.="FROM ax_historischesflurstueck h ".$whereclause;
114        $sqlu.="UNION ";
115        $sqlu.="SELECT 'o' AS ftyp, gml_id, flurnummer, zaehler, nenner, amtlicheflaeche, zeitpunktderentstehung, gemarkungsnummer, nachfolgerflurstueckskennzeichen AS nach, vorgaengerflurstueckskennzeichen AS vor ";
116        $sqlu.="FROM ax_historischesflurstueckohneraumbezug o ".$whereclause;
117       
118        // "name" (FF-Nummer) ist uneinheitlich nach derzeitigem Schema.
119        // Hier spÀter herein nehmen, wenn einheitlich als array in allen DBs und Tabellen definiert:
120        //   f.name character varying,   o.name character varying[]
121       
122        $resu = pg_prepare("", $sqlu);
123        $resu = pg_execute("", $v);
124        if ($rowu = pg_fetch_array($resu)) {
125                $ftyp=$rowu["ftyp"];
126                $gmkgnr=$rowu["gemarkungsnummer"];                 $flurnummer=$rowu["flurnummer"];
127                $flstnummer=$rowu["zaehler"];
128                $nenner=$rowu["nenner"];
129                if ($nenner > 0) {$flstnummer.="/".$nenner;} // BruchNr
130                $flae=number_format($rowu["amtlicheflaeche"],0,",",".") . " m&#178;";
131        //      $name=$rowu["name"];
132                $gemkname=$gmkgnr; // +++ JOIN auf Schluesseltabelle fehlt noch
133                $entsteh=$rowu["zeitpunktderentstehung"];
134                $vor=$rowu["vor"];
135                $nach=$rowu["nach"];
136                if ($gmlid == "") {$gmlid=$rowu["gml_id"];} // fÃŒr selbst-link-Umschalter ueber footer
137        } else {
138                if ($debug > 1) {echo "<br><p class='err'>Fehler! Kein Treffer f&uuml;r ".$parmtyp." = '".$parmval."'</p><br>";}
139                if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqlu."<br>$1=".$parmtyp." = '".$parmval."'</p>";}
140        }
141}
142
143switch ($ftyp) { // Unterschiede Historisch/Aktuell
144        case 'a':
145                $wert = "aktuell";
146                $ico= "Flurstueck.ico";
147                $cls= "kennzfs";       
148        break;
149        case 'h':
150                $wert = "historisch<br>(mit Raumbezug)";
151                $ico= "Flurstueck_Historisch.ico"; // ++ anderes Icon, wenn Geomtrie vorhanden?
152                $cls= "kennzfsh";
153        break;
154        case 'o':
155                $wert = "historisch<br>ohne Raumbezug";
156                $ico= "Flurstueck_Historisch.ico";
157                $cls= "kennzfsh";
158        break;
159        default:
160                $wert = "<b>nicht gefunden: ".$parmtyp." = '".$parmval."'</b>";
161                $ico= "Flurstueck_Historisch.ico";
162                $cls= "kennzfsh";
163        break;
164}
165 // Balken
166echo "<p class='fshis'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>\n";
167echo "\n<h2><img src='ico/".$ico."' width='16' height='16' alt=''> Flurst&uuml;ck Historie</h2>\n";
168
169echo "\n<table class='outer'>\n<tr>\n\t<td>"; // linke Seite
170        // darin Tabelle Kennzeichen         echo "\n\t<table class='".$cls."' title='Flurst&uuml;ckskennzeichen'>\n\t<tr>";
171                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>";
172                echo "\n\t<tr>\n\t\t<td title='Gemarkung'>";
173                if ($showkey) {echo "<span class='key'>".$gmkgnr."</span><br>";}
174                echo $gemkname."&nbsp;</td>";
175                echo "\n\t\t<td title='Flurnummer'>".$flurnummer."</td>";
176                echo "\n\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>\n\t</tr>";
177        echo "\n\t</table>";
178echo "\n\t</td>\n\t<td>"; // rechte Seite
179        // FS-Daten 2 Spalten
180        echo "\n\t<table class='fsd'>";
181                echo "\n\t<tr>\n\t\t<td>Entstehung</td>";
182                echo "\n\t\t<td>".$entsteh."</td>\n\t</tr>";
183        //      echo "\n\t<tr>\n\t\t<td>letz. Fortf</td>";
184        //      echo "\n\t\t<td title='Jahrgang / Fortf&uuml;hrungsnummer - Fortf&uuml;hrungsart'>".$name."</td>";
185                echo "\n\t\t<td>&nbsp;</td><td>&nbsp;</td>"; // Leer-Zeile statt FF-Nr
186                echo "\n\t</tr>";
187        echo "\n\t</table>";
188        if ($idanzeige) {linkgml($gkz, $gmlid, "Flurst&uuml;ck"); }
189echo "\n\t</td>\n</tr>\n</table>";
190echo "\n<hr>";
191//echo "\n<p class='nwlink noprint'>weitere Auskunft:</p>"; // oben rechts von der Tabelle
192
193// if ($debug > 1) {echo "<p class='err'>VOR ".$vor." NACH ".$nach."</p>";}
194
195echo "<table class='outer'>";
196        echo "\n<tr>
197                <td class='head'>Flurst&uuml;ck</td>
198                <td class='head'>Vorg&auml;nger</td>
199                <td class='head'>Nachfolger</td>
200        </tr>"; // Head
201        echo "\n<tr>\n\t<td>";
202        echo "<img src='ico/".$ico."' width='16' height='16' alt=''> ".$wert;
203        echo "<br>Fl&auml;che <span class='flae'>".$flae."</span>";
204        if ($ftyp == "a") { //Aktuell
205                echo "\n<p class='nwlink noprint'>weitere Auskunft: ";
206                        echo "<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$gmlid."&amp;eig=n";
207                                if ($idanzeige) {echo "&amp;id=j";}
208                                if ($showkey)   {echo "&amp;showkey=j";}
209                                echo "' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck ";
210                                echo "<img src='ico/Flurstueck_Link.ico' width='16' height='16' alt=''>";
211                        echo "</a>";
212        }
213        echo "</td>";
214        echo "\n\t<td>";
215        // In ax_historischesflurstueck ist vorgaenger immer leer!
216        // Man muss wohl geometrisch suchen !?
217        if ($ftyp == "h" and $vor == "") {
218                echo "Geometrische Suche<br>(noch nicht m&ouml;glich)";
219        } else {
220                vornach($vor, $gkz, $idanzeige, $showkey);
221        }
222        echo"</td>\n\t<td>";
223        vornach($nach, $gkz, $idanzeige, $showkey);
224        echo "</td>\n</tr>";
225echo "\n</table>";
226
227// TEST
228if ($debug > 1) {
229        $z=1;
230        while($rowu = pg_fetch_array($resu)) {
231                $ftyp=$rowu["ftyp"];
232                echo "<p class='err'>Mehr als EIN Eintrag gefunden: '".$ftyp."' (".$z.")</p>";
233                $z++;
234        }
235}
236?>
237
238<form action=''>
239        <div class='buttonbereich noprint'>
240        <hr>
241                <input type='button' name='back'  value='&lt;&lt;' title='Zur&uuml;ck'  onClick='javascript:history.back()'>&nbsp;
242                <input type='button' name='print' value='Druck' title='Seite Drucken' onClick='window.print()'>&nbsp;
243                <input type='button' name='close' value='X' title='Fenster schlie&szlig;en' onClick='window.close()'>
244        </div>
245</form>
246
247<?php footer($gkz, $gmlid, $idumschalter, $idanzeige, $_SERVER['PHP_SELF']."?", $hilfeurl, "&amp;eig=".$eig, $showkey); ?>
248
249</body>
250</html>
Note: See TracBrowser for help on using the repository browser.