Gemkg: '".$zgemkg."' Flur: '".$zflur."' NR: '".$zfsnr."'
";} if ($zgemkg == "") { return 0; // Gemeinden oder Gemarkungen listen } elseif ( ! is_ne_zahl($zgemkg)) { return 1; // Such Name } elseif ($zflur == "") { return 2; // G-Nr } elseif ( ! is_ne_zahl($zflur)) { echo "Die Flurnummer '".$zflur."' ist nicht numerisch
"; return 9; } elseif ($zfsnr == "") { return 3; // Flur } else { $zn=explode("/", $zfsnr, 2); $zzaehler=h_hinten(trim($zn[0])); $znenner =h_hinten(trim($zn[1])); 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.="x(st_Centroid(wkb_geometry)) AS x, "; $sqlk.="y(st_Centroid(wkb_geometry)) AS y "; } else { $sqlk.="x(st_transform(st_Centroid(wkb_geometry), ".$epsg.")) AS x, "; $sqlk.="y(st_transform(st_Centroid(wkb_geometry), ".$epsg.")) AS y "; } $sqlk.="FROM ax_flurstueck WHERE gml_id= $1 "; $v=array($gml); $resk=pg_prepare("", $sqlk); $resk=pg_execute("", $v); if (!$resk) {echo "\nFehler bei Koordinate.
";} $rowk = pg_fetch_array($resk); $koor=array("x" => $rowk["x"], "y" => $rowk["y"]); return $koor; } function zeile_gemarkung($gkgnr, $gkgname, $aktuell) { // Eine Zeile zu Gemarkung ausgeben global $con, $gkz, $gemeinde, $epsg, $gfilter; if ($gkgname == "") { // Falls Gem.-Name fehlt, in DB nachschlagen $sql ="SELECT g.gemarkungsname FROM pp_gemarkung g WHERE g.gemarkung = $1 LIMIT 1;"; $v=array($gnr); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) {echo "\nFehler bei Gemarkungsname.
";} $row = pg_fetch_array($res); $gkgname=$row["gemarkungsname"]; } if ($gkgname == "") {$gkgname = "(unbekannt)";} $gnam=htmlentities($gkgname, ENT_QUOTES, "UTF-8"); if ($aktuell) {$cls=" aktuell";} echo "\nFehler bei Gemeinde
"; #if ($debug >= 3) {echo "\n".$sql."
";} return 0; } $cnt = 0; while($row = pg_fetch_array($res)) { $gnr=$row["gemeinde"]; $gemeindename=$row["gemeindename"]; zeile_gemeinde($gnr, $gemeindename); $cnt++; } // Foot if($cnt == 0) { echo "\nKeine 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 gemarkung, gemarkungsname FROM pp_gemarkung WHERE gemeinde= $1 ORDER BY gemarkungsname LIMIT $2 ;"; $res=pg_prepare("", $sql); $res=pg_execute("", array($gkey, $linelimit)); if (!$res) { echo "\nFehler bei Gemarkungen
"; return 1; } $cnt = 0; while($row = pg_fetch_array($res)) { $gnr=$row["gemarkung"]; $gnam=$row["gemarkungsname"]; zeile_gemarkung($gnr, $gnam, false); $cnt++; } // Foot if($cnt == 0){ echo "\nKeine 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))); } else { $match = trim($fskennz)."%"; } $sql ="SELECT g.gemeinde, g.gemarkung, g.gemarkungsname, s.gemeindename "; $sql.="FROM pp_gemarkung g JOIN pp_gemeinde s ON g.gemeinde = s.gemeinde "; $sql.="WHERE g.gemarkungsname ILIKE $1 "; switch ($gfilter) { case 1: // Einzelwert $sql.="AND g.gemeinde = ".$gemeinde." "; break; case 2: // Liste $sql.="AND g.gemeinde in (".$gemeinde.") "; break; } $sql.=" ORDER BY s.gemeindename, g.gemarkungsname LIMIT $2 ;"; $v=array($match, $linelimit); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) { echo "\nFehler bei Gemarkung
"; return; } $cnt = 0; $gwgem=""; while($row = pg_fetch_array($res)) { $gemeindename=$row["gemeindename"]; if ($gwgem != $gemeindename) { // Gruppierung Gemeinde $gwgem = $gemeindename; $skey=$row["gemeinde"]; zeile_gemeinde($skey, $gemeindename, false); } $gnam=$row["gemarkungsname"]; $gnr=$row["gemarkung"]; zeile_gemarkung($gnr, $gnam, false); // wenn am Ende nur ein Treffer, dann aktuell=true $cnt++; } // Foot if($cnt == 0){ echo "\nKeine Gemarkung.
"; } elseif($cnt >= $linelimit) { echo "\n".$cnt." Gemarkungen ... und weitere
"; } elseif($cnt == 1) { // Eindeutig! return $gnr; } else { echo "\n".$cnt." Gemarkungen
"; } return; } function gg_head($gkgnr, $gkgaktuell) { // Übergeordnete Zeilen (Head) für Gemeinde und Gemarkung ausgeben // Parameter = Gemarkungsnummer $sqlh ="SELECT g.gemarkungsname, s.gemeinde, s.gemeindename FROM pp_gemarkung g "; $sqlh.="JOIN pp_gemeinde s ON g.gemeinde=s.gemeinde AND g.land=s.land "; $sqlh.="WHERE g.gemarkung = $1 ;"; $v=array($gkgnr); $resh=pg_prepare("", $sqlh); $resh=pg_execute("", $v); if (!$resh) {echo "\nFehler bei Gemeinde und Gemarkung.
";} $rowh = pg_fetch_array($resh); $gmkg=$rowh["gemarkungsname"]; $skey=$rowh["gemeinde"]; $snam=$rowh["gemeindename"]; zeile_gemeinde($skey, $snam, false); zeile_gemarkung($gkgnr, $gmkg, $gkgaktuell); return; } function EineGemarkung($AuchGemkZeile) { // Kennzeichen bestehend nur aus Gemarkung-Schlüssel wurde eingegeben // Parameter = $zgemkg global $con, $gkz, $gemeinde, $epsg, $debug, $zgemkg; $linelimit=120; // max.Fluren/Gemkg // Head if ($AuchGemkZeile) {gg_head($zgemkg, true);} // Body $sql ="SELECT gemarkungsteilflur AS flur FROM ax_gemarkungsteilflur f "; $sql.="WHERE gemarkung= $1 ORDER BY gemarkungsteilflur LIMIT $2 ;"; //WHERE f.land=? $v=array($zgemkg, $linelimit); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) {echo "\nFehler bei Flur.
";} $zfl=0; while($row = pg_fetch_array($res)) { $zflur=$row["flur"]; zeile_flur($zgemkg, $zflur, false, false); $zfl++; } // Foot if($zfl == 0) { echo "\nKeine Flur.
"; } elseif($zfl >= $linelimit) { echo "\n".$zfl." Fluren ... und weitere
"; } elseif($zfl > 1) { echo "\n".$zfl." Fluren
"; } return; } function EineFlur() { // Kennzeichen aus Gemarkung und FlurNr wurde eingegeben, dazu aktuelle Flurstücke suchen global $con, $gkz, $gemeinde, $epsg, $debug, $zgemkg, $zflur; $linelimit=600; // Wie groß kann eine Flur sein? // Head gg_head($zgemkg, false); zeile_flur($zgemkg, $zflur, true, true); // Body $sql ="SELECT f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.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 "; $sql.="ORDER BY f.zaehler, f.nenner LIMIT $3 ;"; // WHERE f.land=? $v=array($zgemkg, $zflur, $linelimit); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) {echo "\nFehler 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 "\nKein Flurstück.
"; } elseif($zfs >= $linelimit) { echo "\n".$zfs." Flurstücke... und weitere
"; } elseif($zfs > 1) { echo "\n".$zfs." Flurstücke
"; } return; } function HistFlur() { // Kennzeichen aus Gemarkung und FlurNr wurde eingegeben. // Die Flur nach historischen Flurstücken durchsuchen global $con, $gkz, $gemeinde, $epsg, $debug, $scalefs, $auskpath, $land, $zgemkg, $zflur; $linelimit=500; // Head gg_head($zgemkg, false); zeile_flur($zgemkg, $zflur, true, true); // Body $whcl.="WHERE flurstueckskennzeichen like $1 "; $sql ="SELECT 'h' AS ftyp, gml_id, zaehler, nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueck ".$whcl; $sql.="UNION SELECT 'o' AS ftyp, gml_id, zaehler, nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueckohneraumbezug ".$whcl; $sql.="ORDER BY zaehler, nenner LIMIT $2 ;"; $fskzwhere =$land.$zgemkg.str_pad($zflur, 3, "0", $STR_PAD_LEFT)."%"; $v=array($fskzwhere, $linelimit); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) {echo "\nFehler 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, $zgemkg, $zflur, false); $zfs++; } // Foot if($zfs == 0) { echo "\nKein historisches Flurstück.
"; #if ($debug > 2) {echo "SQL=
".$sql."
$1 = ".$fskzwhere."
".$zfs." historische Flurst. ... und weitere
"; } elseif($zfs > 1) { echo "\n".$zfs." historische Flurstücke
"; } return; } 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, $zgemkg, $zflur, $zzaehler, $znenner; // Head gg_head($zgemkg, false); zeile_flur($zgemkg, $zflur, true, false); // Body $sql ="SELECT f.gml_id, f.flurnummer, f.zaehler, f.nenner, "; if($epsg == "25832") { // Transform nicht notwendig $sql.="x(st_Centroid(f.wkb_geometry)) AS x, "; $sql.="y(st_Centroid(f.wkb_geometry)) AS y "; } else { $sql.="x(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS x, "; $sql.="y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y "; } $sql.="FROM ax_flurstueck f "; $sql.="WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 AND f.zaehler= $3 "; If ($znenner != "") {$sql.="AND f.nenner=".$znenner." ";} // wie prepared? $sql.="ORDER BY f.zaehler, f.nenner;"; $v=array($zgemkg, $zflur, $zzaehler); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) {echo "\nFehler bei Flurstück.
";} $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 "\nKein aktuelles Flurstück.
"; echo "\nSQL=".$sql."
WHERE=".$fskzwhere."
Fehler bei hist. Flurstück.
";} $zfs=0; while($row = pg_fetch_array($res)) { // Schleife Hist-FS $ftyp=$row["ftyp"]; $fs_gml=$row["gml_id"]; $gknr=$row["gemarkungsnummer"]; $flur=$row["flurnummer"]; $fskenn=$row["zaehler"]; $nachf=$row["nachf"]; if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} #if ($ftyp == "a") { // als aktuelles FS gefunden, das "h" war also unnötig! # $koor=flurstueckskoordinaten($fs_gml); # echo "\nFlurstück ".$fskenn." ist aktuell, nicht historisch
"; # zeile_flurstueck ($fs_gml, $fskenn, $koor["x"], $koor["y"], $gknr, $flur, true); #} else { // Historisches FS gefunden (h oder o) zeile_hist_fs($fs_gml, $fskenn, $ftyp, $gknr, $flur, true); if ($nachf == "") { echo "\nkeine Nachfolger
"; } else { echo "\nNachfolger-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." ) "; $nasql ="SELECT 'a' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_flurstueck ".$nawhcl; $nasql.="UNION SELECT 'h' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_historischesflurstueck ".$nawhcl; $nasql.="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 "\nFehler bei Nachfolger.
";} $zfsn=0; // inner Body while($narow = pg_fetch_array($nares)) { $naftyp=$narow["ftyp"]; $nagml=$narow["gml_id"]; $nagknr=$narow["gemarkungsnummer"]; $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 "\nkeine Nachfolger
"; } elseif ($zfsn > 1) { echo "\n".$zfsn." Nachfolger-Flst.
"; } echo "\nKein historisches Flurstück.
"; #if ($debug > 2) {echo "\n SQL= ".$sql."\n
$1 = FS-Kennz = '".$fskzwhere."'
kein EPSG gesetzt
";} $epsg=$gui_epsg; // Conf } if ($gemeinde == "") { $gfilter = 0; } elseif(strpos($gemeinde, ",") === false) { $gfilter = 1; // Einzelwert } else { $gfilter = 2; // Liste } if ($hist == "j") {$phist = true;} else {$phist = false;} if($gm != "") { // Self-Link aus Gemeinde-Liste $trans="Gemarkungen zur Gemeinde"; $gnr=ListGmkgInGemeinde($gm, $bez); if ($gnr > 0) { $zgemkg=$gnr; EineGemarkung(false); } } else { // Die Formular-Eingabe interpretieren (kann auch ein Link sein) $retzer=ZerlegungFsKennz($fskennz); switch ($retzer) { 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"; $zgemkg=$gnr; 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 "\nBitte ein Flurstückskennzeichen eingegeben, Format 'gggg-fff-zzzz/nnn
"; break; } } // Titel im Kopf anzeigen echo " "; ?>