in .css grau hinterlegen - Umschalter (gleiches Modul) anders darstellen als Links zu anderen Nachweisen - Parameter zum Umschalten mit/ohne Bodenschätzung? - Bessere Differenzierung bei den Nutzungsarten (Tabelle dafür aufbauen) */ session_start(); $eig="n"; $showkey="n"; $nodebug=""; // Var. initalisieren $cntget = extract($_GET); // alle Parameter in Variable umwandeln // strikte Validierung aller Parameter if (isset($gmlid)) { if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} $fskennz=''; } else { // Alternativ $gmlid=''; if (isset($fskennz)) { // llgggg-fff-11111/222 oder z.B.'052647002001910013__' oder '05264700200012______' if (!preg_match('#^[0-9\-_/]{8,20}$#', $fskennz)) {die ("Eingabefehler fskennz");} } else { $fskennz=''; } } if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} if (!preg_match('#^[j|n]{0,1}$#', $eig)) {die("Eingabefehler eig");} if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");} if ($showkey == "j") {$showkey=true;} else {$showkey=false;} // "j"/"n" als boolean umwandeln, ist praktischer abzufragen, wird oft gebraucht if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");} require_once("alkis_conf_location.php"); if ($auth == "mapbender") {require_once($mapbender);} include("alkisfkt.php"); ?> ALKIS Flurstücksnachweis Fehler beim Verbinden der DB

"; // Ein Flurstücks-Kennzeichen wurde alternativ zur gml_id übermittelt if ($fskennz != '') { $arr=explode("-", $fskennz, 4); // zerlegen $zgemkg=trim($arr[0]); if (strlen($zgemkg) == 20 and !isset($arr[1])) { $fskzdb=$zgemkg; // Datenbank-Feldformat } else { // Format "llgggg-fff-nnnn/zz.nn" oder "gggg-ff-nnn/zz" // Das Kennzeichen auseinander nehmen. if (strlen($zgemkg) == 6) { $land=substr($zgemkg, 0, 2); $zgemkg=substr($zgemkg, 2, 4); } else { // kein schöner Land .. $land=$defland; // Default-Land aus config } $zflur=str_pad($arr[1], 3 , "0", STR_PAD_LEFT); // Flur-Nr $zfsnr=trim($arr[2]); // Flurstücke-Nr $zn=explode("/", $zfsnr, 2); // Bruch? $zzaehler=str_pad(trim($zn[0]), 5 , "0", STR_PAD_LEFT); if (isset($zn[1])) { $znenner=trim($zn[1]); } else { $znenner=""; } if (trim($znenner, " 0.") == "") { // kein Bruch oder nur Nullen $znenner="____"; // in DB-Spalte mit Tiefstrich aufgefüllt } else { $zn=explode(".", $znenner, 2); // .00 wegwerfen $znenner=str_pad($zn[0], 4 , "0", STR_PAD_LEFT); } // nun die Teile stellengerecht wieder zusammen setzen $fskzdb=$land.$zgemkg.$zflur.$zzaehler.$znenner.'__'; // FS-Kennz. Format Datenbank } // Spalte "flurstueckskennzeichen" ist in DB indiziert // Format z.B.'052647002001910013__' oder '05264700200012______' $sql ="SELECT gml_id FROM ax_flurstueck WHERE flurstueckskennzeichen= $1 AND endet IS NULL ;"; $v = array($fskzdb); $res = pg_prepare("", $sql); $res = pg_execute("", $v); if ($row = pg_fetch_assoc($res)) { $gmlid=$row["gml_id"]; } else { echo "\n

Fehler! Kein Treffer für Flurstückskennzeichen='".$fskennz."' (".$fskzdb.")

"; echo "

Kennzeichen veraltet? Suche in der Flurstücks-Historie

