".ltrim(substr($fst, 9, 5),"0"); $nenn=ltrim(substr($fst, 14), "0"); if ($nenn != "") {$zer.="/".$nenn;} $zer.=""; return $zer; } function vornach($dbarr) { // Datenbank-Array-Feld zeilenweise ausgeben als Selbst-Link global $gkz, $idanzeige, $showkey; if ($dbarr == "") { echo "(keine)"; } else { $stri=trim($dbarr, "{}"); $arr = split(",",$stri); foreach($arr AS $val){ echo "Flurstück ".fzerleg($val)."
"; } } return 0; } function gemkg_name($gkey) { // Schlüssel wird übergeben, Name in DB nachschlagen global $con; $sql ="SELECT bezeichnung FROM ax_gemarkung g WHERE g.gemarkungsnummer= $1 ;"; $v=array($gkey); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) {echo "\n

Fehler bei Gemarkung.

";} $zgmk=0; while($row = pg_fetch_array($res)) { // eigentlich nur EINE $gmkg=$row["bezeichnung"]; $zgmk++; } if ($zgmk == 0) { echo "\n

Gemarkung ".$gkey." ist unbekannt.

"; return; } return $gmkg; } function such_vor_arr($fsk) { // Suchen der Vorgänger zum aktuellen Flurst. Ausgabe von Selbst-Links Zeilenweise in . // Akt. FS hat keine Verweise auf Vorgänger. Darum in den Nachfolger-Verweisen von Hist.-FS suchen. // Problem: Dies sind Arrays, die nicht performant durchsucht werden können. global $gkz, $con, $debug; $wherecl="WHERE $1 = ANY (nachfolgerflurstueckskennzeichen) "; // Bei kleinere Datenbanken keine spürbare Verzögerung bei Suche mit " = ANY(Array)" // Für grosse Bestände zusätzlich filtern über indizierte Felder Gemarkung + Flur? // Dazu die nächsten 2 Zeilen aktivieren. // $wherecl.="AND gemarkungsnummer=".substr($fsk, 2, 4)." "; // $wherecl.="AND flurnummer=".ltrim(substr($fsk, 6, 3), "0")." "; // Frage: kann das bei Historisierung wechseln? (Umflurung, Umgemarkung). Dann ggf. Fehler (nicht gefunden) $sqlv.="SELECT 'h' AS ftyp, gml_id, flurstueckskennzeichen FROM ax_historischesflurstueck h ".$wherecl; $sqlv.="UNION "; $sqlv.="SELECT 'o' AS ftyp, gml_id, flurstueckskennzeichen FROM ax_historischesflurstueckohneraumbezug o ".$wherecl; $sqlv.="ORDER BY flurstueckskennzeichen"; $v=array($fsk); $resv = pg_prepare("", $sqlv); $resv = pg_execute("", $v); if (!$resv) { echo "\n

Fehler bei Vorgänger-FS.

"; if ($debug > 2) {echo "

SQL=
".$sqlv."
$1='".$fsk."'

";} } $zv=0; while($rowv = pg_fetch_array($resv)) { $ftyp=$rowv["ftyp"]; $gmlv=$rowv["gml_id"]; $vfsk=$rowv["flurstueckskennzeichen"]; echo "Flurstück ".fzerleg($vfsk)."
"; $zv++; } if ($zv == 0) {echo "(keine)";} return; } session_start(); $gkz=urldecode($_REQUEST["gkz"]); require_once("alkis_conf_location.php"); if ($auth == "mapbender") {require_once($mapbender);} include("alkisfkt.php"); ?> ALKIS Flurstücks-Historie Fehler beim Verbinden der DB

\n"; // if ($debug > 1) {echo "

DB=".$dbname.", user=".$dbuser."

";} // Such-Parameter bekommen? Welche? if ($gmlid != "") { // Ja, die GML wurde uebergeben $parmtyp="GML"; $parmval=$gmlid; $whereclause="WHERE gml_id= $1 "; $v = array($gmlid); } else { // Alternativ: das Flurstücks-Kennzeichen wurde übergeben if ($fskennz != "") { $parmtyp="Flurstückskennzeichen"; $parmval=$fskennz; $whereclause="WHERE flurstueckskennzeichen= $1 "; // hinten auffuellen mit _ auf 20 Stellen $v = array($fskennz); } else { // Pfui! $parmtyp=""; echo "

Parameter 'gmlid' oder 'fskennz' fehlt.

