Zerlegen: '".$fskennz."'
";} $arr = explode("-", $fskennz, 4); $zgemkg=trim($arr[0]); $zflur=h_hinten($arr[1]); $zfsnr=trim($arr[2]); if ($debug > 1) {echo "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 gemkg_zeile($zgemkg) { // Eine Zeile zu Gemarkung ausgeben, Schlüssel wird übergeben, Name in DB nachschlagen global $con, $gkz, $gemeinde, $epsg; $sql ="SELECT bezeichnung FROM ax_gemarkung g WHERE g.gemarkungsnummer= $1 ;"; $v=array($zgemkg); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) {echo "\nFehler bei Gemarkung.
";} $zgmk=0; while($row = pg_fetch_array($res)) { // eigentlich nur EINE $gmkg=$row["bezeichnung"]; $zgmk++; echo "\n"; echo " Gemarkung ".$zgemkg." ist unbekannt.
"; echo "\nFehler bei Gemeinde
"; if ($debug >= 3) {echo "\n".$sql."
";} return 0; } $cnt = 0; while($row = pg_fetch_array($res)) { $stadt=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); $bez=urlencode($row["bezeichnung"]); // Uebergeben an ListGmkgInGemeinde $gnr=$row["key"]; echo "\nKeine Gemeinde.
"; } elseif($cnt >= $linelimit) { echo "\n... und weitere
"; } elseif($cnt == 1) { // Eindeutig! return $gnr; } return 0; } function ListGmkgInGemeinde($gkey) { // Die (gefuellten) Gemarkungen zu einem Gemeinde-Key (aus Link) listen global $con, $gkz, $gemeinde, $epsg, $debug, $gfilter, $bez; $linelimit=70; $sql ="SELECT g.gemarkungsnummer, g.bezeichnung "; $sql.="FROM ax_gemarkung g JOIN gemeinde_gemarkung v ON g.gemarkungsnummer=v.gemarkung "; $sql.="WHERE v.gemeinde= $1 ORDER BY g.bezeichnung LIMIT $2 ;"; $res=pg_prepare("", $sql); $res=pg_execute("", array($gkey, $linelimit)); if (!$res) { echo "\nFehler bei Gemarkungen
"; if ($debug >= 3) {echo "\n".$sql."
";} return 0; } // Hierarchie Dokumentieren, Gemeinde-Name? echo "\nKeine Gemarkung.
"; } elseif($cnt >= $linelimit) { echo "\n... und weitere
"; } elseif($cnt == 1) { // Eindeutig! return $gnr; } return 0; } 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 v.gemeindename, g.gemarkungsnummer, g.bezeichnung "; $sql.="FROM ax_gemarkung g JOIN gemeinde_gemarkung v ON g.gemarkungsnummer=v.gemarkung "; $sql.="WHERE bezeichnung ILIKE $1 "; switch ($gfilter) { case 1: // Einzelwert $sql.="AND v.gemeinde=".$gemeinde." "; break; case 2: // Liste $sql.="AND v.gemeinde in (".$gemeinde.") "; break; default: // kein Filter break; } $sql.=" ORDER BY g.bezeichnung LIMIT $2 ;"; $v=array($match, $linelimit); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) { echo "\nFehler bei Gemarkung
"; if ($debug >= 3) {echo "\n".$sql."
";} return 0; } $cnt = 0; while($row = pg_fetch_array($res)) { $gnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); $gnr=$row["gemarkungsnummer"]; $stadt=$row["gemeindename"]; echo "\nKeine Gemarkung.
"; } elseif($cnt >= $linelimit) { echo "\n... und weitere
"; } elseif($cnt == 1) { // Eindeutig! return $gnr; } return 0; } function EineGemarkung($AuchGemkZeile) { // Kennzeichen bestehend nur aus Gemarkung-Schlüssel wurde eingegeben global $con, $gkz, $gemeinde, $epsg, $debug, $zgemkg; $linelimit=120; // max. Fluren je Gemarkung if ($AuchGemkZeile) { $sql ="SELECT bezeichnung FROM ax_gemarkung g WHERE g.gemarkungsnummer= $1 ;"; // WHERE f.land= ? $v=array($zgemkg); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) {echo "\nFehler bei Gemarkung.
";} $zgmk=0; while($row = pg_fetch_array($res)) { $gmkg=$row["bezeichnung"]; $zgmk++; } if ($zgmk == 0) { echo "\n"; echo " Gemarkung ".$zgemkg." ist unbekannt.
"; echo "\nFehler bei Flur.
";} $zfl=0; while($row = pg_fetch_array($res)) { $flur=$row["flur"]; echo "\nKeine Flur.
"; } elseif($cnt >= $linelimit) { echo "\n... und weitere
"; } return; } function EineFlur() { // Kennzeichen aus Gemarkung und FlurNr wurde eingegeben, dazu aktuelle Flurstücke suchen global $con, $gkz, $gemeinde, $epsg, $debug, $scalefs, $auskpath, $zgemkg, $zflur; $linelimit=600; // Wie groß kann eine Flur sein? gemkg_zeile($zgemkg); flur_zeile($zgemkg, $zflur); $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"];} // Bruchnummer $x=$row["x"]; $y=$row["y"]; echo "\nKein Flurstück.
"; } elseif($zfs >= $linelimit) { echo "\n... und weitere
"; } 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; gemkg_zeile($zgemkg); echo "\nFehler bei Historie Flur.
";} $zfs=0; // Konst. Teil d.URL (Flur), FS anhängen $flurl=$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&hist=j&fskennz=".$zgemkg."-".$zflur."-"; 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 if ($ftyp == "h") { $ico="Flurstueck_Historisch_Lnk.ico"; $titl="Historisches Flurstück"; } else { $ico="Flurstueck_Historisch_oR_Lnk.ico"; $titl="Historisches Flurstück ohne Raumbezug"; } // h: Karte Pos.? echo "\nKein historisches Flurstück.
"; if ($debug > 2) {echo "SQL=
".$sql."
$1 = ".$fskzwhere."
... und weitere
"; } return; } function EinFlurstueck() { // Flurstückskennzeichen wurde komplett bis zum Zaehler eingegeben // Sonderfall: bei Bruchnummer, mehrere Nenner zum Zaehler global $con, $gkz, $debug, $scalefs, $epsg, $auskpath, $fskennz, $zgemkg, $zflur, $zzaehler, $znenner; gemkg_zeile($zgemkg); flur_zeile($zgemkg, $zflur); $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"];} // Bruchnummer $x=$row["x"]; $y=$row["y"]; echo "\nKein aktuelles Flurstück.
"; // Soll in der Historie weiter gesucht werden? echo "\nFehler bei hist. Flurstück.
";} $zfs=0; while($row = pg_fetch_array($res)) { $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"];} // Bruchnummer if ($ftyp == "a") { // aktuelles FS gefunden, Koordinate holen // BEGINN +++ als function ? $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($fs_gml); $resk=pg_prepare("", $sqlk); $resk=pg_execute("", $v); if (!$resk) {echo "\nFehler bei Koordinate.
";} $zfsk=0; while($rowk = pg_fetch_array($resk)) { $x=$rowk["x"]; $y=$rowk["y"]; $zfsk++; } if ($zfsk == 0) {echo "\nKein Treffer bei Koordinate.
";} // ENDE +++ als function ? echo "\naktueller Nachfolger:
"; echo "\nHistorisches Flurstück:
"; if ($ftyp == "h") { $ico="Flurstueck_Historisch_Lnk.ico"; $titl="Historisches Flurstück"; } else { $ico="Flurstueck_Historisch_oR_Lnk.ico"; $titl="Historisches Flurstück ohne Raumbezug"; } // h: Karte Pos.? echo "\nkeine Nachfolger
"; } else { echo "\nNachfolger-Flurstücke:
"; // Die direkten Nachfolger ermitteln // Nachfolger in DB suchen um den Status aktuell/historisch zu ermitteln $stri=trim($nachf, "{}"); $stri="'".str_replace(",", "','", $stri)."'"; // $whcln.="WHERE flurstueckskennzeichen IN ( $1 ) "; $whcln.="WHERE flurstueckskennzeichen IN ( ".$stri." ) "; $sqln ="SELECT 'a' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_flurstueck ".$whcln; $sqln.="UNION SELECT 'h' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_historischesflurstueck ".$whcln; $sqln.="UNION SELECT 'o' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_historischesflurstueckohneraumbezug ".$whcln; // $v=array($stri); $v=array(); $resn=pg_prepare("", $sqln); $resn=pg_execute("", $v); if (!$resn) {echo "\nFehler bei Nachfolger.
";} $zfsn=0; while($rown = pg_fetch_array($resn)) { $ftypn=$rown["ftyp"]; $na_gml=$rown["gml_id"]; $gknrn=$rown["gemarkungsnummer"]; $flurn=$rown["flurnummer"]; $fskennn=$rown["zaehler"]; if ($rown["nenner"] != "") {$fskennn.="/".$rown["nenner"];} switch ($ftypn) { case "a": $ico="Flurstueck_Link.ico"; $titl="Aktuelles Flurstück"; $hisparm=""; $auskprog="alkisfsnw"; // ++ Koordinaten holen? siehe oben "als function" break; case "h": $ico="Flurstueck_Historisch_Lnk.ico"; $titl="Historisches Flurstück"; $hisparm="&hist=j"; $auskprog="alkisfshist"; break; case "o": $ico="Flurstueck_Historisch_oR_Lnk.ico"; $titl="Historisches Flurstück ohne Raumbezug"; $hisparm="&hist=j"; $auskprog="alkisfshist"; break; } $fs=$gknrn."-".$flurn."-".$fskennn; echo "\nkeine Nachfolger gefunden
"; if ($debug > 1) {echo "SQL=
".$sqln."
Liste=
".$stri."
Kein historisches Flurstück.
"; if ($debug > 2) {echo "".$sql."
";} } return; } // =========== // Start hier! // =========== if(isset($epsg)) { //if ($debug >= 2) {echo "aktueller EPSG='".$epsg."'
";} // aus MB $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]); } else { if ($debug >= 1) {echo "kein EPSG gesetzt
";} $epsg=$gui_epsg; // aus Conf } //if ($debug >= 2) {echo "Filter Gemeinde = ".$gemeinde."
";} if ($gemeinde == "") { $gfilter = 0; // ungefiltert } elseif(strpos($gemeinde, ",") === false) { $gfilter = 1; // Einzelwert } else { $gfilter = 2; // Liste } if ($hist == "j") {$phist = true;} else {$phist = false;} if(isset($gm)) { // Self-Link aus Gemeinde-Liste $gnr=ListGmkgInGemeinde($gm); // Gemarkungen zu dieser Gemeinde listen if ($gnr > 0) { $zgemkg=$gnr; EineGemarkung(false); } } else { // Die Formular-Eingabe interpretieren (kann auch ein Link sein) $retzer=ZerlegungFsKennz($fskennz); // if ($debug > 1) {echo "Return Zerlegung (case) = '".$retzer."'
";} switch ($retzer) { case 0: // leere Eingabe if ($gfilter == 1) { // Die GUI ist bereits auf eine Gemeinde gefiltert SuchGmkgName(); // Gemarkungen listen } else { ListGemeinden(); // alle Gemeinden Listen } break; case 1: if ($debug >= 2) {echo "Gemarkungsname ".$zgemkg."
";} $gnr=SuchGmkgName(); if ($gnr > 0) { $zgemkg=$gnr; EineGemarkung(false); } break; case 2: if ($debug >= 2) {echo "Gemarkungsnummer ".$zgemkg."
";} EineGemarkung(true); break; case 3: if ($debug >= 2) {echo "Gemarkung ".$zgemkg." Flur ".$zflur."
";} if ($phist) {HistFlur();} else {EineFlur();} break; case 4: if ($debug >= 2) {echo "Gemarkung ".$zgemkg." Flur ".$zflur." Flurstück ".$zzaehler."
";} if ($phist) {HistFlurstueck();} else {EinFlurstueck();} break; case 5: if ($debug >= 2) {echo "Gemarkung ".$zgemkg." Flur ".$zflur." Flurstück ".$zzaehler."/".$znenner."
";} if ($phist) {HistFlurstueck();} else {EinFlurstueck();} break; case 9: echo "Bitte ein Flurstückskennzeichen eingegeben, Format 'gggg-fff-zzzz/nnn
"; break; } } ?>