<<   END; function h_hinten($zahl) { // Testen: Wurde an eine Zahl ein "h" angehängt? // Wenn ja, dann Schalter setzen und nur den numerischen Teil zurück geben. global $phist, $debug; $zahl=trim($zahl); $zlen=strlen($zahl) - 1; if ($zlen > 0) { $hinten = ucfirst(substr($zahl, $zlen, 1)); if ($hinten == "H" ) { $vorn=trim(substr($zahl, 0, $zlen)); if (is_ne_zahl($vorn)) { // Zahl *und* "H" $zahl = $vorn; $phist = true; } } } return $zahl; } function ZerlegungFsKennz($fskennz) { // Das eingegebene Flurstücks-Kennzeichen auseinander nehmen. Erwartet wird (ll)gggg-fff-zzzz/nnn // Die Teile der *Z*erlegung werden über die Global-Variablen "$z..." allen Functions bereit gestellt. // Der Returncode dieser Function steuert die weitere Verarbeitung. global $debug, $land, $zgemkg4, $zgemkg6, $zflur, $zzaehler, $znenner; $arr = explode("-", $fskennz, 4); // an den Trenn-Strichen aufteilen // Gemarkung mit oder ohne Land davor? In der Eingabe soll beides zulässig sein. // Bei den SQL-Abfragen in der norGIS-ALKIS-Importer Datenbankstruktur werden abwechselnd beide // Formate benötigt: z.B. ax_gemarkungsteilflur.gemarkung -> 4stellig, gema_shl.gemashl -> 6stellig // Also gleich beide Formate vorhalten. $gemkg=trim($arr[0]); if (count($arr) > 1) { $zflur=h_hinten($arr[1]); if (count($arr) > 2) { $zfsnr=trim($arr[2]); } else { $zfsnr=""; } } else { $zflur=""; $zfsnr=""; } if ($debug > 1) {echo "

Gemkg: '".$gemkg."' Flur: '".$zflur."' NR: '".$zfsnr."'

";} if ($gemkg == "") { return 0; // Gemeinden oder Gemarkungen listen } elseif ( ! is_ne_zahl($gemkg)) { return 1; // Such Name } // Gemarkungs-NUMMER wurde eingegeben. Mit oder ohne Land davor? if (strlen($gemkg) == 4 ) { // Eingabe ohne Land $zgemkg4=$gemkg; // 4stellige Version ohne Land $zgemkg6=$land.$gemkg; // 6stellige Version mit Land } elseif (strlen($gemkg) == 6 ) { // Eingabe mit Land $zgemkg4=substr($gemkg, 2); $zgemkg6=$gemkg; if (substr($gemkg, 0, 2) != $land) { // Passt Eingabe zu Conf? echo "

Die 6-stellige Gemarkungsnummer '".$zgemkg6."' sollte mit Land '".$land."' beginnen.

"; } } else { // weder noch $zgemkg4=$gemkg; // kann eigentlich nicht funktionieren $zgemkg6=$gemkg; // Nullen davor setzen? echo "

Die Gemarkungsnummer kann 4- oder 6-stellig (mit Land '".$land."') eingegeben werden.

"; } if ($zflur == "") { // keine Eingabe Flur-Nummer return 2; // also nur Gemarkungs-Nr eingegeben } elseif ( ! is_ne_zahl($zflur)) { echo "

Die Flurnummer '".$zflur."' ist nicht numerisch

"; return 9; } elseif ($zfsnr == "") { // Flur eingegeben, aber keine Flurstücksnummer mehr return 3; // Flur } else { $zn=explode("/", $zfsnr, 2); // Bruchnummer? $zzaehler=h_hinten(trim($zn[0])); if (count($zn) > 1) {$znenner=h_hinten(trim($zn[1]));} else {$znenner="";} if ( ! is_ne_zahl($zzaehler)) { echo "

Flurstücksnummer '".$zzaehler."' ist nicht numerisch

"; return 9; } elseif ($znenner == "") { return 4; } elseif (is_ne_zahl($znenner)) { return 5; } else { echo "

Flurstücks-Nenner '".$znenner."' ist nicht numerisch

"; return 9; } } } function flurstueckskoordinaten($gml) { // Die Koordinaten zu einem Flurstück aus der Datenbank liefern // Parameter: gml_id des Flurstücke // Return: Array(x,y) global $epsg; $sqlk ="SELECT "; if($epsg == "25832") { // Transform nicht notwendig $sqlk.="st_x(st_Centroid(wkb_geometry)) AS x, "; $sqlk.="st_y(st_Centroid(wkb_geometry)) AS y "; } else { $sqlk.="st_x(st_transform(st_Centroid(wkb_geometry), ".$epsg.")) AS x, "; $sqlk.="st_y(st_transform(st_Centroid(wkb_geometry), ".$epsg.")) AS y "; } $sqlk.="FROM ax_flurstueck WHERE gml_id= $1 AND endet IS NULL;"; $v=array($gml); $resk=pg_prepare("", $sqlk); $resk=pg_execute("", $v); if (!$resk) {echo "\n

Fehler bei Koordinate.

";} $rowk = pg_fetch_array($resk); $koor=array("x" => $rowk["x"], "y" => $rowk["y"]); return $koor; } function zeile_flur($gkgnr, $flurnr, $histlnk, $aktuell) { // Eine Kopf-Zeile zur Flur ausgeben global $gkz, $gemeinde, $epsg; if ($aktuell) {$cls=" aktuell";} else {$cls="";} echo "\n
"; echo "\n\t\tFL "; $url=$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&fskennz=".$gkgnr."-".$flurnr; echo "Flur ".$flurnr." "; if ($histlnk) { // Link zur Historie-Suche anbieten echo " Hist."; } echo "\n
"; return; } function zeile_hist_fs($fs_gml, $fskenn, $ftyp, $gknr, $flur, $aktuell) { // Eine Zeile für ein historisches Flurstück ausgeben global $gkz, $gemeinde, $epsg, $auskpath; if ($ftyp == "h") { $ico="Flurstueck_Historisch_Lnk.png"; $titl="Historisches Flurstück"; } else { $ico="Flurstueck_Historisch_oR_Lnk.png"; $titl="Historisches Flurstück ohne Raumbezug"; } if ($aktuell) {$cls=" aktuell";} else {$cls="";} echo "\n
"; // Icon -> Buchnachweis echo "\n\t"; echo "\n\t\tHist"; echo "\n\t"; // Zeile -> tiefer in die Historie $flurl =$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&hist=j"; $flurl.="&fskennz=".$gknr."-".$flur."-"; echo "\n\thist. Flst. ".$fskenn.""; echo "\n
"; return; } function zeile_nachf_fs($gml, $gknr, $flur, $fskenn, $ftyp) { // Eine Zeile für ein Nachfolger-Flurstück eines hist. Fs. ausgeben global $gkz, $gemeinde, $epsg, $auskpath; $fs=$gknr."-".$flur."-".$fskenn; switch ($ftyp) { case "a": // eine FS-Zeile mit Link ausgeben (Einrückung css passt nicht) $koor=flurstueckskoordinaten($gml); zeile_flurstueck($gml, $fskenn, $koor["x"], $koor["y"], "", "", false); return; break; case "h": $ico="Flurstueck_Historisch_Lnk.png"; $titl="Historisches Flurstück"; $hisparm="&hist=j"; $auskprog="alkisfshist"; break; case "o": $ico="Flurstueck_Historisch_oR_Lnk.png"; $titl="Historisches Flurstück ohne Raumbezug"; $hisparm="&hist=j"; $auskprog="alkisfshist"; break; } // für die Hist.-Fälle: echo "\n
"; echo "\n\t"; echo "\n\t\tFS"; echo "\n\t "; echo "Flst. ".$fskenn.""; echo "\n
"; return; } function ListGemeinden() { // Bei Leereingabe im Formular die berechtigte(n) Gemeinde(n) auflisten global $con, $gkz, $gemeinde, $epsg, $debug, $gfilter; $linelimit=60; $sql ="SELECT trim(trailing from gemshl) as gemshl, gemname FROM gem_shl "; switch ($gfilter) { case 1: // Einzelwert $sql.="WHERE substring(gemshl from 6 for 3) = '".$gemeinde."' "; break; case 2: // Liste $sql.="WHERE substring(gemshl from 6 for 3) in ('".str_replace(",", "','", $gemeinde)."') "; break; default: break; } $sql.="ORDER BY gemname LIMIT $1 ;"; $res=pg_prepare("", $sql); $res=pg_execute("", array($linelimit)); if (!$res) { echo "\n

Fehler bei Gemeinde

"; if ($debug >= 3) {echo "\n

".$sql."

";} // ++Nur Entw. return 0; } $cnt = 0; while($row = pg_fetch_array($res)) { $gnr=$row["gemshl"]; $gemeindename=$row["gemname"]; zeile_gemeinde($gnr, $gemeindename, false); $cnt++; } // Foot if($cnt == 0) { echo "\n

Keine Gemeinde.

"; } elseif($cnt >= $linelimit) { echo "\n

".$cnt." Gemeinden ... und weitere

"; } elseif($cnt == 1) { // Eindeutig! return $gnr; } else { echo "\n

".$cnt." Gemeinden

"; } return; } function ListGmkgInGemeinde($gkey, $bez) { // Die Gemarkungen zu einem Gemeinde-Key (aus Link) listen global $con, $gkz, $gemeinde, $epsg, $debug, $gfilter; $linelimit=70; // Head zeile_gemeinde($gkey, $bez, true); // Body $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 ;"; $res=pg_prepare("", $sql); $res=pg_execute("", array($gkey, $linelimit)); if (!$res) { echo "\n

Fehler bei Gemarkungen

"; return 1; } $cnt = 0; while($row = pg_fetch_array($res)) { $gnr=$row["gemashl"]; // 6stellig $gnam=$row["gemarkung"]; zeile_gemarkung($gnr, $gnam, false); $cnt++; } // Foot if($cnt == 0){ echo "\n

Keine Gemarkung.

"; } elseif($cnt >= $linelimit) { echo "\n

".$cnt." Gemarkungen ... und weitere

"; } elseif($cnt == 1) { // Eindeutig! return $gnr; } else { echo "\n

".$cnt." Gemarkungen

"; } return; } function SuchGmkgName() { // Gemarkung suchen nach Name(-nsanfang) global $con, $gkz, $gemeinde, $epsg, $debug, $fskennz, $gfilter; $linelimit=120; if(preg_match("/\*/",$fskennz)){ $match = trim(preg_replace("/\*/i","%", strtoupper($fskennz))); // Durchsuchte Namenspalte ist rechts mit Leerstellen aufgefüllt. Darum Wildcard am Ende erzwingen. if (substr($match, strlen($match), 1) != "%") {$match.="%";} } else { $match = trim($fskennz)."%"; } // Pass auf! Gemeindeschlüssel ist in den beiden Schlüsseltabellen linksbündig gefüllt, // aber unterschiedlich lang hinten mit Leerstellen aufgefüllt. $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 " ."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 "; switch ($gfilter) { case 1: // Einzelwert $sql.="AND substring(g.gemshl from 6 for 3)='".$gemeinde."'"; break; case 2: // Liste $sql.="AND substring(g.gemshl from 6 for 3) in ("."'".str_replace(",", "','", $gemeinde)."'".") "; break; } $sql.=" ORDER BY s.gemname, g.gemarkung LIMIT $2 ;"; $v=array($match, $linelimit); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Gemarkung

"; return; } $cnt = 0; $gwgem=""; while($row = pg_fetch_array($res)) { $gemeindename=$row["gemname"]; if ($gwgem != $gemeindename) { // Gruppierung Gemeinde $gwgem = $gemeindename; $skey=$row["gemshl"]; zeile_gemeinde($skey, $gemeindename, false); } $gnam=$row["gemarkung"]; $gnr=$row["gemashl"]; // 6stellig zeile_gemarkung($gnr, $gnam, false); // wenn am Ende nur ein Treffer, dann aktuell=true $cnt++; } // Foot if($cnt == 0){ echo "\n

Keine Gemarkung.

"; if ($debug > 1) { /* // Nach Umstellung auf NorGIS-Struktur muss im Mapbender die Gemeinde 3stellig konfiguriert werden if (strlen($gemeinde) < 3) { echo "

URL-Parameter &gemeinde=nnn im Mapbender gazetteer_alkis.SRC muss 3stellig sein!
Ist aber '".$gemeinde."'.

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

SQL=
".$sql."
$1 = ".$match."

";} } } elseif($cnt >= $linelimit) { echo "\n

".$cnt." Gemarkungen ... und weitere

"; } elseif($cnt == 1) { // Eindeutig! return $gnr; // 6stellige Gemarkungsnummer! } else { echo "\n

".$cnt." Gemarkungen

"; } return; } function gg_head($gkgnr6, $gkgaktuell) { // Gemeinde und Gemarkung (G+G) Kopf-Zeilen ausgeben // Parameter: Gemarkungsnummer (6stellig), aktuell hervorzuhebende Zeile // Return: true/false ob gefunden $sqlh ="SELECT g.gemarkung, substring(s.gemshl from 1 for 8) AS gemshl, trim(trailing from s.gemname) AS gemname FROM gema_shl g JOIN gem_shl s ON g.gemshl=s.gemshl WHERE g.gemashl = $1 ;"; $v=array($gkgnr6); $resh=pg_prepare("", $sqlh); $resh=pg_execute("", $v); if (!$resh) {echo "\n

Fehler bei Gemeinde und Gemarkung.

";} if ($rowh = pg_fetch_array($resh)) { $gmkg=$rowh["gemarkung"]; $skey=$rowh["gemshl"]; $snam=$rowh["gemname"]; zeile_gemeinde($skey, $snam, false); zeile_gemarkung($gkgnr6, $gmkg, $gkgaktuell); return true; } else { echo "\n
"; echo "\n\t\tGKG"; echo " Gemarkung ".$gkgnr6." nicht gefunden!\n
"; return false; } } function EineGemarkung($AuchGemkZeile) { // Kennzeichen bestehend nur aus Gemarkung-Schlüssel wurde eingegeben global $con, $gkz, $gemeinde, $epsg, $debug, $zgemkg4, $zgemkg6; $linelimit=120; // max.Fluren/Gemkg // Head if ($AuchGemkZeile) { // Kopf davor ausgeben if (! gg_head($zgemkg6, true)) { if ($debug >= 1) {echo "\n

Gem.-Gemkg.-Kopf abgebrochen

";} return false; } } // Body $sql ="SELECT gemarkungsteilflur AS flur FROM ax_gemarkungsteilflur f WHERE gemarkung= $1 ORDER BY gemarkungsteilflur LIMIT $2 ;"; $v=array($zgemkg4, $linelimit); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) {echo "\n

Fehler bei Flur.

";} $zfl=0; while($row = pg_fetch_array($res)) { $zflur=$row["flur"]; zeile_flur($zgemkg4, $zflur, false, false); $zfl++; } // Foot if($zfl == 0) { echo "\n

Keine Flur.

"; } elseif($zfl >= $linelimit) { echo "\n

".$zfl." Fluren ... und weitere

"; } elseif($zfl > 1) { echo "\n

".$zfl." Fluren

"; } return true; } function EineFlur() { // Kennzeichen aus Gemarkung und FlurNr wurde eingegeben, dazu aktuelle Flurstücke suchen global $con, $gkz, $gemeinde, $epsg, $debug, $zgemkg4, $zgemkg6, $zflur; $linelimit=900; // Wie groß kann eine Flur sein? // Head if (gg_head($zgemkg6, false)) { zeile_flur($zgemkg4, $zflur, true, true); } else { return false; } // Body $sql ="SELECT f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeindezugehoerigkeit_gemeinde, "; if($epsg == "25832") { // Transform nicht notwendig $sql.="st_x(st_Centroid(f.wkb_geometry)) AS x, "; $sql.="st_y(st_Centroid(f.wkb_geometry)) AS y "; } else { $sql.="st_x(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS x, "; $sql.="st_y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y "; } $sql.="FROM ax_flurstueck f WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 AND endet IS NULL " ."ORDER BY cast(f.zaehler AS integer), f.nenner LIMIT $3 ;"; $v=array($zgemkg4, $zflur, $linelimit); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) {echo "\n

Fehler bei Flur.

";} $zfs=0; while($row = pg_fetch_array($res)) { $fs_gml=$row["gml_id"]; $flur=$row["flurnummer"]; $fskenn=$row["zaehler"]; if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} zeile_flurstueck($fs_gml, $fskenn, $row["x"], $row["y"], "", "", false); $zfs++; } // Flur-Foot if($zfs == 0) { echo "\n

Kein Flurstück.

"; } elseif($zfs >= $linelimit) { echo "\n

".$zfs." Flurstücke... und weitere

"; } elseif($zfs > 1) { echo "\n

".$zfs." Flurstücke

"; } return true; } function HistFlur() { // Kennzeichen aus Gemarkung und FlurNr wurde eingegeben, "h" dahinter. // Die Flur nach historischen Flurstücken durchsuchen global $con, $gkz, $gemeinde, $epsg, $debug, $scalefs, $auskpath, $land, $zgemkg4, $zgemkg6, $zflur; $linelimit=500; // Head if (gg_head($zgemkg6, false)) { zeile_flur($zgemkg4, $zflur, true, true); } else { return false; } // Body $whcl="WHERE flurstueckskennzeichen like $1 AND endet IS NULL "; $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 ."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 ."ORDER BY zaehler, nenner LIMIT $2 ;"; $fskzwhere=$zgemkg6.str_pad($zflur, 3, "0", STR_PAD_LEFT)."%"; $v=array($fskzwhere, $linelimit); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) {echo "\n

Fehler bei Historie Flur.

";} $zfs=0; while($row = pg_fetch_array($res)) { $ftyp=$row["ftyp"]; $fs_gml=$row["gml_id"]; // fuer Buchausk. $fskenn=$row["zaehler"]; if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer zeile_hist_fs($fs_gml, $fskenn, $ftyp, $zgemkg4, $zflur, false); $zfs++; } // Foot if($zfs == 0) { echo "\n

Kein historisches Flurstück.

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

SQL=
".$sql."
$1 = ".$fskzwhere."

";} } elseif ($zfs >= $linelimit) { echo "\n

".$zfs." historische Flurst. ... und weitere

"; } elseif($zfs > 1) { echo "\n

".$zfs." historische Flurstücke

"; } return true; } function EinFlurstueck() { // Flurstückskennzeichen wurde komplett bis zum Zaehler (oder Nenner) eingegeben // Sonderfall: bei Bruchnummer, mehrere Nenner zum Zaehler suchen wenn kein Nenner eingegeben wurde. global $con, $gkz, $debug, $epsg, $gemeinde, $fskennz, $zgemkg4, $zgemkg6, $zflur, $zzaehler, $znenner; // Head if (gg_head($zgemkg6, false)) { // Kopfzeilen: Gemeinde, Gemarkung, .. zeile_flur($zgemkg4, $zflur, true, false); // .., Flur } else { return false; } // Body $sql ="SELECT f.gml_id, f.flurnummer, f.zaehler, f.nenner, "; if($epsg == "25832") { // Transform nicht notwendig $sql.="st_x(st_Centroid(f.wkb_geometry)) AS x, "; $sql.="st_y(st_Centroid(f.wkb_geometry)) AS y "; } else { $sql.="st_x(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS x, "; $sql.="st_y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y "; } $sql.="FROM ax_flurstueck f WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 AND f.zaehler= $3 "; If ($znenner != "") { $suchnenn = ltrim($znenner, '0'); If ($suchnenn != "") { $sql.="AND f.nenner='".$suchnenn."' "; } } $sql.="AND endet IS NULL ORDER BY cast(f.zaehler AS integer), cast(f.nenner AS integer);"; $v=array($zgemkg4, $zflur, $zzaehler); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Flurstück.

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

SQL = '".$sql."'
Parameter $1='".$zgemkg4."' $2='".$zflur."' $3='".$zzaehler."'

";} } $zfs=0; while($row = pg_fetch_array($res)) { $fs_gml=$row["gml_id"]; $flur=$row["flurnummer"]; $fskenn=$row["zaehler"]; if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} zeile_flurstueck($fs_gml, $fskenn, $row["x"], $row["y"], "", "", true); $zfs++; } // Foot if($zfs == 0) { echo "\n

Kein aktuelles Flurstück.

"; echo "\n
"; echo "\n\t\tHistorisches Flurstück "; echo ""; echo $zgemkg4."-".$zflur."-".$zzaehler; if ($znenner != "") {echo "/".$znenner;} echo " h - suchen"; echo "\n
"; } return true; } function HistFlurstueck() { // Die Nachfolger-FS-Kennzeichen zu einem Historischen FS sollen recherchiert werden. global $debug, $land, $zgemkg4, $zgemkg6, $zflur, $zzaehler, $znenner; // Head if (gg_head($zgemkg6, false)) { zeile_flur($zgemkg4, $zflur, true, false); } else { return false; } echo "\n
"; // Body // Suche ueber das Flurstueckskennzeichen, gml unbekannt $fskzwhere=$zgemkg6; // Flurst-Kennz. f. Where $fskzwhere.=str_pad($zflur, 3, "0", STR_PAD_LEFT); $fskzwhere.=str_pad($zzaehler, 5, "0", STR_PAD_LEFT); if ($znenner == "") { // Wenn kein Nenner angegeben wurde, //wird mit Wildcard und like nach allen Nennern gesucht. $fskzwhere.="____\_\_"; // für like $whereop=" like "; // Das Wildcard-Zeichen "_" ist mit Zeichen im Feldinhalt identisch // "___" = hier kann auch ein Nenner stehen, "\_\_" hier müssen tatsächlich __ stehen. // WARNUNG: nicht standardkonforme Verwendung von Escape in Zeichenkettenkonstante // z.B.: like '05265600400145____\_\_' } else { // Ein Nenner wurde angegeben $fskzwhere.=str_pad($znenner, 4, "0", STR_PAD_LEFT)."__"; $whereop=" = "; } $whcl="WHERE flurstueckskennzeichen ".$whereop." $1 AND endet IS NULL "; $fldlist=" AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner, "; // NICHT in aktuell suchen wenn explizit historisch gesucht wird $sql ="SELECT 'h'".$fldlist."nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueck ".$whcl ."UNION SELECT 'o'".$fldlist."nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueckohneraumbezug ".$whcl; $v=array($fskzwhere); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) { echo "\n

Fehler bei historischem Flurstück.

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

SQL = '".$sql."'
Parameter: ".$fskzwhere."

";} return true; } $zfs=0; while($row = pg_fetch_array($res)) { // Schleife Hist-FS $ftyp=$row["ftyp"]; $fs_gml=$row["gml_id"]; $gknr=$land.$row["gemarkungsnummer"]; // Land davor $flur=$row["flurnummer"]; $fskenn=$row["zaehler"]; $nachf=$row["nachf"]; if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} zeile_hist_fs($fs_gml, $fskenn, $ftyp, $gknr, $flur, true); if ($nachf == "") { echo "\n

keine Nachfolger

"; } else { echo "\n

Nachfolger-Flurstücke:

"; // Direkte Nachfolger ermitteln. In $nachf steht ein Array von FS-Kennzeichen. // Von den einzelnen Kennz. ist unbekannt, ob diese noch aktuell sind // oder auch schon wieder historisch. // Nachfolger in DB suchen um den Status aktuell/historisch zu ermitteln $stri=trim($nachf, "{}"); $stri="'".str_replace(",", "','", $stri)."'"; $nawhcl="WHERE flurstueckskennzeichen IN ( ".$stri." ) AND endet IS NULL "; $nasql ="SELECT 'a' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_flurstueck ".$nawhcl ."UNION SELECT 'h' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_historischesflurstueck ".$nawhcl ."UNION SELECT 'o' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_historischesflurstueckohneraumbezug ".$nawhcl; $v=array(); $nares=pg_prepare("", $nasql); $nares=pg_execute("", $v); if (!$nares) { echo "\n

Fehler bei Nachfolger.

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

SQL = '".$nasql."'

";} return; } $zfsn=0; // inner Body while($narow = pg_fetch_array($nares)) { $naftyp=$narow["ftyp"]; $nagml=$narow["gml_id"]; $nagknr=$land.$narow["gemarkungsnummer"]; // Land davor, 4 auf 6 Stellen $naflur=$narow["flurnummer"]; $nafskenn=$narow["zaehler"]; if ($narow["nenner"] != "") {$nafskenn.="/".$narow["nenner"];} zeile_nachf_fs ($nagml, $nagknr, $naflur, $nafskenn, $naftyp); $zfsn++; } // inner Footer if ($zfsn == 0) { echo "\n

keine Nachfolger

"; } elseif ($zfsn > 1) { echo "\n

".$zfsn." Nachfolger-Flst.

"; } echo "\n
"; } $zfs++; } // Foot if($zfs == 0) { echo "\n

Kein historisches Flurstück.

"; #if ($debug > 2) {echo "\n

SQL= ".$sql."\n
$1 = FS-Kennz = '".$fskzwhere."'

";} } return; } // =========== // Start hier! // =========== if ($debug >= 1) {echo "\n

gemeinde='".$gemeinde."'. gfilter='".$gfilter."'

";} // Validation: Eingabefeld aus Formular. // Suchbegriff (Gemarkungsname) oder Flurstücks-Kennzeichen (ll)gggg-fff-zzzz/nnn (11). // Hier formatierte Meldung und html-Foot. if (isset($fskennz) and $fskennz != "" ) { if (!preg_match('#^[0-9a-zA-ZäöüÄÖÜß* -/]{1,25}$#', $fskennz)) { echo "

Eingabe unzulässig!

"; $fskennz=""; } } else { $fskennz=""; } if($gm != "") { // Self-Link aus Gemeinde-Liste $trans="Gemarkungen zur Gemeinde"; $gnr=ListGmkgInGemeinde($gm, $bez); if ($gnr > 0) { $zgemkg4=$gnr; $zgemkg6=$land.$zgemkg4; EineGemarkung(false); } } else { // Die Formular-Eingabe interpretieren (kann auch ein Link sein) $retzer=ZerlegungFsKennz($fskennz); if ($debug >= 1) {echo "\n

Return Zerlegung: ".$retzer."

";} switch ($retzer) { // Returnwert der Zerlegung des FS-Kennz. case 0: // leere Eingabe if ($gfilter == 1) { // Die GUI ist bereits auf EINE Gemeinde gefiltert $trans="Liste der Gemarkungen"; SuchGmkgName(); } else { $trans="Liste der Gemeinden"; ListGemeinden(); } break; case 1: $trans="Suche Gemarkungsname"; $gnr=SuchGmkgName(); if ($gnr > 0) { $trans="1 Gemarkung, Fluren dazu"; $zgemkg6=$gnr; $zgemkg4=substr($zgemkg6, 2); EineGemarkung(false); } break; case 2: $trans="Fluren in Gemarkung"; EineGemarkung(true); break; case 3: if ($phist) { $trans="historische Flurst. in Flur"; HistFlur(); } else { $trans="Flurstücke in Flur"; EineFlur(); } break; case 4: if ($phist) { $trans="historisches Flurstück"; HistFlurstueck(); } else { $trans="Flurstück"; EinFlurstueck(); } break; case 5: if ($phist) { $trans="historisches Flurstück"; HistFlurstueck(); } else { $trans="Flurstück"; EinFlurstueck(); } break; case 9: $trans="falsche Eingabe"; echo "\n

Bitte ein Flurstückskennzeichen eingegeben, Format 'gggg-fff-zzzz/nnn

"; break; } } // Nach Durchlaufen des PHP-Scriptes die zuletzt ausgeführte Transaktion im Kopf des Ergebnisrahmens anzeigen. // Dazu die im HTML-Header definierte Javascript-Function benutzen. // Alternativ wird auch aus dem Javascript "positionieren Karte" dieser Titel gesetzt. echo " "; ?>