"; echo "\n\n"; return; } pg_free_result($res); } // F L U R S T U E C K m. Gebiet $sql ="SELECT f.name, f.flurnummer, f.zaehler, f.nenner, f.regierungsbezirk, f.kreis, f.gemeinde, f.amtlicheflaeche, st_area(f.wkb_geometry) AS fsgeomflae, to_char(cast(f.zeitpunktderentstehung AS date),'DD.MM.YYYY') AS zeitpunktderentstehung, f.istgebucht, g.gemarkungsnummer, g.bezeichnung, r.bezeichnung AS rbez, k.bezeichnung AS kbez, m.bezeichnung AS mbez FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer LEFT JOIN ax_regierungsbezirk r ON f.regierungsbezirk=r.regierungsbezirk LEFT JOIN ax_kreisregion k ON f.regierungsbezirk=k.regierungsbezirk AND f.kreis=k.kreis LEFT JOIN ax_gemeinde m ON m.regierungsbezirk=f.regierungsbezirk AND m.kreis=f.kreis AND m.gemeinde=f.gemeinde WHERE f.gml_id= $1 AND f.endet IS NULL AND g.endet IS NULL AND m.endet IS NULL AND k.endet IS NULL AND r.endet IS NULL;"; $v = array($gmlid); // mit gml_id suchen $res = pg_prepare("", $sql); $res = pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Flurstuecksdaten

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

SQL=
".htmlentities($sql, ENT_QUOTES, "UTF-8")."
$1 = gml_id = '".$gmlid."'

";} } if ($row = pg_fetch_assoc($res)) { $gemkname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); $gmkgnr=$row["gemarkungsnummer"]; $bezirk=$row["regierungsbezirk"]; $rbez=htmlentities($row["rbez"], ENT_QUOTES, "UTF-8"); $kreis=$row["kreis"]; $kbez=htmlentities($row["kbez"], ENT_QUOTES, "UTF-8"); $gemeinde=$row["gemeinde"]; $mbez=htmlentities($row["mbez"], ENT_QUOTES, "UTF-8"); $flurnummer=$row["flurnummer"]; $zaehler=$row["zaehler"]; $nenner=$row["nenner"]; $flstnummer=$zaehler; if ($nenner > 0) {$flstnummer.="/".$nenner;} // BruchNr $fsbuchflae=$row["amtlicheflaeche"]; // amtliche Fl. aus DB-Feld $fsgeomflae=$row["fsgeomflae"]; // aus Geometrie ermittelte Fläche $the_Xfactor = $fsbuchflae / $fsgeomflae; // Multiplikator zur Umrechnung geometrische Abschnittsflächen in Buchfläche $fsbuchflaed=number_format($fsbuchflae,0,",",".") . " m²"; // Display-Format dazu $fsgeomflaed=number_format($fsgeomflae,0,",",".") . " m²"; $entsteh=$row["zeitpunktderentstehung"]; $gml_buchungsstelle=$row["istgebucht"]; // wird erst im GB-Teil benötigt $name=$row["name"]; // Fortfuehrungsnummer(n) $arrn = explode(",", trim($name, "{}") ); // PHP-Array } else { echo "\n

Fehler! Kein Treffer für Flurstück mit gml_id=".$gmlid."

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

SQL=
".htmlentities($sql, ENT_QUOTES, "UTF-8")."
$1 = gml_id = '".$gmlid."'

";} echo "\n\n"; return; } pg_free_result($res); if ($eig=="j") { // Balken echo "

ALKIS Flurstück ".$gmkgnr."-".$flurnummer."-".$flstnummer." 

" ."\n\n

Flurstück mit Eigentümer

"; } else { echo "

ALKIS Flurstück ".$gmkgnr."-".$flurnummer."-".$flstnummer." 

" ."\n\n

Flurstück

"; } // Prüfung der Gebiets-Berechtigung bei gemeinsam genutzten Datenbanken (Kreis und Gemeinde) // Für das gkz (z.B. aus dem Mapfile-Namen) wird in der Konfiguration ein Filter gesetzt. if ( ($filtkreis != '' and $filtkreis != $kreis) or ($filtgem != '' and $filtgem != $gemeinde) ) { // Einer der gesetzten Filter passt nicht if ($debug > 2) { //++ Schönes Bild? Stop-Zeichen? echo "\n

