Changeset 376 for trunk/mapbender/http/nav/alkisnav_fls.php
- Timestamp:
- 12/01/16 12:43:03 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/mapbender/http/nav/alkisnav_fls.php
r356 r376 1 1 <?php 2 /* Version vom 3 2013-04-16 "import_request_variables" entfÀllt in PHP 5.4, 4 Fehlerkorrektur Komma in SQL bei FS-Suche. 5 2013-04-26 Ersetzen View "gemeinde_gemarkung" durch Tabelle "pp_gemarkung" 6 ZurÃŒck-Link, Titel der Transaktion anzeigen 7 2013-04-29 Test mit IE 8 2013-05-07 Strukturierung des Programms, redundanten Code in Functions zusammen fassen 9 2013-05-14 Variablen-Namen geordnet, Hervorhebung aktuelles Objekt, Title auch auf Icon, IE zeigt sonst alt= als Title dar. 10 2013-10-15 missing Parameter 11 2014-09-03 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer 12 2014-09-15 Bei Relationen den Timestamp abschneiden, mehr "endet IS NULL" 13 2014-12-11 Fehlerbehandlung bei Eingabe ungÃŒltiger Gemarkungsnummer. Tabellen pp_gemarkung und pp_flur verwenden. 14 2015-06-11 EineFlur, Limit fÃŒr Flurstuecke von 600 auf 900 erhoeht 15 2015-12-10 Umstellen .ico auf .png, 16 Vermeidung nicht initialisierter Variable. Somit ausfÃŒhrbar mit php.ini-Einstellungen: 17 - error_reporting = E_ALL | E_STRICT 18 - display_errors = on 19 .. ohne störende Meldungen. 2 /* Navigation mit ALKIS-Daten im Mapbender 2.7 - Teil FlurstÃŒck-Suche 3 Diese Version des Programms verwendet die Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 4 5 Hinweis: In der Mapbender-Konfiguration muss die Gemeindenummer nun 3stellig mit fÃŒhrenden 0 angegeben sein. 6 7 Version vom 8 2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 9 2016-03-02 $gemeinde auf feste LÀnge korrigieren 10 2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen 20 11 */ 21 12 … … 25 16 26 17 $cntget = extract($_GET); 18 $gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); // temporÀr bei Umstellung auf norGIS, besser im Mapbender 3stellig konfigurieren. 27 19 include("../../conf/alkisnav_conf.php"); 28 20 include("alkisnav_fkt.php"); // Funktionen 29 $con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password; 30 $con = pg_connect ($con_string) or die ("Fehler bei der Verbindung zur Datenbank ".$dbname.$dbvers.$gkz); 21 $con = pg_connect ($dbconn) or die ("Fehler bei der Verbindung zur Datenbank ".$dbpre.$dbgkz); 31 22 32 23 echo <<<END 33 <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">34 <html >24 <!doctype html> 25 <html lang="de"> 35 26 <head> 36 27 <meta http-equiv="cache-control" content="no-cache"> 37 28 <meta http-equiv="pragma" content="no-cache"> 38 29 <meta http-equiv="expires" content="0"> 39 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">30 <meta charset="utf-8"> 40 31 <title>ALKIS-Suche Flurstück</title> 41 32 <link rel="stylesheet" type="text/css" href="alkisnav.css"> … … 62 53 function h_hinten($zahl) { 63 54 // Testen: Wurde an eine Zahl ein "h" angehÀngt? 64 // Wenn ja, dann Schalter setzen und nur numerischen Teil zurÃŒck geben.55 // Wenn ja, dann Schalter setzen und nur den numerischen Teil zurÃŒck geben. 65 56 global $phist, $debug; 66 57 $zahl=trim($zahl); … … 80 71 81 72 function ZerlegungFsKennz($fskennz) { 82 // Das eingegebene FlurstÃŒcks-Kennzeichen auseinander nehmen. Erwartet wird gggg-fff-zzzz/nnn 83 // Teile der Zerlegung in global-Vars "$z..." 84 global $debug, $zgemkg, $zflur, $zzaehler, $znenner; 73 // Das eingegebene FlurstÃŒcks-Kennzeichen auseinander nehmen. Erwartet wird (ll)gggg-fff-zzzz/nnn 74 // Die Teile der *Z*erlegung werden ÃŒber die Global-Variablen "$z..." allen Functions bereit gestellt. 75 // Der Returncode dieser Function steuert die weitere Verarbeitung. 76 global $debug, $land, $zgemkg4, $zgemkg6, $zflur, $zzaehler, $znenner; 85 77 $arr = explode("-", $fskennz, 4); // an den Trenn-Strichen aufteilen 86 $zgemkg=trim($arr[0]); 78 79 // Gemarkung mit oder ohne Land davor? In der Eingabe soll beides zulÀssig sein. 80 // Bei den SQL-Abfragen in der norGIS-ALKIS-Importer Datenbankstruktur werden abwechselnd beide 81 // Formate benötigt: z.B. ax_gemarkungsteilflur.gemarkung -> 4stellig, gema_shl.gemashl -> 6stellig 82 // Also gleich beide Formate vorhalten. 83 $gemkg=trim($arr[0]); 84 87 85 if (count($arr) > 1) { 88 86 $zflur=h_hinten($arr[1]); … … 96 94 $zfsnr=""; 97 95 } 98 if ($debug > 1) {echo "<p class='dbg'>Gemkg: '".$zgemkg."' Flur: '".$zflur."' NR: '".$zfsnr."'</p>";} 99 if ($zgemkg == "") { 96 if ($debug > 1) {echo "<p class='dbg'>Gemkg: '".$gemkg."' Flur: '".$zflur."' NR: '".$zfsnr."'</p>";} 97 98 if ($gemkg == "") { 100 99 return 0; // Gemeinden oder Gemarkungen listen 101 } elseif ( ! is_ne_zahl($ zgemkg)) {100 } elseif ( ! is_ne_zahl($gemkg)) { 102 101 return 1; // Such Name 103 } elseif ($zflur == "") { 104 return 2; // G-Nr 102 } 103 104 // Gemarkungs-NUMMER wurde eingegeben. Mit oder ohne Land davor? 105 if (strlen($gemkg) == 4 ) { // Eingabe ohne Land 106 $zgemkg4=$gemkg; // 4stellige Version ohne Land 107 $zgemkg6=$land.$gemkg; // 6stellige Version mit Land 108 } elseif (strlen($gemkg) == 6 ) { // Eingabe mit Land 109 $zgemkg4=substr($gemkg, 2); 110 $zgemkg6=$gemkg; 111 if (substr($gemkg, 0, 2) != $land) { // Passt Eingabe zu Conf? 112 echo "<p class='err'>Die 6-stellige Gemarkungsnummer '".$zgemkg6."' sollte mit Land '".$land."' beginnen.</p>"; 113 } 114 } else { // weder noch 115 $zgemkg4=$gemkg; // kann eigentlich nicht funktionieren 116 $zgemkg6=$gemkg; // Nullen davor setzen? 117 echo "<p class='err'>Die Gemarkungsnummer kann 4- oder 6-stellig (mit Land '".$land."') eingegeben werden.</p>"; 118 } 119 120 if ($zflur == "") { // keine Eingabe Flur-Nummer 121 return 2; // also nur Gemarkungs-Nr eingegeben 105 122 } elseif ( ! is_ne_zahl($zflur)) { 106 123 echo "<p class='err'>Die Flurnummer '".$zflur."' ist nicht numerisch</p>"; 107 124 return 9; 108 } elseif ($zfsnr == "") { 125 } elseif ($zfsnr == "") { // Flur eingegeben, aber keine FlurstÃŒcksnummer mehr 109 126 return 3; // Flur 110 127 } else { 111 $zn=explode("/", $zfsnr, 2); 128 $zn=explode("/", $zfsnr, 2); // Bruchnummer? 112 129 $zzaehler=h_hinten(trim($zn[0])); 113 130 if (count($zn) > 1) {$znenner=h_hinten(trim($zn[1]));} else {$znenner="";} … … 149 166 } 150 167 151 function zeile_gemarkung($gkgnr, $gkgname, $aktuell) { 152 // Eine Zeile zu Gemarkung ausgeben 153 global $con, $gkz, $gemeinde, $epsg, $gfilter; 154 155 if ($gkgname == "") { // Falls Gem.-Name fehlt, in DB nachschlagen 156 $sql ="SELECT g.gemarkungsname FROM pp_gemarkung g WHERE g.gemarkung = $1 LIMIT 1;"; 157 $v=array($gnr); 158 $res=pg_prepare("", $sql); 159 $res=pg_execute("", $v); 160 if (!$res) {echo "\n<p class='err'>Fehler bei Gemarkungsname.</p>";} 161 $row = pg_fetch_array($res); 162 $gkgname=$row["gemarkungsname"]; 163 } 164 165 if ($gkgname == "") {$gkgname = "(unbekannt)";} 166 $gnam=htmlentities($gkgname, ENT_QUOTES, "UTF-8"); 167 if ($aktuell) {$cls=" aktuell";} else {$cls="";} 168 169 echo "\n<div class='gk".$cls."' title='Gemarkung'>"; 170 echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.png' width='16' height='16' alt='GKG' title='Gemarkung'>"; 171 echo " OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&fskennz=".$gkgnr."'>"; 172 echo " ".$gnam."</a> (".$gkgnr.")"; 173 echo "\n</div>"; 174 return; 175 } 176 177 function zeile_flur($gkgnr, $flurnr, $histlnk, $aktuell) { // Eine Zeile zur Flur ausgeben 168 function zeile_flur($gkgnr, $flurnr, $histlnk, $aktuell) { 169 // Eine Kopf-Zeile zur Flur ausgeben 178 170 global $gkz, $gemeinde, $epsg; 171 179 172 if ($aktuell) {$cls=" aktuell";} else {$cls="";} 180 173 echo "\n<div class='fl".$cls."' title='Flur'>"; … … 182 175 $url=$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&fskennz=".$gkgnr."-".$flurnr; 183 176 echo "<a title='Aktuelle Flurstücke suchen' href='".$url."'>Flur ".$flurnr." </a>"; 177 184 178 if ($histlnk) { // Link zur Historie-Suche anbieten 185 179 echo " <a class='hislnk' title='Historische Flurstücke der Flur suchen' href='".$url."&hist=j'>Hist.</a>"; … … 217 211 218 212 function zeile_nachf_fs($gml, $gknr, $flur, $fskenn, $ftyp) { 219 // Eine Zeile fÃŒr ein Nachfolger-FlurstÃŒck eines hist. Fs. ausgeben 213 // Eine Zeile fÃŒr ein Nachfolger-FlurstÃŒck eines hist. Fs. ausgeben 220 214 global $gkz, $gemeinde, $epsg, $auskpath; 215 221 216 $fs=$gknr."-".$flur."-".$fskenn; 222 217 switch ($ftyp) { … … 250 245 251 246 function ListGemeinden() { 252 // Bei Leereingabe im Formular die Gemeindenauflisten247 // Bei Leereingabe im Formular die berechtigte(n) Gemeinde(n) auflisten 253 248 global $con, $gkz, $gemeinde, $epsg, $debug, $gfilter; 254 249 $linelimit=60; 255 250 256 $sql ="SELECT gemeinde, gemeindename FROM pp_gemeinde";251 $sql ="SELECT trim(trailing from gemshl) as gemshl, gemname FROM gem_shl "; 257 252 switch ($gfilter) { 258 253 case 1: // Einzelwert 259 $sql.="WHERE gemeinde='".$gemeinde."' "; break;254 $sql.="WHERE substring(gemshl from 6 for 3) = '".$gemeinde."' "; break; 260 255 case 2: // Liste 261 $sql.="WHERE gemeindein ('".str_replace(",", "','", $gemeinde)."') "; break;256 $sql.="WHERE substring(gemshl from 6 for 3) in ('".str_replace(",", "','", $gemeinde)."') "; break; 262 257 default: break; 263 258 } 264 $sql.=" AND endet IS NULL ORDER BY gem eindename LIMIT $1 ;";259 $sql.=" AND endet IS NULL ORDER BY gemname LIMIT $1 ;"; 265 260 $res=pg_prepare("", $sql); 266 261 $res=pg_execute("", array($linelimit)); 267 262 if (!$res) { 268 263 echo "\n<p class='err'>Fehler bei Gemeinde</p>"; 269 #if ($debug >= 3) {echo "\n<p class='dbg'>".$sql."</p>";}264 if ($debug >= 3) {echo "\n<p class='dbg'>".$sql."</p>";} // ++Nur Entw. 270 265 return 0; 271 266 } 272 267 $cnt = 0; 273 268 while($row = pg_fetch_array($res)) { 274 $gnr=$row["gem einde"];275 $gemeindename=$row["gem eindename"];269 $gnr=$row["gemshl"]; 270 $gemeindename=$row["gemname"]; 276 271 zeile_gemeinde($gnr, $gemeindename); 277 272 $cnt++; … … 299 294 300 295 // Body 301 $sql ="SELECT gema rkung, gemarkungsname FROM pp_gemarkung WHERE gemeinde= $1 ORDER BY gemarkungsnameLIMIT $2 ;";296 $sql ="SELECT gemashl, trim(trailing from gemarkung) AS gemarkung FROM gema_shl WHERE substring(gemshl from 1 for 8) = $1 ORDER BY gemarkung LIMIT $2 ;"; 302 297 $res=pg_prepare("", $sql); 303 298 $res=pg_execute("", array($gkey, $linelimit)); … … 308 303 $cnt = 0; 309 304 while($row = pg_fetch_array($res)) { 310 $gnr=$row["gema rkung"];311 $gnam=$row["gemarkung sname"];305 $gnr=$row["gemashl"]; // 6stellig 306 $gnam=$row["gemarkung"]; 312 307 zeile_gemarkung($gnr, $gnam, false); 313 308 $cnt++; … … 334 329 } else { 335 330 $match = trim($fskennz)."%"; 336 } 337 $sql ="SELECT g.gemeinde, g.gemarkung, g.gemarkungsname, s.gemeindename 338 FROM pp_gemarkung g JOIN pp_gemeinde s ON g.gemeinde=s.gemeinde WHERE g.gemarkungsname ILIKE $1 "; 331 } 332 333 // Pass auf! GemeindeschlÃŒssel ist in den beiden SchlÃŒsseltabellen linksbÃŒndig gefÃŒllt, 334 // aber unterschiedlich lang hinten mit Leerstellen aufgefÃŒllt. 335 $sql ="SELECT substring(g.gemshl from 1 for 8) AS gemshl, g.gemashl, trim(trailing from g.gemarkung) AS gemarkung, trim(trailing from s.gemname) AS gemname 336 FROM gema_shl g JOIN gem_shl s ON substring(g.gemshl from 1 for 8) = substring(s.gemshl from 1 for 8) WHERE g.gemarkung ILIKE $1 "; 337 339 338 switch ($gfilter) { 340 339 case 1: // Einzelwert 341 $sql.="AND g.gemeinde='".$gemeinde."'"; break;340 $sql.="AND substring(g.gemshl from 6 for 3)='".$gemeinde."'"; break; 342 341 case 2: // Liste 343 $sql.="AND g.gemeinde in ("."'".str_replace(",", "','", $gemeinde)."'".") "; break; 344 } 345 $sql.=" ORDER BY s.gemeindename, g.gemarkungsname LIMIT $2 ;"; 342 $sql.="AND substring(g.gemshl from 6 for 3) in ("."'".str_replace(",", "','", $gemeinde)."'".") "; break; 343 } 344 $sql.=" ORDER BY s.gemname, g.gemarkung LIMIT $2 ;"; 345 346 346 $v=array($match, $linelimit); 347 347 $res=pg_prepare("", $sql); … … 354 354 $gwgem=""; 355 355 while($row = pg_fetch_array($res)) { 356 $gemeindename=$row["gem eindename"];356 $gemeindename=$row["gemname"]; 357 357 if ($gwgem != $gemeindename) { // Gruppierung Gemeinde 358 358 $gwgem = $gemeindename; 359 $skey=$row["gem einde"];359 $skey=$row["gemshl"]; 360 360 zeile_gemeinde($skey, $gemeindename, false); 361 361 } 362 $gnam=$row["gemarkung sname"];363 $gnr=$row["gema rkung"];362 $gnam=$row["gemarkung"]; 363 $gnr=$row["gemashl"]; // 6stellig 364 364 zeile_gemarkung($gnr, $gnam, false); // wenn am Ende nur ein Treffer, dann aktuell=true 365 365 $cnt++; … … 368 368 if($cnt == 0){ 369 369 echo "\n<p class='anz'>Keine Gemarkung.</p>"; 370 if ($debug > 1) { 371 /* 372 // Nach Umstellung auf NorGIS-Struktur muss im Mapbender die Gemeinde 3stellig konfiguriert werden 373 if (strlen($gemeinde) < 3) { 374 echo "<p class='err'>URL-Parameter &gemeinde=nnn im Mapbender gazetteer_alkis.SRC muss 3stellig sein!<br>Ist aber '".$gemeinde."'.</p>"; 375 } 376 */ 377 if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = ".$match."</p>";} 378 } 370 379 } elseif($cnt >= $linelimit) { 371 380 echo "\n<p class='anz' title='Bitte eindeutiger qualifizieren'>".$cnt." Gemarkungen ... und weitere</p>"; 372 381 } elseif($cnt == 1) { // Eindeutig! 373 return $gnr; 382 return $gnr; // 6stellige Gemarkungsnummer! 374 383 } else { 375 384 echo "\n<p class='anz'>".$cnt." Gemarkungen</p>"; … … 378 387 } 379 388 380 function gg_head($gkgnr , $gkgaktuell) {381 // Kopf-Zeilen Gemeinde und Gemarkungausgeben382 // Parameter: Gemarkungsnummer , aktuell hervorzuhebende Zeile389 function gg_head($gkgnr6, $gkgaktuell) { 390 // Gemeinde und Gemarkung (G+G) Kopf-Zeilen ausgeben 391 // Parameter: Gemarkungsnummer (6stellig), aktuell hervorzuhebende Zeile 383 392 // Return: true/false ob gefunden 384 393 385 $sqlh ="SELECT g.gemarkung sname, s.gemeinde, s.gemeindename FROM pp_gemarkung g386 JOIN pp_gemeinde s ON g.gemeinde=s.gemeinde AND g.land=s.land WHERE g.gemarkung= $1 ;";387 388 $v=array($gkgnr );394 $sqlh ="SELECT g.gemarkung, substring(s.gemshl from 1 for 8) AS gemshl, trim(trailing from s.gemname) AS gemname 395 FROM gema_shl g JOIN gem_shl s ON g.gemshl=s.gemshl WHERE g.gemashl = $1 ;"; 396 397 $v=array($gkgnr6); 389 398 $resh=pg_prepare("", $sqlh); 390 399 $resh=pg_execute("", $v); … … 393 402 394 403 if ($rowh = pg_fetch_array($resh)) { 395 $gmkg=$rowh["gemarkung sname"];396 $skey=$rowh["gem einde"];397 $snam=$rowh["gem eindename"];404 $gmkg=$rowh["gemarkung"]; 405 $skey=$rowh["gemshl"]; 406 $snam=$rowh["gemname"]; 398 407 zeile_gemeinde($skey, $snam, false); 399 zeile_gemarkung($gkgnr , $gmkg, $gkgaktuell);408 zeile_gemarkung($gkgnr6, $gmkg, $gkgaktuell); 400 409 return true; 401 410 } else { 402 411 echo "\n<div class='gk' title='Gemarkung'>"; 403 412 echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.png' width='16' height='16' alt='GKG' title='Gemarkung'>"; 404 echo " Gemarkung ".$gkgnr ." nicht gefunden!\n</div>";413 echo " Gemarkung ".$gkgnr6." nicht gefunden!\n</div>"; 405 414 return false; 406 415 } … … 409 418 function EineGemarkung($AuchGemkZeile) { 410 419 // Kennzeichen bestehend nur aus Gemarkung-SchlÃŒssel wurde eingegeben 411 global $con, $gkz, $gemeinde, $epsg, $debug, $zgemkg ;420 global $con, $gkz, $gemeinde, $epsg, $debug, $zgemkg4, $zgemkg6; 412 421 $linelimit=120; // max.Fluren/Gemkg 413 422 414 423 // Head 415 424 if ($AuchGemkZeile) { // Kopf davor ausgeben 416 if (! gg_head($zgemkg , true)) {425 if (! gg_head($zgemkg6, true)) { 417 426 if ($debug >= 1) {echo "\n<p class='dbg'>Gem.-Gemkg.-Kopf abgebrochen</p>";} 418 427 return false; … … 421 430 422 431 // Body 423 // Tabelle pp_flur verwenden um nur Fluren aufzulisten, die tatsÀchlich FlurstÃŒcke enthalten 424 $sql ="SELECT flurnummer AS flur FROM pp_flur f WHERE gemarkung= $1 ORDER BY flurnummer LIMIT $2 ;"; 425 $v=array($zgemkg, $linelimit); 432 $sql ="SELECT gemarkungsteilflur AS flur FROM ax_gemarkungsteilflur f WHERE gemarkung= $1 ORDER BY gemarkungsteilflur LIMIT $2 ;"; 433 $v=array($zgemkg4, $linelimit); 426 434 $res=pg_prepare("", $sql); 427 435 $res=pg_execute("", $v); … … 431 439 while($row = pg_fetch_array($res)) { 432 440 $zflur=$row["flur"]; 433 zeile_flur($zgemkg , $zflur, false, false);441 zeile_flur($zgemkg4, $zflur, false, false); 434 442 $zfl++; 435 443 } … … 448 456 function EineFlur() { 449 457 // Kennzeichen aus Gemarkung und FlurNr wurde eingegeben, dazu aktuelle FlurstÃŒcke suchen 450 global $con, $gkz, $gemeinde, $epsg, $debug, $zgemkg , $zflur;458 global $con, $gkz, $gemeinde, $epsg, $debug, $zgemkg4, $zgemkg6, $zflur; 451 459 $linelimit=900; // Wie groà kann eine Flur sein? 452 460 453 461 // Head 454 if (gg_head($zgemkg , false)) {455 zeile_flur($zgemkg , $zflur, true, true);462 if (gg_head($zgemkg6, false)) { 463 zeile_flur($zgemkg4, $zflur, true, true); 456 464 } else { 457 465 return false; … … 467 475 $sql.="st_y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y "; 468 476 } 477 469 478 $sql.="FROM ax_flurstueck f WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 AND endet IS NULL 470 479 ORDER BY f.zaehler, f.nenner LIMIT $3 ;"; 471 $v=array($zgemkg , $zflur, $linelimit);480 $v=array($zgemkg4, $zflur, $linelimit); 472 481 $res=pg_prepare("", $sql); 473 482 $res=pg_execute("", $v); … … 495 504 496 505 function HistFlur() { 497 // Kennzeichen aus Gemarkung und FlurNr wurde eingegeben .506 // Kennzeichen aus Gemarkung und FlurNr wurde eingegeben, "h" dahinter. 498 507 // Die Flur nach historischen FlurstÃŒcken durchsuchen 499 global $con, $gkz, $gemeinde, $epsg, $debug, $scalefs, $auskpath, $land, $zgemkg , $zflur;508 global $con, $gkz, $gemeinde, $epsg, $debug, $scalefs, $auskpath, $land, $zgemkg4, $zgemkg6, $zflur; 500 509 $linelimit=500; 501 510 502 511 // Head 503 if (gg_head($zgemkg , false)) {504 zeile_flur($zgemkg , $zflur, true, true);512 if (gg_head($zgemkg6, false)) { 513 zeile_flur($zgemkg4, $zflur, true, true); 505 514 } else { 506 515 return false; … … 509 518 // Body 510 519 $whcl="WHERE flurstueckskennzeichen like $1 AND endet IS NULL "; 511 $sql ="SELECT 'h' AS ftyp, gml_id, zaehler, nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueck ".$whcl; 512 $sql.="UNION SELECT 'o' AS ftyp, gml_id, zaehler, nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueckohneraumbezug ".$whcl; 520 521 $sql ="SELECT 'h' AS ftyp, gml_id, cast(zaehler AS integer) AS zaehler, cast(nenner AS integer) AS nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueck ".$whcl; 522 $sql.="UNION SELECT 'o' AS ftyp, gml_id, cast(zaehler AS integer) AS zaehler, cast(nenner AS integer) AS nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueckohneraumbezug ".$whcl; 513 523 $sql.="ORDER BY zaehler, nenner LIMIT $2 ;"; 514 $fskzwhere =$land.$zgemkg.str_pad($zflur, 3, "0", STR_PAD_LEFT)."%"; 524 // "zaehler" und "nenner" sind in der Classic-Datenbank Integer-Werte aber in der Struktur 525 // des norGIS-ALKIS-Importers sind das Character-Strings, die linksbÃŒndig ohne fÃŒhrende Nullen gefÃŒllt sind. 526 // Der Anwender erwartet aber eine "numerische" Sortierung. 527 528 $fskzwhere=$zgemkg6.str_pad($zflur, 3, "0", STR_PAD_LEFT)."%"; 515 529 $v=array($fskzwhere, $linelimit); 516 530 $res=pg_prepare("", $sql); … … 523 537 $fskenn=$row["zaehler"]; 524 538 if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer 525 zeile_hist_fs($fs_gml, $fskenn, $ftyp, $zgemkg , $zflur, false);539 zeile_hist_fs($fs_gml, $fskenn, $ftyp, $zgemkg4, $zflur, false); 526 540 $zfs++; 527 541 } … … 542 556 // FlurstÃŒckskennzeichen wurde komplett bis zum Zaehler (oder Nenner) eingegeben 543 557 // Sonderfall: bei Bruchnummer, mehrere Nenner zum Zaehler suchen wenn kein Nenner eingegeben wurde. 544 global $con, $gkz, $debug, $epsg, $gemeinde, $fskennz, $zgemkg , $zflur, $zzaehler, $znenner;558 global $con, $gkz, $debug, $epsg, $gemeinde, $fskennz, $zgemkg4, $zgemkg6, $zflur, $zzaehler, $znenner; 545 559 546 560 // Head 547 if (gg_head($zgemkg , false)) {548 zeile_flur($zgemkg , $zflur, true, false);561 if (gg_head($zgemkg6, false)) { // Kopfzeilen: Gemeinde, Gemerkung, .. 562 zeile_flur($zgemkg4, $zflur, true, false); // .., Flur 549 563 } else { 550 564 return false; … … 561 575 } 562 576 $sql.="FROM ax_flurstueck f WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 AND f.zaehler= $3 "; 563 If ($znenner != "") {$sql.="AND f.nenner=".$znenner." ";} // wie prepared? 564 $sql.="AND endet IS NULL ORDER BY f.zaehler, f.nenner;"; 565 $v=array($zgemkg, $zflur, $zzaehler); 577 578 // If ($znenner != "") {$sql.="AND f.nenner=".$znenner." ";} 579 580 // norGIS: "zaehler" ist integer in der DB, aber "nenner" ist character, linksbÃŒndig ohne fÃŒhrende '0' 581 If ($znenner != "") { 582 $suchnenn = ltrim($znenner, '0'); 583 If ($suchnenn != "") { 584 $sql.="AND f.nenner='".$suchnenn."' "; 585 } 586 } 587 $sql.="AND endet IS NULL ORDER BY f.zaehler, cast(f.nenner AS integer);"; 588 $v=array($zgemkg4, $zflur, $zzaehler); 566 589 $res=pg_prepare("", $sql); 567 590 $res=pg_execute("", $v); 568 if (!$res) {echo "\n<p class='err'>Fehler bei Flurstück.</p>";} 591 if (!$res) { 592 echo "\n<p class='err'>Fehler bei Flurstück.</p>"; 593 if ($debug > 2) {echo "<p class='dbg'>SQL = '".$sql."'<br>Parameter $1='".$zgemkg4."' $2='".$zflur."' $3='".$zzaehler."'<p>";} 594 } 595 596 569 597 $zfs=0; 570 598 while($row = pg_fetch_array($res)) { … … 582 610 echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Historisch.png' width='16' height='16' alt='Historisches Flurstück'> "; 583 611 echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&fskennz=".$fskennz."&hist=j'>"; 584 echo $zgemkg ."-".$zflur."-".$zzaehler;612 echo $zgemkg4."-".$zflur."-".$zzaehler; 585 613 if ($znenner != "") {echo "/".$znenner;} 586 614 echo " h - suchen</a>"; … … 592 620 function HistFlurstueck() { 593 621 // Die Nachfolger-FS-Kennzeichen zu einem Historischen FS sollen recherchiert werden. 594 global $debug, $land, $zgemkg , $zflur, $zzaehler, $znenner;622 global $debug, $land, $zgemkg4, $zgemkg6, $zflur, $zzaehler, $znenner; 595 623 596 624 // Head 597 if (gg_head($zgemkg , false)) {598 zeile_flur($zgemkg , $zflur, true, false);625 if (gg_head($zgemkg6, false)) { 626 zeile_flur($zgemkg4, $zflur, true, false); 599 627 } else { 600 628 return false; … … 604 632 // Body 605 633 // Suche ueber das Flurstueckskennzeichen, gml unbekannt 606 $fskzwhere =$land.$zgemkg; // Flurst-Kennz. f. Where634 $fskzwhere=$zgemkg6; // Flurst-Kennz. f. Where 607 635 $fskzwhere.=str_pad($zflur, 3, "0", STR_PAD_LEFT); 608 636 $fskzwhere.=str_pad($zzaehler, 5, "0", STR_PAD_LEFT); … … 639 667 $ftyp=$row["ftyp"]; 640 668 $fs_gml=$row["gml_id"]; 641 $gknr=$ row["gemarkungsnummer"];669 $gknr=$land.$row["gemarkungsnummer"]; // Land davor 642 670 $flur=$row["flurnummer"]; 643 671 $fskenn=$row["zaehler"]; … … 646 674 647 675 zeile_hist_fs($fs_gml, $fskenn, $ftyp, $gknr, $flur, true); 676 648 677 if ($nachf == "") { 649 678 echo "\n<p class='anz'>keine Nachfolger</p>"; … … 659 688 $nawhcl="WHERE flurstueckskennzeichen IN ( ".$stri." ) AND endet IS NULL "; 660 689 661 $nasql ="SELECT 'a' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_flurstueck ".$nawhcl; 690 // Pass auf! Spalte zaehler hat unterschiedliches Format in den 3 Tabellen 691 $nasql ="SELECT 'a' AS ftyp, gml_id, gemarkungsnummer, flurnummer, cast(zaehler AS character varying), nenner FROM ax_flurstueck ".$nawhcl; 662 692 $nasql.="UNION SELECT 'h' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_historischesflurstueck ".$nawhcl; 663 693 $nasql.="UNION SELECT 'o' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_historischesflurstueckohneraumbezug ".$nawhcl; … … 677 707 $naftyp=$narow["ftyp"]; 678 708 $nagml=$narow["gml_id"]; 679 $nagknr=$ narow["gemarkungsnummer"];709 $nagknr=$land.$narow["gemarkungsnummer"]; // Land davor, 4 auf 6 Stellen 680 710 $naflur=$narow["flurnummer"]; 681 711 $nafskenn=$narow["zaehler"]; … … 692 722 echo "\n<hr>"; 693 723 } 694 #} // aktuell ...695 724 $zfs++; 696 725 } … … 712 741 $epsg=$gui_epsg; // Conf 713 742 } 743 744 // Filter aus Mapbender-GUI-Einbindung 714 745 if ($gemeinde == "") { 715 746 $gfilter = 0; … … 725 756 $gnr=ListGmkgInGemeinde($gm, $bez); 726 757 if ($gnr > 0) { 727 $zgemkg=$gnr; 758 $zgemkg4=$gnr; 759 $zgemkg6=$land.$zgemkg4; 728 760 EineGemarkung(false); 729 761 } … … 731 763 $retzer=ZerlegungFsKennz($fskennz); 732 764 if ($debug >= 1) {echo "\n<p class='dbg'>Return Zerlegung: ".$retzer."</p>";} 733 switch ($retzer) { // Return der Zerlegung765 switch ($retzer) { // Returnwert der Zerlegung des FS-Kennz. 734 766 case 0: // leere Eingabe 735 767 if ($gfilter == 1) { // Die GUI ist bereits auf EINE Gemeinde gefiltert … … 746 778 if ($gnr > 0) { 747 779 $trans="1 Gemarkung, Fluren dazu"; 748 $zgemkg=$gnr; 780 $zgemkg6=$gnr; 781 $zgemkg4=substr($zgemkg6, 2); 749 782 EineGemarkung(false); 750 783 }
Note: See TracChangeset
for help on using the changeset viewer.