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

"; return 9; } elseif ($zfsnr == "") { return 3; // Flur } else { $zn=explode("/", $zfsnr, 2); $zzaehler=trim($zn[0]); $znenner=trim($zn[1]); if ( ! is_ne_zahl($zzaehler)) { echo "

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

"; return 9; } } } function ListGemeinden() { // bei Leereingabe die Gemeinden anlisten global $con, $gkz, $gemeinde, $epsg, $debug, $gfilter; $linelimit=50; $sql ="SELECT DISTINCT g.gemeinde AS key, g.bezeichnung FROM ax_gemeinde g "; $sql.="JOIN gemeinde_gemarkung v ON g.regierungsbezirk=v.regierungsbezirk AND g.kreis=v.kreis AND g.gemeinde=v.gemeinde "; // "ax_gemeinde" enthält mehrfache Gemeinde-Schluessel (Filtern regierungsbezirk, kreis) // "gemeinde_gemarkung" enthaelt nur gefüllte Gemarkungen aber Gemeinde mehrfach switch ($gfilter) { case 1: // Einzelwert $sql.="WHERE g.gemeinde=".$gemeinde." "; break; case 2: // Liste $sql.="WHERE g.gemeinde in (".$gemeinde.") "; break; default: // kein Filter break; } $sql.=" ORDER BY g.bezeichnung LIMIT $1 ;"; $res=pg_prepare("", $sql); $res=pg_execute("", array($linelimit)); if (!$res) { echo "\n

Fehler 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 "\n
"; echo "\n\t\tStadt"; echo " Gem. "; echo " ".$stadt." (".$gnr.")"; echo "\n
"; $cnt++; } if($cnt == 0){ echo "\n

Keine 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 "\n

Fehler bei Gemarkungen

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

".$sql."

";} return 0; } // Hierarchie Dokumentieren, Gemeinde-Name? echo "\n
"; echo "\n\t\tStadt"; echo " Gem. ".$bez." (".$gkey.")"; // .urldecode($bez). ?? echo "\n
"; $cnt = 0; while($row = pg_fetch_array($res)) { $gnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); $gnr=$row["gemarkungsnummer"]; echo "\n
"; echo "\n\t\tGemarkung"; echo " OT "; echo " ".$gnam." (".$gnr.")"; echo "\n
"; $cnt++; } if($cnt == 0){ echo "\n

Keine 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 "\n

Fehler 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 "\n
"; echo "\n\t\tGemarkung"; echo " OT "; echo " ".$gnam." (".$gnr.")"; switch ($gfilter) { case 0: // Kein Filter echo " ".$stadt; break; case 2: // Liste echo " ".$stadt; break; default: // Einzelwert break; } echo "\n
"; $cnt++; } if($cnt == 0){ echo "\n

Keine 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 "\n

Fehler bei Gemarkung.

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

Gemarkung"; echo " Gemarkung ".$zgemkg." ist unbekannt.

"; echo "\n
"; return; } // > 1 auch möglich? echo "\n
"; echo "\n\t\tGemarkung "; echo " OT "; echo $gmkg." (".$zgemkg.")"; // in Gemeinde? echo "\n
"; } $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 "\n

Fehler bei Flur.

";} $zfl=0; while($row = pg_fetch_array($res)) { $flur=$row["flur"]; echo "\n
"; echo "\n\t\tFlur "; echo "Flur ".$flur." "; echo "\n
"; $zfl++; } if($zfl == 0) { echo "\n

Keine Flur.

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

... und weitere

"; } return; } function EineFlur() { // Kennzeichen aus Gemarkung und FlurNr wurde eingegeben global $con, $gkz, $gemeinde, $epsg, $debug, $scalefs, $auskpath, $zgemkg, $zflur; $linelimit=600; // Wie groß kann eine Flur sein? $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 "\n

Fehler bei Gemarkung.

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

Gemarkung"; echo " Gemarkung ".$zgemkg." ist unbekannt.

"; echo "\n
"; return; } echo "\n
"; echo "\n\t\tGemarkung"; echo " OT ".$gmkg." (".$zgemkg.")"; echo "\n
"; echo "\n
"; echo "\n\t\tFlur "; echo "Flur ".$zflur.""; echo "\n
"; $sql ="SELECT f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, "; // $sql.="x(st_transform (st_centroid(f.wkb_geometry), ".$epsg.")) AS x, "; // $sql.="y(st_transform (st_centroid(f.wkb_geometry), ".$epsg.")) AS y "; 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 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 "\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"];} // Bruchnummer $x=$row["x"]; $y=$row["y"]; echo "\n
"; echo "\n\t"; echo "\n\t\tFS"; echo "\n\t "; echo "\n\tFlst.  ".$fskenn." "; echo "\n
"; $zfs++; } if($zfs == 0) { echo "\n

Kein Flurstück.

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

... und weitere