"; } } if ($parmtyp != "") { // einer der beiden erlaubten Fälle // UNION-Abfrage auf 3 ähnliche Tabellen, darin aber immer nur 1 Treffer. $felder="gml_id, flurnummer, zaehler, nenner, flurstueckskennzeichen, amtlicheflaeche, zeitpunktderentstehung, gemarkungsnummer, "; $sqlu ="SELECT 'a' AS ftyp, ".$felder."null AS nach, null AS vor, null AS \"name\" "; $sqlu.="FROM ax_flurstueck f ".$whereclause; $sqlu.="UNION "; $sqlu.="SELECT 'h' AS ftyp, ".$felder."nachfolgerflurstueckskennzeichen AS nach, vorgaengerflurstueckskennzeichen AS vor, name "; $sqlu.="FROM ax_historischesflurstueck h ".$whereclause; $sqlu.="UNION "; $sqlu.="SELECT 'o' AS ftyp, ".$felder."nachfolgerflurstueckskennzeichen AS nach, vorgaengerflurstueckskennzeichen AS vor, name "; $sqlu.="FROM ax_historischesflurstueckohneraumbezug o ".$whereclause; $resu = pg_prepare("", $sqlu); $resu = pg_execute("", $v); if ($rowu = pg_fetch_array($resu)) { $ftyp=$rowu["ftyp"]; $gmkgnr=$rowu["gemarkungsnummer"]; $flurnummer=$rowu["flurnummer"]; $zaehler=$rowu["zaehler"]; $nenner=$rowu["nenner"]; $flstnummer=$zaehler; if ($nenner > 0) {$flstnummer.="/".$nenner;} // BruchNr $fskenn=$rowu["flurstueckskennzeichen"]; $flae=number_format($rowu["amtlicheflaeche"],0,",",".") . " m²"; $name=$rowu["name"]; // in DB ein Array $arrn = split(",", trim($name, "{}") ); // PHP-Array $gemkname= gemkg_name($gmkgnr); $entsteh=$rowu["zeitpunktderentstehung"]; $vor=$rowu["vor"]; $nach=$rowu["nach"]; if ($gmlid == "") {$gmlid=$rowu["gml_id"];} // für selbst-link-Umschalter ueber footer } else { if ($debug > 1) {echo "

Fehler! Kein Treffer für ".$parmtyp." = '".$parmval."'


";} if ($debug > 2) {echo "

SQL=
".$sqlu."
$1=".$parmtyp." = '".$parmval."'

";} } } switch ($ftyp) { // Unterschiede Historisch/Aktuell case 'a': $wert = "aktuell"; $ico= "Flurstueck.ico"; $cls= "kennzfs"; break; case 'h': $wert = "historisch
(mit Raumbezug)"; $ico= "Flurstueck_Historisch.ico"; // $cls= "kennzfsh"; break; case 'o': $wert = "historisch
ohne Raumbezug"; $ico= "Flurstueck_Historisch_oR.ico"; $cls= "kennzfsh"; break; default: $wert = "nicht gefunden: ".$parmtyp." = '".$parmval."'"; $ico= "Flurstueck_Historisch.ico"; $cls= "kennzfsh"; break; } // Balken echo "

ALKIS Flurstück ".$gmkgnr."-".$flurnummer."-".$flstnummer." 

\n"; echo "\n

Flurstück Historie

\n"; echo "\n\n\n\t\n\t\n\n
"; // linke Seite // darin Tabelle Kennzeichen echo "\n\t\n\t"; echo "\n\t\t\n\t\t\n\t\t\n\t"; echo "\n\t\n\t\t"; echo "\n\t\t"; echo "\n\t\t\n\t"; echo "\n\t
GmkgFlurFlurst-Nr.
"; if ($showkey) {echo "".$gmkgnr."
";} echo $gemkname." 
".$flurnummer."".$flstnummer."
"; echo "\n\t
"; // rechte Seite // FS-Daten 2 Spalten echo "\n\t"; echo "\n\t\n\t\t"; echo "\n\t\t"; echo "\n\t"; echo "\n\t"; echo "\n\t\t"; echo "\n\t\t"; echo "\n\t"; echo "\n\t
Entstehung".$entsteh."
letz. Fortf"; foreach($arrn AS $val) { // Zeile f. jedes Element echo trim($val, '"')."
"; } echo "
"; if ($idanzeige) {linkgml($gkz, $gmlid, "Flurstück"); } echo "\n\t
"; if ($ftyp == "a") { // Aktuell -> Historie echo "\n
"; echo ""; echo "\n"; // Head // Spalte 1: F l u r s t ü c k echo "\n\n\t"; // Spalte 2: V o r g ä n g e r echo "\n\t"; // Spalte 3: N a c h f o l g e r echo "\n\t\n"; echo "\n
Flurstück Vorgänger Nachfolger
"; echo " ".$wert; echo "
Fläche ".$flae.""; echo "
"; switch ($ftyp) { // Unterschiede Historisch/Aktuell case 'a': such_vor_arr($fskenn); break; case 'h': if ($vor == "") { echo "Geometrische Suche
(noch nicht möglich)"; } else { vornach($vor); } break; case 'o': vornach($vor); break; } echo"
"; vornach($nach); echo "
"; if ($debug > 1) { $z=1; while($rowu = pg_fetch_array($resu)) { $ftyp=$rowu["ftyp"]; echo "

Mehr als EIN Eintrag gefunden: '".$ftyp."' (".$z.")

"; $z++; } } ?>