Filter Kreis='".$filtkreis."', Gemeinde='".$filtgem."'

" ."\n

Flstk. Kreis='".$fskrs."', Gemeinde='".$fsgem."'

"; } echo "\n

Zugriff nicht erlaubt

" ."\n

Dies Flurstück liegt ausserhalb der zuständigen Stadt oder Gemeinde.

\n\n"; exit; } echo "\n" ."\n\t\n\t\t" // Links ."\n\t\t\n\t\t\n\t\n
Kennzeichen:" // Mitte ."\n\t\t\t\n\t\t\t\t" // darin Tabelle Kennzeichen ."\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t" ."\n\t\t\t\t\n\t\t\t\t\t" ."\n\t\t\t\t\t" ."\n\t\t\t\t\t\n\t\t\t\t" ."\n\t\t\t
GemarkungFlurFlurst-Nr.
"; if ($showkey) {echo "".$gmkgnr."
";} echo $gemkname." 
".$flurnummer."".$flstnummer."
" ."\n\t\t
" // Rechts ."\n\t\t\t" // FS-Daten 2 Spalten ."\n\t\t\t\t\n\t\t\t\t\t" ."\n\t\t\t\t\t\n\t\t\t\t" ."\n\t\t\t\t" ."\n\t\t\t\t\t" ."\n\t\t\t\t\t" ."\n\t\t\t\t" ."\n\t\t\t
Entstehung".$entsteh."
letz. Fortf"; foreach($arrn AS $val) { // Zeile f. jedes Element des Array echo trim($val, '"')."
"; } echo "
" ."\n\t\t
"; echo "\n
\n"; // FS-Teil 6 Spalten echo "\n\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t" // 1-5 in erster Zeile kein "colspan" verwenden ."\n\t\t" // 6 ."\n"; echo "\n" // Zeile: G e b i e t s z u g e h o e r i g k e i t Gemeinde / Kreis / Regierungsbezirk ."\n\t" // 1 ."\n\t" // 2 ."\n\t" ."\n\t" // 6 ."\n"; // ** L a g e b e z e i c h n u n g ** // Lagebezeichnung M I T Hausnummer // ax_flurstueck >weistAuf> AX_LagebezeichnungMitHausnummer $sql="SELECT DISTINCT l.gml_id, l.gemeinde, l.lage, l.hausnummer, s.bezeichnung, s.gml_id AS kgml FROM ax_flurstueck f JOIN ax_lagebezeichnungmithausnummer l ON l.gml_id=ANY(f.weistauf) JOIN ax_lagebezeichnungkatalogeintrag s ON l.land=s.land AND l.regierungsbezirk=s.regierungsbezirk AND l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage WHERE f.gml_id= $1 AND f.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL ORDER BY l.gemeinde, l.lage, l.hausnummer;"; $v = array($gmlid); $res = pg_prepare("", $sql); $res = pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Lagebezeichnung mit Hausnummer

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

Fehler:".pg_last_error()."

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

SQL=
".htmlentities($sql, ENT_QUOTES, "UTF-8")."
$1 = gml_id = '".$gmlid."'

";} } } else { $j=0; $kgmlalt=""; while($row = pg_fetch_assoc($res)) { $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name if (substr($sname, strlen($sname) -3, 3) == 'weg') { // Versuch fuer korrekten Satzbau $slink=" am ".$sname; } else { $slink=" an der ".$sname; } $hsnr=$row["hausnummer"]; echo "\n"; if ($j == 0) { // 1 echo "\n\t"; } else { echo "\n\t"; } echo "\n\t" // 2 ."\n\t"; echo "\n\t" // 6 ."\n"; $j++; } $cnt_adressen=$j; pg_free_result($res); } // Lagebezeichnung O H N E Hausnummer (Gewanne oder nur Strasse) // ax_flurstueck >zeigtAuf> AX_LagebezeichnungOhneHausnummer $sql ="SELECT l.gml_id, l.unverschluesselt, l.gemeinde, l.lage, s.bezeichnung FROM ax_flurstueck f JOIN ax_lagebezeichnungohnehausnummer l ON l.gml_id=ANY(f.zeigtauf) LEFT JOIN ax_lagebezeichnungkatalogeintrag s ON l.land=s.land AND l.regierungsbezirk=s.regierungsbezirk AND l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage WHERE f.gml_id = $1 AND f.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL;"; $v = array($gmlid); $res = pg_prepare("", $sql); $res = pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Lagebezeichnung ohne Hausnummer