"; } return; } function EinFlurstueck() { // Flurstückskennzeichen komplett bis zum Zaehler eingegeben // Sonderfall: bei Bruchnummer, mehrere Nenner zum Zaehler global $con, $gkz, $debug, $scalefs, $epsg, $auskpath, $fskennz, $zgemkg, $zflur, $zzaehler, $znenner; $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.="g.bezeichnung "; $sql.="FROM ax_flurstueck f JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer "; $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;"; // WHERE f.land= ? $v=array($zgemkg, $zflur, $zzaehler); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) {echo "\n

Fehler bei Flurstück.

";} $zfs=0; while($row = pg_fetch_array($res)) { $fs_gml=$row["gml_id"]; $gmkg=$row["bezeichnung"]; $flur=$row["flurnummer"]; $fskenn=$row["zaehler"]; if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer $x=$row["x"]; $y=$row["y"]; echo "\n
"; echo "\n\t"; echo "\n\t\tFS"; echo "\n\t "; echo "\n\tFlst. "; echo $gmkg." ".$flur."-".$fskenn.""; echo "\n
"; $zfs++; } if($zfs == 0) { echo "\n

Kein aktuelles Flurstück.

"; // Soll in der Historie weiter gesucht werden? echo "\n
"; echo "\n\t\tHistorisches Flurstück "; echo "in Historie suchen"; echo "\n
"; } return; } function HistFlurstueck() { // Ein HISTORISCHES Flurstückskennzeichen oder Nachfolger komplett eingegeben global $con, $gkz, $debug, $scalefs, $epsg, $auskpath, $land, $zgemkg, $zflur, $zzaehler, $znenner; //++++ TEST 300 : 2769-9-5/1 // Suche ueber das Flurstueckskennzeichen, gml meist unbekannt $whcl.="WHERE flurstueckskennzeichen= $1 "; $sql ="SELECT 'a' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner, null as nachf FROM ax_flurstueck ".$whcl; $sql.="UNION SELECT 'h' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueck ".$whcl; $sql.="UNION SELECT 'o' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueckohneraumbezug ".$whcl; $fskzwhere =$land.$zgemkg; // Flurst-Kennz. f. Where $fskzwhere.=str_pad($zflur, 3, "0", $STR_PAD_LEFT); $fskzwhere.=str_pad($zzaehler, 5, "0", $STR_PAD_LEFT); if ($znenner == "") {$fskzwhere.="______";} else {$fskzwhere.=str_pad($znenner, 4, "0", $STR_PAD_LEFT)."__";} $v=array($fskzwhere); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) {echo "\n

Fehler 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 // noch die Koordinate dazu besorgen $sql ="SELECT "; if($epsg == "25832") { // Transform nicht notwendig $sql.="x(st_Centroid(wkb_geometry)) AS x, "; $sql.="y(st_Centroid(wkb_geometry)) AS y "; } else { $sql.="x(st_transform(st_Centroid(wkb_geometry), ".$epsg.")) AS x, "; $sql.="y(st_transform(st_Centroid(wkb_geometry), ".$epsg.")) AS y "; } $sql.="FROM ax_flurstueck WHERE gml_id= $1 "; $v=array($fs_gml); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) {echo "\n

Fehler bei Koordinate.

";} $zfs=0; while($row = pg_fetch_array($res)) { $x=$row["x"]; $y=$row["y"]; $zfs++; } if ($zfs == 0) {echo "\n

Kein Treffer bei Koordinate.

";} echo "\n

aktueller Nachfolger:

"; // Zeile echo "\n
"; // Icon -> Nachweis FS-Hist. in Buchauskunft echo "\n\t"; echo "\n\t\tFS"; echo "\n\t "; // Kennzeichen -> Karte positionieren echo "\n\tFlst. "; echo $gmkg." ".$flur."-".$fskenn.""; echo "\n
"; } else { // Historisches FS gefunden (h oder o) echo "\n

Historisches Flurstück:

"; // Zeile echo "\n
"; echo "\n\t"; echo "\n\t\tHist"; echo "\n\t "; echo "\n\t ".$gknr."-".$flur."-".$fskenn.""; echo "\n
"; // Nachfolger ermitteln if ($nachf == "") { echo "\n

keine Nachfolger

"; } else { echo "\n

Nachfolger-Flurstücke:

"; $stri=trim($nachf, "{}"); $arr = split(",",$stri); foreach($arr AS $val){ $fst=rtrim($val,"_"); $zer=substr ($fst, 2, 4)."-".ltrim(substr($fst, 6, 3), "0")."-".ltrim(substr($fst, 9, 5),"0"); $nenn=ltrim(substr($fst, 14), "0"); if ($nenn != "") {$zer.="/".$nenn;} // +++ besser: array in Where kennz in ( , , ) umwandeln // aktuelle FS gleich als solche anzeigen // Zeile Nachfolger echo "\n
"; // Icon -> Nachweis echo "\n\t"; echo "\n\t\tHist"; echo "\n\t "; // Kennzeichen -> weiter in die Historie hinein echo "".$zer.""; echo "\n

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

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) switch (ZerlegungFsKennz($fskennz)) { 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."

";} 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; } } ?>