"; 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 "\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 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 "\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.
";} $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 EinFlurstueck() { // Flurstückskennzeichen komplett bis zum Zaehler eingegeben // Sonderfall: bei Bruchnummer, mehrere Nenner zum Zaehler global $con, $gkz, $debug, $scalefs, $epsg, $auskpath, $zgemkg, $zflur, $zzaehler, $znenner; $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.="g.gemarkungsnummer, 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 "\nFehler 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 "\nKein Flurstück.
";} 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(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."
";} EinFlurstueck(); break; case 5: if ($debug >= 2) {echo "Gemarkung ".$zgemkg." Flur ".$zflur." Flurstück ".$zzaehler."/".$znenner."
";} EinFlurstueck(); break; case 9: echo "Bitte ein Flurstückskennzeichen eingegeben, Format 'gggg-fff-zzzz/nnn
"; break; } } ?>