"; //if ($debug > 1) {echo "

Fehler:".pg_result_error($res)."

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

SQL=
".htmlentities($sql, ENT_QUOTES, "UTF-8")."
$1 = gml_id = '".$gmlid."'

";} } $j=0; while($row = pg_fetch_assoc($res)) { $skey=$row["lage"]; // Strassenschl. $lgml=$row["gml_id"]; // key der Lage $gewann = htmlentities($row["unverschluesselt"], ENT_QUOTES, "UTF-8"); if ($gewann != "") { echo "\n" ."\n\t" // 1 ."\n\t" // 2 ."\n\t" // 3-5 ."\n\t" // 6 ."\n"; } elseif ($skey > 0) { $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name if (substr($sname, strlen($sname) -3, 3) == 'weg') { // Versuch fuer korrekten Satzbau $slink=" am ".$sname; } else { $slink=" an der ".$sname; } echo "\n" ."\n\t" // 1 ."\n\t" // 2 ."\n\t"; echo "\n\t" // 6 ."\n"; } $j++; } pg_free_result($res); /* Status "N u t z u n g": Die Classic-Tabelle "nutzung" ist eine Zusammenfassung aller Tabellen mit Nutzungs-Flächen Die Classic-Tabelle "nutzung_meta" zeigt die Kategorie und Gruppe des Nutzungs-Abschnitts an. Aus der norGIS-Struktur wird ersatzweise VORLÄUFIG die Tabelle "nutz_21" verwendet, die das alte ALB-Format der Nutzungs-Abschnitte von Flurstücken simuliert. Hier finden sich bereits verschnittene Flächen, aber die gml_id fehlt. Die Entschlüsselung der Nutzungsart in den verschiedenen ALKIS-Varianten ist darin unterentwickelt. Diese ist eigentlich für jede der getrennten Tabellen der Gruppe Nutzungsart individuell. Die Classic-Lösung mit 2 Zusatzfeldern war schon sehr pauschalisiert, aber durch die Rück-Konvertierung in ALB-Strukturen in der norGIS-Version ist das zu stark vereinfacht. z.B. wird "Wohnbaufläche" mit der Zusatzeigenschaft "Art der Bebauung": 'Offen' nun zur Nutzungsart "Offen". Durch JOIN auf die "alkis_elemente" mit einem Teil des Schlüssels wird das zur "Wohnbaufläche, Offen". Es sollte eine Tabellen-Struktur bereit gestellt werden, die auch aussagt, dass der Wert "Offen" zur Zusatz-Eigenschaft "Art der Bebauung" gehört. Dazu muss das PostProcessing erweitert werden. */ $sql="SELECT e.definition, trim(both FROM n.nutzsl) AS nutzsl, trim(both FROM n.fl) AS fl, trim(both FROM s.nutzung) AS nutzung FROM nutz_21 n JOIN nutz_shl s ON n.nutzsl = s.nutzshl JOIN alkis_elemente e ON e.kennung = substring(n.nutzsl from 1 for 5) WHERE n.flsnr = $1 ORDER BY cast(n.fl AS integer) DESC;"; // Flurstueckskennzeichen mit Trennzeichen im ALB-Format wie 'llgggg-fff-zzzzz/nnn' $fskennzalb=$defland.$gmkgnr."-".str_pad($flurnummer,3,"0",STR_PAD_LEFT)."-".str_pad($zaehler,5,"0",STR_PAD_LEFT)."/".str_pad($nenner,3,"0",STR_PAD_LEFT); $v = array($fskennzalb); $res = pg_prepare("", $sql); $res = pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Suche tats. Nutzung

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

