Changeset 128 for trunk/var/www/info/alkis/alkisfshist.php
- Timestamp:
- 11/16/11 15:29:32 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/var/www/info/alkis/alkisfshist.php
r123 r128 6 6 7 7 Version: 8 03.11.2011 Entwurf Prototyp 8 2011-11-03 Entwurf Prototyp 9 2011-11-16 Zum aktuellen FS die VorgÀnger suchen 9 10 10 11 Sinnvoller Einstieg als Erweiterung der Navigation (Suche in Flur, (auch) nach Hist-FS). … … 20 21 +++ Eine Geometrische VorgÀnger-Suche dazu realisieren? Oder besser Hist-Layer in Mapfile als Einstieg. 21 22 22 +++ ZusÀtzlicher Parameter x/y (aus WMS-Feature-Info) als Geometri escher Einstieg fÃŒr historische FS MIT Raumbezug23 +++ ZusÀtzlicher Parameter x/y (aus WMS-Feature-Info) als Geometrischer Einstieg fÃŒr historische FS MIT Raumbezug 23 24 */ 24 25 … … 31 32 */ 32 33 $fst=rtrim($fs,"_"); 33 $zer=substr ($fst, 2, 4)."-".ltrim(substr($fst, 6, 3), "0")."- ".ltrim(substr($fst, 9, 5),"0");34 $zer=substr ($fst, 2, 4)."-".ltrim(substr($fst, 6, 3), "0")."-<b>".ltrim(substr($fst, 9, 5),"0"); 34 35 $nenn=ltrim(substr($fst, 14), "0"); 35 36 if ($nenn != "") {$zer.="/".$nenn;} 37 $zer.="</b>"; 36 38 return $zer; 37 39 } 38 40 39 function vornach($dbarr , $gkz, $idanzeige, $showkey) {41 function vornach($dbarr) { 40 42 // Datenbank-Array-Feld zeilenweise ausgeben als Selbst-Link 43 global $gkz, $idanzeige, $showkey; 41 44 if ($dbarr == "") { 42 echo " ";45 echo "(keine)"; 43 46 } else { 44 47 $stri=trim($dbarr, "{}"); 45 48 $arr = split(",",$stri); 46 49 foreach($arr AS $val){ 47 echo " <a title=' zur Flurstück Historie' href='".$_SERVER['PHP_SELF']."?gkz=".$gkz."&fskennz=".$val;50 echo "Flurstück <a title=' zur Flurstück Historie' href='".$_SERVER['PHP_SELF']."?gkz=".$gkz."&fskennz=".$val; 48 51 if ($idanzeige) {echo "&id=j";} 49 52 if ($showkey) {echo "&showkey=j";} … … 52 55 } 53 56 return 0; 57 } 58 59 function gemkg_name($gkey) { 60 // SchlÃŒssel wird ÃŒbergeben, Name in DB nachschlagen 61 global $con; 62 $sql ="SELECT bezeichnung FROM ax_gemarkung g WHERE g.gemarkungsnummer= $1 ;"; 63 $v=array($gkey); 64 $res=pg_prepare("", $sql); 65 $res=pg_execute("", $v); 66 if (!$res) {echo "\n<p class='err'>Fehler bei Gemarkung.</p>";} 67 $zgmk=0; 68 while($row = pg_fetch_array($res)) { // eigentlich nur EINE 69 $gmkg=$row["bezeichnung"]; 70 $zgmk++; 71 } 72 if ($zgmk == 0) { 73 echo "\n<p class='err'>Gemarkung ".$gkey." ist unbekannt.</p>"; 74 return; 75 } 76 return $gmkg; 77 } 78 79 function such_vor_arr($fsk) { 80 // Suchen der VorgÀnger zum aktuellen Flurst. Ausgabe von Selbst-Links Zeilenweise in <td>. 81 // Akt. FS hat keine Verweise auf VorgÀnger. Darum in den Nachfolger-Verweisen von Hist.-FS suchen. 82 // Problem: Dies sind Arrays, die nicht performant durchsucht werden können. 83 global $gkz, $con, $debug; 84 85 $wherecl="WHERE $1 = ANY (nachfolgerflurstueckskennzeichen) "; 86 87 // Bei kleinere Datenbanken keine spÃŒrbare Verzögerung bei Suche mit " = ANY(Array)" 88 // FÃŒr grosse BestÀnde zusÀtzlich filtern ÃŒber indizierte Felder Gemarkung + Flur? 89 // Dazu die nÀchsten 2 Zeilen aktivieren. 90 // $wherecl.="AND gemarkungsnummer=".substr($fsk, 2, 4)." "; 91 // $wherecl.="AND flurnummer=".ltrim(substr($fsk, 6, 3), "0")." "; 92 // Frage: kann das bei Historisierung wechseln? (Umflurung, Umgemarkung). Dann ggf. Fehler (nicht gefunden) 93 94 $sqlv.="SELECT 'h' AS ftyp, gml_id, flurstueckskennzeichen FROM ax_historischesflurstueck h ".$wherecl; 95 $sqlv.="UNION "; 96 $sqlv.="SELECT 'o' AS ftyp, gml_id, flurstueckskennzeichen FROM ax_historischesflurstueckohneraumbezug o ".$wherecl; 97 $sqlv.="ORDER BY flurstueckskennzeichen"; 98 99 $v=array($fsk); 100 $resv = pg_prepare("", $sqlv); 101 $resv = pg_execute("", $v); 102 if (!$resv) { 103 echo "\n<p class='err'>Fehler bei Vorgänger-FS.</p>"; 104 if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sqlv."<br>$1='".$fsk."'</p>";} 105 } 106 $zv=0; 107 while($rowv = pg_fetch_array($resv)) { 108 $ftyp=$rowv["ftyp"]; 109 $gmlv=$rowv["gml_id"]; 110 $vfsk=$rowv["flurstueckskennzeichen"]; 111 echo "Flurstück <a title='Historie des Vorgängerflurstücks' href='".$_SERVER['PHP_SELF']."?gkz=".$gkz."&fskennz=".$vfsk."&gmlid=".$gmlv; 112 if ($idanzeige) {echo "&id=j";} 113 if ($showkey) {echo "&showkey=j";} 114 echo "'>".fzerleg($vfsk)."</a><br>"; 115 $zv++; 116 } 117 if ($zv == 0) {echo "(keine)";} 118 return; 54 119 } 55 120 … … 102 167 $parmtyp=""; 103 168 echo "<p class='err'>Parameter 'gmlid' oder 'fskennz' fehlt.</p>"; 104 // ++ Formular ausgeben um das FlurstÃŒckskennzeichen einzugeben?105 169 } 106 170 } 107 171 108 172 if ($parmtyp != "") { // einer der beiden erlaubten FÀlle 109 // UNION-Abfrage auf 3 Àhnliche Tabellen, darin aber immr nur 1 Treffer. 110 $sqlu ="SELECT 'a' AS ftyp, gml_id, flurnummer, zaehler, nenner, amtlicheflaeche, zeitpunktderentstehung, gemarkungsnummer, null AS nach, null AS vor "; 173 // UNION-Abfrage auf 3 Àhnliche Tabellen, darin aber immer nur 1 Treffer. 174 175 $felder="gml_id, flurnummer, zaehler, nenner, flurstueckskennzeichen, amtlicheflaeche, zeitpunktderentstehung, gemarkungsnummer, "; 176 177 $sqlu ="SELECT 'a' AS ftyp, ".$felder."null AS nach, null AS vor, null AS \"name\" "; 111 178 $sqlu.="FROM ax_flurstueck f ".$whereclause; 112 179 $sqlu.="UNION "; 113 $sqlu.="SELECT 'h' AS ftyp, gml_id, flurnummer, zaehler, nenner, amtlicheflaeche, zeitpunktderentstehung, gemarkungsnummer, nachfolgerflurstueckskennzeichen AS nach, vorgaengerflurstueckskennzeichen AS vor";180 $sqlu.="SELECT 'h' AS ftyp, ".$felder."nachfolgerflurstueckskennzeichen AS nach, vorgaengerflurstueckskennzeichen AS vor, name "; 114 181 $sqlu.="FROM ax_historischesflurstueck h ".$whereclause; 115 182 $sqlu.="UNION "; 116 $sqlu.="SELECT 'o' AS ftyp, gml_id, flurnummer, zaehler, nenner, amtlicheflaeche, zeitpunktderentstehung, gemarkungsnummer, nachfolgerflurstueckskennzeichen AS nach, vorgaengerflurstueckskennzeichen AS vor";183 $sqlu.="SELECT 'o' AS ftyp, ".$felder."nachfolgerflurstueckskennzeichen AS nach, vorgaengerflurstueckskennzeichen AS vor, name "; 117 184 $sqlu.="FROM ax_historischesflurstueckohneraumbezug o ".$whereclause; 118 185 … … 127 194 $gmkgnr=$rowu["gemarkungsnummer"]; 128 195 $flurnummer=$rowu["flurnummer"]; 129 $ flstnummer=$rowu["zaehler"];196 $zaehler=$rowu["zaehler"]; 130 197 $nenner=$rowu["nenner"]; 198 $flstnummer=$zaehler; 131 199 if ($nenner > 0) {$flstnummer.="/".$nenner;} // BruchNr 200 $fskenn=$rowu["flurstueckskennzeichen"]; 132 201 $flae=number_format($rowu["amtlicheflaeche"],0,",",".") . " m²"; 133 // $name=$rowu["name"]; 134 $gemkname=$gmkgnr; // +++ JOIN auf Schluesseltabelle fehlt noch 202 $name=$rowu["name"]; // in DB ein Array 203 $arrn = split(",", trim($name, "{}") ); // PHP-Array 204 $gemkname= gemkg_name($gmkgnr); 135 205 $entsteh=$rowu["zeitpunktderentstehung"]; 136 206 $vor=$rowu["vor"]; … … 139 209 } else { 140 210 if ($debug > 1) {echo "<br><p class='err'>Fehler! Kein Treffer für ".$parmtyp." = '".$parmval."'</p><br>";} 141 if ($debug > 2) {echo "<p class=' err'>SQL=<br>".$sqlu."<br>$1=".$parmtyp." = '".$parmval."'</p>";}211 if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sqlu."<br>$1=".$parmtyp." = '".$parmval."'</p>";} 142 212 } 143 213 } … … 151 221 case 'h': 152 222 $wert = "historisch<br>(mit Raumbezug)"; 153 $ico= "Flurstueck_Historisch.ico"; // ++ anderes Icon, wenn Geomtrie vorhanden?223 $ico= "Flurstueck_Historisch.ico"; // 154 224 $cls= "kennzfsh"; 155 225 break; 156 226 case 'o': 157 227 $wert = "historisch<br>ohne Raumbezug"; 158 $ico= "Flurstueck_Historisch .ico";228 $ico= "Flurstueck_Historisch_oR.ico"; 159 229 $cls= "kennzfsh"; 160 230 break; … … 184 254 echo "\n\t<table class='fsd'>"; 185 255 echo "\n\t<tr>\n\t\t<td>Entstehung</td>"; 186 echo "\n\t\t<td>".$entsteh."</td>\n\t</tr>"; 187 // echo "\n\t<tr>\n\t\t<td>letz. Fortf</td>"; 188 // echo "\n\t\t<td title='Jahrgang / Fortführungsnummer - Fortführungsart'>".$name."</td>"; 189 echo "\n\t\t<td> </td><td> </td>"; // Leer-Zeile statt FF-Nr 256 echo "\n\t\t<td>".$entsteh."</td>"; 257 echo "\n\t</tr>"; 258 echo "\n\t<tr>"; 259 echo "\n\t\t<td>letz. Fortf</td>"; 260 echo "\n\t\t<td title='Jahrgang / Fortführungsnummer - Fortführungsart'>"; 261 foreach($arrn AS $val) { // Zeile f. jedes Element 262 echo trim($val, '"')."<br>"; 263 } 264 echo "</td>"; 190 265 echo "\n\t</tr>"; 191 266 echo "\n\t</table>"; 192 267 if ($idanzeige) {linkgml($gkz, $gmlid, "Flurstück"); } 193 268 echo "\n\t</td>\n</tr>\n</table>"; 269 270 if ($debug > 2) {echo "<p class='dbg'>FF= ".$name."</p>";} 271 272 if ($ftyp == "a") { // Aktuell -> Historie 273 echo "\n<p class='nwlink noprint'>weitere Auskunft: "; 274 echo "<a href='alkisfsnw.php?gkz=".$gkz."&gmlid=".$gmlid."&eig=n"; 275 if ($idanzeige) {echo "&id=j";} 276 if ($showkey) {echo "&showkey=j";} 277 echo "' title='Flurstücksnachweis'>Flurstück "; 278 echo "<img src='ico/Flurstueck_Link.ico' width='16' height='16' alt=''>"; 279 echo "</a>"; 280 } 194 281 echo "\n<hr>"; 195 //echo "\n<p class='nwlink noprint'>weitere Auskunft:</p>"; // oben rechts von der Tabelle196 197 // if ($debug > 1) {echo "<p class='err'>VOR ".$vor." NACH ".$nach."</p>";}198 282 199 283 echo "<table class='outer'>"; … … 203 287 <td class='head'>Nachfolger</td> 204 288 </tr>"; // Head 289 290 // Spalte 1: F l u r s t ÃŒ c k 205 291 echo "\n<tr>\n\t<td>"; 206 echo "<img src='ico/".$ico."' width='16' height='16' alt=''> ".$wert; 207 echo "<br>Fläche <span class='flae'>".$flae."</span>"; 208 if ($ftyp == "a") { //Aktuell 209 echo "\n<p class='nwlink noprint'>weitere Auskunft: "; 210 echo "<a href='alkisfsnw.php?gkz=".$gkz."&gmlid=".$gmlid."&eig=n"; 211 if ($idanzeige) {echo "&id=j";} 212 if ($showkey) {echo "&showkey=j";} 213 echo "' title='Flurstücksnachweis'>Flurstück "; 214 echo "<img src='ico/Flurstueck_Link.ico' width='16' height='16' alt=''>"; 215 echo "</a>"; 216 } 292 echo "<img src='ico/".$ico."' width='16' height='16' alt=''> ".$wert; 293 echo "<br>Fläche <span class='flae'>".$flae."</span>"; 217 294 echo "</td>"; 295 296 // Spalte 2: V o r g À n g e r 218 297 echo "\n\t<td>"; 219 // In ax_historischesflurstueck ist vorgaenger immer leer! 220 // Man muss wohl geometrisch suchen !? 221 if ($ftyp == "h" and $vor == "") { 222 echo "Geometrische Suche<br>(noch nicht möglich)"; 223 } else { 224 vornach($vor, $gkz, $idanzeige, $showkey); 225 } 226 echo"</td>\n\t<td>"; 227 vornach($nach, $gkz, $idanzeige, $showkey); 298 switch ($ftyp) { // Unterschiede Historisch/Aktuell 299 case 'a': 300 such_vor_arr($fskenn); 301 break; 302 case 'h': 303 if ($vor == "") { 304 echo "Geometrische Suche<br>(noch nicht möglich)"; 305 } else { 306 vornach($vor); 307 } 308 break; 309 case 'o': 310 vornach($vor); 311 break; 312 } 313 echo"</td>"; 314 315 // Spalte 3: N a c h f o l g e r 316 echo "\n\t<td>"; 317 vornach($nach); 228 318 echo "</td>\n</tr>"; 229 319 echo "\n</table>"; 230 320 231 // TEST232 321 if ($debug > 1) { 233 322 $z=1; 234 323 while($rowu = pg_fetch_array($resu)) { 235 324 $ftyp=$rowu["ftyp"]; 236 echo "<p class=' err'>Mehr als EIN Eintrag gefunden: '".$ftyp."' (".$z.")</p>";325 echo "<p class='dbg'>Mehr als EIN Eintrag gefunden: '".$ftyp."' (".$z.")</p>"; 237 326 $z++; 238 327 }
Note: See TracChangeset
for help on using the changeset viewer.