SQL=
".htmlentities($sql, ENT_QUOTES, "UTF-8")."
$1 = FS-Kennz = '".$fskennzalb."'

";} } $j=0; while($row = pg_fetch_assoc($res)) { $flae=$row["fl"]; // Buchfläche $nutzsl=$row["nutzsl"]; // Schlüssel $nutzung=$row["nutzung"]; // Bezeichnung aus ALB-Tabelle, "fein" $defi=$row["definition"]; // Langer Text mit Beschreibung $title=htmlentities($defi, ENT_QUOTES, "UTF-8"); // .. für Anzeige aufbereitet echo "\n\n\t"; if ($j == 0) { // 1 echo ""; } else { echo ""; } $absflaebuch = number_format($flae,0,",",".") . " m²"; // Formatierte Abschnitts-Buch-Fläche echo "\n\t"; // 2 echo "\n\t"; // 3 - gleiche Spalte wie Fl. in Bodenschätzg. echo "\n\t"; // 4 echo "\n\t" ."\n\t" // 6 ."\n"; $j++; } pg_free_result($res); echo "\n" // Flächen-Summenzeile ."\n\t" // 1 ."\n\t" // 2 ."\n\t" ."\n\t" // 4 ."\n\t" // 5 ."\n\t" // 6 ."\n"; // B o d e n s c h ä t z u n g // --------------------------- // Tabelle "klas_3x" (norbit-ALB): Dort fehlen Bodenart und Zustandsstufe, es ist aber bereits auf Buchfläche umgerechnet. // Bodenschätzungs-Abschnitte mit Flurstücken verschneiden, Spalten entschlüsseln $sql="SELECT kulturart.k AS kulturartk, kulturart.v AS kulturartv, bodenart.k AS bodenartk, bodenart.v AS bodenartv, zustbod.v AS zustbodv, b.entstehungsartoderklimastufewasserverhaeltnisse AS entsteh, b.sonstigeangaben, b.bodenzahlodergruenlandgrundzahl as bodenzahl, b.ackerzahlodergruenlandzahl AS ackerzahl, b.jahreszahl, st_area(st_intersection(b.wkb_geometry, f.wkb_geometry)) AS schnittflae FROM ax_flurstueck f JOIN ax_bodenschaetzung b ON st_intersects(b.wkb_geometry, f.wkb_geometry) AND st_area(st_intersection(b.wkb_geometry, f.wkb_geometry)) > 0.05 LEFT JOIN alkis_wertearten AS bodenart ON cast(b.bodenart AS character varying) = bodenart.k AND bodenart.element='ax_bodenschaetzung' AND bodenart.bezeichnung='bodenart' LEFT JOIN alkis_wertearten AS kulturart ON cast(b.kulturart AS character varying) = kulturart.k AND kulturart.element='ax_bodenschaetzung' AND kulturart.bezeichnung='kulturart' LEFT JOIN alkis_wertearten AS zustbod ON cast(b.zustandsstufeoderbodenstufe AS character varying) = zustbod.k AND zustbod.element='ax_bodenschaetzung' AND zustbod.bezeichnung='zustandsstufeoderbodenstufe' WHERE f.gml_id = $1 AND f.endet IS NULL AND b.endet IS NULL ORDER BY schnittflae DESC"; $v = array($gmlid); $res = pg_prepare("", $sql); $res = pg_execute("", $v); if (!$res) {echo "\n

Fehler bei DB-Abfrage zur Klassifizierung Boden

\n";} $gesertragsmz = 0; // Gesamt-ErtragsMesszahl $klasflae = 0; // Summe klassifizierte Fläche $j=0; if(!empty($res) && pg_num_rows($res) > 0) { while ($row = pg_fetch_assoc($res)) { $kulturartk=$row['kulturartk']; // Key - $kulturartv=$row['kulturartv']; // - Value // 1000="Ackerland (A)", 2000="Acker-Grünland (AGr)", 3000="Grünland (Gr)", 4000="Grünland-Acker (GrA)" if (substr($kulturartv, 0, 3) == 'Ack') { // A $kbez1="Bodenzahl"; $kbez2="Ackerzahl"; } else { // Gr $kbez1="Grünlandgrundzahl"; $kbez2="Grünlandzahl"; } $absflae = $row['schnittflae']; $absbuchflae = $absflae * $the_Xfactor; $klasflae+=$absbuchflae; $ertragszahl = intval($absbuchflae * $row['ackerzahl'] / 100); $gesertragsmz+=$ertragszahl; // $absflaedis = number_format($absflae,0,",",".")." m²"; // als Tool-Tip ? $absbuchflaedis = number_format($absbuchflae,0,",",".")." m²"; $boedenzahl=ltrim($row['bodenzahl'], '0'); $ackerzahl=ltrim($row['ackerzahl'], '0'); $jahr=$row['jahreszahl']; // 2x Array mit Schlüsseln. PostNAS füllt es nicht, wenn als "integer[]" definiert. $entsteh=$row['entsteh']; $sonst=$row['sonstigeangaben']; if ($j == 0) { // 1 echo "\n\n\t"; } else { echo "\n\n\t"; } echo "\n\t"; // 2 echo "\n\t"; // 3 echo "\n\t"; // 4 echo "\n\t"; // 5 echo "\n\t\n"; // 6 $j++; } // Summenzeile $klasflaedis = number_format($klasflae,0,",",".")." m²"; echo "\n\n\t" // 1 ."\n\t" // 2 ."\n\t" // 3 ."\n\t\n"; // 4-6 } // H i n w e i s auf Bodenneuordnung oder eine strittige Grenze $sql_boden ="SELECT a.k AS wert, a.v AS art_verf, b.gml_id AS verf_gml, b.bezeichnung AS verf_bez, b.name AS verf_name, d.bezeichnung AS stelle_bez, d.stelle AS stelle_key FROM ax_bauraumoderbodenordnungsrecht b LEFT JOIN alkis_wertearten a ON cast(b.artderfestlegung AS character varying)=a.k AND a.element='ax_bauraumoderbodenordnungsrecht' AND a.bezeichnung='artderfestlegung' LEFT JOIN ax_dienststelle d ON b.stelle=d.stelle WHERE b.endet IS NULL AND d.endet IS NULL AND (ST_Within((SELECT wkb_geometry FROM ax_flurstueck WHERE gml_id = $1 AND endet IS NULL ), wkb_geometry) OR ST_Overlaps((SELECT wkb_geometry FROM ax_flurstueck WHERE gml_id = $1 AND endet IS NULL), wkb_geometry));"; pg_prepare($con, "bodeneuordnung", $sql_boden); $res_bodeneuordnung = pg_execute($con, "bodeneuordnung", array($gmlid)); if (!$res_bodeneuordnung) { echo "\n

Fehler bei Bau-, Raum- oder Bodenordnungsrecht

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

SQL=
".$sql_boden."
$1 = gml_id = '".$gmlid."'

";} } $sql_str="SELECT gml_id FROM ax_besondereflurstuecksgrenze WHERE endet IS NULL AND 1000 = ANY(artderflurstuecksgrenze) AND ST_touches((SELECT wkb_geometry FROM ax_flurstueck WHERE gml_id = $1 AND endet IS NULL),wkb_geometry);"; pg_prepare($con, "strittigeGrenze", $sql_str); $res_strittigeGrenze = pg_execute($con, "strittigeGrenze", array($gmlid)); if (!$res_strittigeGrenze) { echo "\n

Fehler bei strittige Grenze

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

SQL=
".$sql_str."
$1 = gml_id = '".$gmlid."'

";} } if (pg_num_rows($res_bodeneuordnung) > 0 OR pg_num_rows($res_strittigeGrenze) > 0) { echo "\n" ."\n\t\n\t\n";// 2-6 if (pg_num_rows($res_bodeneuordnung) > 0) { while ($row = pg_fetch_assoc($res_bodeneuordnung)) { // 3 Zeilen je Verfahren echo "\n" // Zeile 1 - kommt immer, darum hier den Link ."\n\t" // 1 ."\n\t" // 2 "Art der Festlegung" zu lang ."\n\t"; echo "\n\t" ."\n"; $dstell=$row['stelle_key']; // Zeile 2 if ($dstell != "") { // Kann auch leer sein echo "\n" ."\n\t" // 1 ."\n\t" // 2 ."\n\t" ."\n\t" // 6 ."\n"; } $vbez=$row['verf_bez']; // Zeile 3, ist nicht immer gefüllt $vnam=$row['verf_name']; // noch seltener if ($vbez != "") { echo "\n" ."\n\t" ."\n\t" ."\n\t" ."\n\t" ."\n"; } } } if (pg_num_rows($res_strittigeGrenze) > 0) { // 1 Zeile echo "\n\n" ."" ."\n\n"; } } echo "\n
\n\t\t
Gebiet:Gemeinde
Kreis
Regierungsbezirk
"; // 3-5 if ($showkey) {echo "(".$gemeinde.") ";} echo $mbez."
"; if ($showkey) {echo "(".$kreis.") ";} echo $kbez."
"; if ($showkey) {echo "(".$bezirk.") ";} echo $rbez ."
Adresse:  "; // 3-5 if ($showkey) {echo "(".$row["lage"].") ";} echo $sname." ".$hsnr."\n\t\t\n\t
Gewanne:".$gewann."\n\t\t\n\t
Straße:"; // 3-5 if ($showkey) {echo "(".$skey.") ";} echo $sname."\n\t\t\n\t
Nutzung: ".$absflaebuch.""; // 5 - gleiche Sp. wie Zustandsstufe usw. if ($showkey) {echo "(".$nutzsl.") ";} echo $nutzung .""; // 6 /* // Derzeit ist keine Gruppe zugeordnet switch ($grupp) { // Icon nach 4 Objektartengruppen case "Siedlung": $ico = "Abschnitt.png"; break; case "Verkehr": $ico = "Strassen_Klassifikation.png"; break; case "Vegetation": $ico = "Wald.png"; break; case "Gewässer": $ico = "Wasser.png"; break; default: $ico = "Abschnitt.png"; break; } // Icon ist auch im Druck sichtbar, class='noprint' ? echo ""; */ echo "
Fläche: " // 3 Flaeche ."".$fsbuchflaed."  " // 6 Link auf Gebäude-Auswertung ."\n\t\t" ."\n\t
Bodenschätzung:
 EMZ ".$ertragszahl."".$absbuchflaedis."".$boedenzahl."/".$ackerzahl.""; // 5 if ($showkey) {echo "\n\t\t(".$kulturartk.") ";} echo "\n\t\t".$kulturartv." "; if ($showkey) {echo "\n\t\t(".$row['bodenartk'].") ";} echo "\n\t\t".$row['bodenartv']." "; echo "\n\t\t".$row['zustbodv']." "; // ARRAYs auflösen ohne den Schätzungs-Abschnitt mehrfach aufzulisten if ($entsteh <> '') { $ent="'".str_replace(",", "','", trim($entsteh, "{}"))."'"; // als Liste für SQL "WHERE IN ()" echo "\n\t\t "; if ($showkey) {echo "\n\t\t (".$ent.") ";} werteliste ('ax_bodenschaetzung', 'entstehungsartoderklimastufewasserverhaeltnisse', $ent); echo ""; } if ($sonst <> '') { $son="'".str_replace(",", "','", trim($sonst, "{}"))."'"; echo "\n\t\t "; if ($showkey) {echo "\n\t\t (".$son.") ";} werteliste ('ax_bodenschaetzung', 'sonstigeangaben', $son); echo ""; } if ($jahr <> '') { echo "\n\t\t".$jahr.""; } echo "\n\t 
Ertragsmesszahl:".$gesertragsmz."".$klasflaedis." 
" // 1 ."Hinweise:
 
BodenrechtFestlegung: "; // 3-5 if ($showkey) {echo "(".$row['wert'].") ";} echo $row['art_verf'] ."" // 6 LINK: ."\n\t\t" ."\n\t
 Dienststelle: "; // 3-5 if ($showkey) {echo "(".$dstell.") ";} echo $row['stelle_bez'] ." 
 Verfahren: "; if ($vnam == "") { echo $vbez; // nur die Nummer } else { // Name oder beides if ($showkey) {echo "(".$vbez.") ";} echo $vnam; } echo " 
Strittige Grenze:Mindestens eine Flurstücksgrenze ist als strittig zu bezeichnen. Sie kann nicht festgestellt werden, weil die Beteiligten sich nicht über den Verlauf einigen. Nach sachverständigem Ermessen der Katasterbehörde ist anzunehmen, dass das Liegenschaftskataster nicht die rechtmäßige Grenze nachweist. 
"; // B U C H U N G S S T E L L E N zum FS $bartgrp=""; // Buchungsart $barttypgrp=""; // Buchungsart Typ if ($gml_buchungsstelle == '') {echo "\n

Keine Buchungstelle zum Flurstück gefunden.

";} echo "\n"; // ALLE Buchungen und Eigentümer in 4 Spalten EINER Tabelle ausgeben $stufe=1; // Schleifenzähler Tiefe $gezeigt=buchung_anzg($gml_buchungsstelle, $eig, false, $gmlid); // die ("dienende") Buchung anzeigen, wenn nicht fiktiv. Liefert true/false $anzber=ber_bs_zaehl($gml_buchungsstelle); // Anzahl berechtigte Buchungen (nächste Stufe) zu dieser Buchung ermitteln $verf_next = array($gml_buchungsstelle); // Start Recursion mit einem Element //if ($debug > 2) {echo "

Nach Stufe ".$stufe.", Anzahl: ". $anzber ."

";} while ($anzber > 0 ) { // Stufe - recursiv in die Tiefe, solange es was zu verfolgen gibt $verf_akt=$verf_next; // die nächste Stufe als aktuell übernehmen .. $verf_next=array(); // .. und zum Auffüllen leeren $stufe++; $i=0; // Schleifenzähler Elemente foreach($verf_akt as $gml_ber_bs) { $i++; if (ber_bs_zaehl($gml_ber_bs) > 0) { $verf_neu=ber_bs_anzg($gml_ber_bs, $eig, $gmlid); // Anzeige ber. Buchungst., ggf. mit Eigentümer. $anz_neu=count($verf_neu); // Das Ergebnis zählen // if ($debug > 2) {echo "

Weiter zu verfolgen: Stufe ".$stufe.", Element ".$i.", Anzahl: ".$anz_neu."

";} if ($anz_neu > 0) { // wenn neue geliefert $verf_next=array_merge($verf_next, $verf_neu); // die neuen an die Sammlung heften } } } // Ende Buchungs-Array in der Stufe $anzber=count($verf_next); // Sammlung auf Stufe zählen, Steuert die Schleife. //if ($debug > 2) {echo "

Nach Stufe ".$stufe.", Anzahl: ". $anzber ."

";} } // Ende Stufe // Diese aufwändige Analyse mit Arrays geht davon aus, dass es Verzweigungen auf oberen Stufen geben könnte, // so dass mehrere Zweige parallel weiter zu verfolgen sind. In der Praxis ist eine Verzweigung bisher nur in der letzten Stufe vorgekommen. // Eine weniger aufwändige Lösung (ohne Arrays) würde reichen, wenn das immer so wäre: /* Alte Version (einfacher): $gezeigt = buchung_anzg($gml_buchungsstelle, $eig, false, $gmlid); $anzber = ber_bs_zaehl($gml_buchungsstelle); if ($anzber > 0 ) { $verfolg = ber_bs_anzg($gml_buchungsstelle, $eig, $gmlid); while ($verfolg != "") { $valt=$verfolg; $verfolg = ber_bs_anzg($valt, $eig, $gmlid); } } */ echo "\n
\n\n"; pg_close($con); echo <<
zurück  Drucken  END; echo "\n\tExport \n"; footer($gmlid, $_SERVER['PHP_SELF']."?", "&eig=".$eig); ?>