Fehler beim Verbinden der DB

"; // Ein (ALB- ?) Flurstücks-Kennzeichen wurde alternativ zur gml_id übermittelt if ($fskennz != '') { // Übergabe Format z.B. "llgggg-fff-nnnn/zz.nn" oder "gggg-ff-nnn/zz" $arr=explode("-", $fskennz, 4); $zgemkg=trim($arr[0]); if (strlen($zgemkg) == 20 and !isset($arr[1])) { // Oh, ist wohl schon das Datenbank-Feldformat $fskzdb=$zgemkg; } else { // Nö, ist wohl eher ALB-Format // 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_array($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 $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, f.zeitpunktderentstehung, g.gemarkungsnummer, g.bezeichnung FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer WHERE f.gml_id= $1 AND f.endet IS NULL AND g.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_array($res)) { $gemkname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); $gmkgnr=$row["gemarkungsnummer"]; $bezirk=$row["regierungsbezirk"]; $kreis=$row["kreis"]; $gemeinde=$row["gemeinde"]; $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"]; $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); // Balken if ($eig=="j") { echo "

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

" ."\n

Flurstück mit Eigentümer

"; } else { echo "

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

" ."\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\n\t\n\t\n\n
" // linke Seite ."\n\t\t\n\t\t" // darin Tabelle Kennzeichen ."\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t" ."\n\t\t\n\t\t\t" ."\n\t\t\t" ."\n\t\t\t\n\t\t" ."\n\t\t
GmkgFlurFlurst-Nr.
"; if ($showkey) { echo "".$gmkgnr."
"; } echo $gemkname." 
".$flurnummer."".$flstnummer."
" ."\n\t
" // rechte Seite ."\n\t\t" // FS-Daten 2 Spalten ."\n\t\t\n\t\t\t" ."\n\t\t\t\n\t\t" ."\n\t\t" ."\n\t\t\t" ."\n\t\t\t" ."\n\t\t" ."\n\t\t
Entstehung".$entsteh."
letz. Fortf"; foreach($arrn AS $val) { // Zeile f. jedes Element des Array echo trim($val, '"')."
"; } echo "
" ."\n\t
"; // echo "\n\n\tFinanzamt\n\t".$finanzamt." ".$finame . "\n"; // Ende Seitenkopf echo "\n
" ."\n" // oben rechts von der Tabelle ."\n"; // ** G e b i e t s z u g e h o e r i g k e i t ** // eine Tabellenzeile mit der Gebietszugehoerigkeit eines Flurstuecks wird ausgegeben // Schluessel "land" wird nicht verwendet, gibt es Bestaende wo das nicht einheitlich ist? echo "\n\n\t"; // G e m e i n d e $sql="SELECT bezeichnung FROM ax_gemeinde WHERE regierungsbezirk= $1 AND kreis= $2 AND gemeinde= $3 AND endet IS NULL;"; $v = array($bezirk,$kreis,$gemeinde); $res = pg_prepare("", $sql); $res = pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Gemeinde

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

SQL=
".htmlentities($sql, ENT_QUOTES, "UTF-8")."

";} } $row = pg_fetch_array($res); $gnam = htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); echo "\n\t\n\t\n\t\n"; pg_free_result($res); // K r e i s $sql="SELECT bezeichnung FROM ax_kreisregion WHERE regierungsbezirk= $1 AND kreis= $2 AND endet IS NULL;"; $v = array($bezirk,$kreis); $res = pg_prepare("", $sql); $res = pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Kreis

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

SQL=
".htmlentities($sql, ENT_QUOTES, "UTF-8")."

";} } $row = pg_fetch_array($res); $knam = htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); echo "\n\n\t\n\t\n\t\n\t\n"; pg_free_result($res); // R e g - B e z $sql="SELECT bezeichnung FROM ax_regierungsbezirk WHERE regierungsbezirk= $1 AND endet IS NULL;"; $v = array($bezirk); $res = pg_prepare("", $sql); $res = pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Regierungsbezirk

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

SQL=
".htmlentities($sql, ENT_QUOTES, "UTF-8")."

";} } $row=pg_fetch_array($res); $bnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); echo "\n\n\t\n\t\n\t\n\t\n"; pg_free_result($res); // ENDE G e b i e t s z u g e h o e r i g k e i t // ** L a g e b e z e i c h n u n g ** // Lagebezeichnung MIT Hausnummer // ax_flurstueck >weistAuf> AX_LagebezeichnungMitHausnummer $sql="SELECT DISTINCT l.gml_id, l.gemeinde, l.lage, l.hausnummer, s.bezeichnung 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; while($row = pg_fetch_array($res)) { $sname = htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name echo "\n\n\t"; if ($j == 0) { echo "\n\t"; } else { echo "\n\t"; } echo "\n\t" ."\n\t" ."\n\t" ."\n"; $j++; } $cnt_adressen=$j; pg_free_result($res); } // +++ Verbesserung: mehrere HsNr zur gleichen Straße als Liste? // Lagebezeichnung OHNE 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; // Es wird auch eine Zeile ausgegeben, wenn kein Eintrag gefunden! while($row = pg_fetch_array($res)) { $gewann = htmlentities($row["unverschluesselt"], ENT_QUOTES, "UTF-8"); $skey=$row["lage"]; // Strassenschl. $lgml=$row["gml_id"]; // key der Lage if (!$gewann == "") { echo "\n" ."\n\t" ."\n\t" ."\n\t" ."\n\t" ."\n"; } // Gleicher DB-Eintrag in zwei HTML-Zeilen, besser nur ein Link if ($skey > 0) { echo "\n" ."\n\t" ."\n\t" ."\n\t" ."\n\t" ."\n"; } $j++; } pg_free_result($res); // ENDE L a g e b e z e i c h n u n g // ** N U T Z U N G ** Gemeinsame Fläche von NUA und FS // Tabellenzeilen (3 Spalten) mit tats. Nutzung zu einem FS ausgeben /* N U T Z U N G C l a s s i c (alt) $sql ="SELECT m.title, m.fldclass, m.fldinfo, n.gml_id, n.nutz_id, n.class, n.info, n.zustand, n.name, n.bezeichnung, m.gruppe, st_area(st_intersection(n.wkb_geometry,f.wkb_geometry)) AS schnittflae, c.label, c.blabla FROM ax_flurstueck f, nutzung n JOIN nutzung_meta m ON m.nutz_id=n.nutz_id LEFT JOIN nutzung_class c ON c.nutz_id=n.nutz_id AND c.class=n.class WHERE f.gml_id= $1 AND st_intersects(n.wkb_geometry,f.wkb_geometry) = true AND st_area(st_intersection(n.wkb_geometry,f.wkb_geometry)) > 0.05 AND f.endet IS NULL ORDER BY schnittflae DESC;"; $v = array($gmlid); $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 = gml_id = '".$gmlid."'

";} } $the_Xfactor=$fsbuchflae / $fsgeomflae; // geom. ermittelte Fläche auf amtl. Buchfläche angleichen $j=0; while($row = pg_fetch_array($res)) { $grupp=$row["gruppe"]; // 4 Gruppen $nutzid=$row["nutz_id"]; // 27 Tabellen, num. Key $title=htmlentities($row["title"], ENT_QUOTES, "UTF-8"); // Titel der 27 Tabellen $fldclass=$row["fldclass"]; // Name 1. Zusatzfeld $fldinfo= $row["fldinfo"]; // Name 2. Zus. $gml=$row["gml_id"]; $class=$row["class"]; // 1. Zusatzfeld verschlüsselt -> nutzung_class $info=$row["info"]; // 2. Zus. verschlüsselt (noch keine Info zum entschl.) $schnittflae=$row["schnittflae"]; $label=$row["label"]; // Nutzungsart entschlüsselt $zus=$row["zustand"]; // im Bau $nam=$row["name"]; // Eigenname $bez=$row["bezeichnung"]; // weiterer Name (unverschl.) $blabla=htmlentities($row["blabla"], ENT_QUOTES, "UTF-8"); $label=str_replace("/", "
", $label); // Ersetzt "/" durch html-Zeilenwechsel echo "\n\n\t"; if ($j == 0) { echo ""; } else { echo ""; } $absflaebuch = $schnittflae * $the_Xfactor; // angleichen geometrisch an amtliche Fläche $schnittflae = number_format($schnittflae,1,",",".") . " m²"; // geometrisch $absflaebuch = number_format($absflaebuch,0,",",".") . " m²"; // Abschnitt an Buchfläche angeglichen echo "\n\t"; echo "\n\t"; echo "\n\t"; echo "\n"; $j++; } E N D E N U T Z U N G C l a s s i c */ /* Status "Nutzung": 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_array($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) { echo ""; } else { echo ""; } $absflaebuch = number_format($flae,0,",",".") . " m²"; // Formatierte Abschnitts-Buch-Fläche echo "\n\t"; echo "\n\t" ."\n\t" ."\n"; $j++; } pg_free_result($res); echo "\n" // Summenzeile ."\n\t" ."\n\t"; // Flaeche und Link auf Gebäude-Auswertung echo "\n\t\n\t" ."\n"; // ENDE N U T Z U N G // K L A S S I F I Z I E R U N G // Klassifizierung nach W a s s e rrecht /* // Tabelle immer leer? $sql="SELECT h.v, w.artderfestlegung, st_area(st_intersection(w.wkb_geometry, f.wkb_geometry)) AS schnittflae, f.amtlicheflaeche, st_area(f.wkb_geometry) as fsgeomflae FROM ax_flurstueck f JOIN ax_klassifizierungnachwasserrecht w ON st_intersects(w.wkb_geometry, f.wkb_geometry) AND st_area(st_intersection(w.wkb_geometry, f.wkb_geometry)) > 0.05 LEFT JOIN alkis_wertearten h ON cast(w.artderfestlegung AS character varying) = h.k AND h.element='ax_klassifizierungnachwasserrecht' AND h.bezeichnung='artderfestlegung' WHERE f.gml_id = $1 AND f.endet IS NULL AND w.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 Wasser

\n";} if(!empty($res) && pg_num_rows($res) > 0) { echo "\n
Gebiet:Gemeinde"; if ($showkey) {echo "(".$gemeinde.") ";} // Link zur FS-Historie (passt nicht ganz in die Zeile "Gemeinde", aber gut unter "weitere Auskunft") echo $gnam."
 Kreis"; if ($showkey) {echo "(".$kreis.") ";} echo $knam." 
 Regierungsbezirk"; if ($showkey) {echo "(".$bezirk.") ";} echo $bnam." 
Adresse:  "; if ($showkey) { echo "(".$row["lage"].") "; } echo $sname." ".$row["hausnummer"]."\n\t\t\n\t
Gewanne:".$gewann."\n\t\t\n\t
Straße:"; if ($showkey) { echo "(".$skey.") "; } echo $row["bezeichnung"]."\n\t\t\n\t
Nutzung: ".$absflaebuch.""; if ($class == 0) { if ($showkey) {echo "(".$nutzid.") ";} echo $title; // Name der Tabelle } elseif ( ($fldclass == "Funktion" OR $fldclass == "Vegetationsmerkmal") AND $label != "") { // Kurze Anzeige if ($showkey) {echo "(".$nutzid."-".$class.") ";} if ($blabla = "") { echo $label; } else { echo "".$label.""; } } else { // ausfuehrlichere Anzeige echo $title; // NUA-Tabelle if ($class != "") { // NUA-Schlüssel echo ", ".$fldclass.": "; // Feldname if ($showkey) {echo "(".$nutzid."-".$class.") ";} if ($label != "") { // Bedeutung dazu wurde erfasst if ($blabla = "") { echo $label; } else { echo "".$label.""; } } else { // muss noch erfasst werden echo $class." "; // Schlüssel als Ersatz für Bedeutung } } } if ($info != "") { // manchmal ein zweites Zusatzfeld (wie entschlüsseln?) echo ", ".$fldinfo."=".$info; } if ($zus != "") { // Zustand echo "\n\t\t
"; if ($showkey) {echo "(".$zus.") ";} echo ""; switch ($zus) { case 2100: echo "Außer Betrieb, stillgelegt, verlassen"; break; case 4000: echo "Im Bau"; break; case 8000: echo "Erweiterung, Neuansiedlung"; break; default: echo "Zustand: ".$zus; break; } echo ""; } if ($nam != "") {echo "
Name: ".$nam;} if ($bez != "") {echo "
Bezeichnung: ".$bez;} echo "
"; 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 "
Nutzung: ".$absflaebuch.""; if ($showkey) {echo "(".$nutzsl.") ";} echo $nutzung .""; /* // 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:" ."".$fsbuchflaed." " ."\n\t\t" ."\n\t
"; while($row = pg_fetch_array($res)) { $fsbuchflae=$row["amtlicheflaeche"]; $fsgeomflae=$row["fsgeomflae"]; $the_Xfactor=$fsbuchflae / $fsgeomflae; // ++ nicht in Loop, ist konst. je FS $absflaebuch = $row['schnittflae'] * $the_Xfactor; echo"\n" ."\n" ."\n" ."\n"; } echo "
Fläche".number_format(intval($absflaebuch),0,",",".")." m²
Bezeichnung".$row['v']."
"; } // Klassifizierung nach S t r a ß e n recht // Tabelle immer leer? */ // 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. $sql="SELECT kulturart.k as kulturartk, kulturart.v as kulturartv, bodenart.k as bodenartk, bodenart.v as bodenartv, zustbod.v AS zustbodv, 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_array($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'); // Sp. 1/4 if ($j == 0) { echo "\n\n\t Bodenschätzung:"; } else { echo "\n\n\t "; } // Sp. 2/4 echo "\n\tEMZ ".$ertragszahl.""; // Sp. 3/4 - darin mehrere Infos echo "\n\t"; echo "\n\t\t".$absbuchflaedis." "; echo "\n\t\t" ."".$boedenzahl."/".$ackerzahl."" ." "; echo "\n\t\t"; if ($showkey) {echo "\n\t\t\t(".$kulturartk.") ";} echo "\n\t\t\t".$kulturartv." "; if ($showkey) {echo "\n\t\t\t(".$row['bodenartk'].") ";} echo "\n\t\t\t".$row['bodenartv']." "; echo "\n\t\t\t".$row['zustbodv'].""; if (isset($row['jahreszahl'])) {echo "\n\t\t ".$row['jahreszahl']."";} // ++ Entstehungsart (Array) derzeit leer. 1:N entschlüsseln. entstehungsartoderklimastufewasserverhaeltnisse // $ent = explode(",", trim($entsteh, "{}") ); // [] --> PHP-Array // if (isset($row['sonstiges'])) {echo "\n\t\t, ".$row['sonstiges']."";} -- immer leer (Konverter-Fehler?) echo "\n\t\t"; // Sp. 4/4 - leer, keine Links echo "\n\t\n\t \n"; $j++; } // Summenzeile $klasflaedis = number_format($klasflae,0,",",".")." m²"; echo "\n\n\tErtragsmesszahl:" ."\n\tEMZ ".$gesertragsmz."" ."\n\t".$klasflaedis."\n\t \n"; } // H i n w e i s auf Bodenneuordnung oder eine strittige Grenze // b.name, b.artderfestlegung, $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
" ."Hinweise:
\n\t " ."\n"; if (pg_num_rows($res_bodeneuordnung) > 0) { while ($row = pg_fetch_array($res_bodeneuordnung)) { // 3 Zeilen je Verfahren // Zeile 1 - kommt immer, darum hier den Link echo "\n" ."\n\tBodenrecht:" ."\n\tFestlegung" // "Art der Festlegung" zu lang ."\n\t"; if ($showkey) {echo "(".$row['wert'].") ";} echo $row['art_verf'] ."\n\t"; // LINK: echo "\n\t\t" ."" ."\n"; // Zeile 2 $dstell=$row['stelle_key']; if ($dstell != "") { // Kann auch leer sein echo "\n" ."\n\t " ."\n\tDienststelle" ."\n\t"; if ($showkey) {echo "(".$dstell.") ";} echo $row['stelle_bez'] ."" ."\n\t " ."\n"; } // Zeile 3 $vbez=$row['verf_bez']; // ist nicht immer gefüllt $vnam=$row['verf_name']; // noch seltener if ($vbez != "") { echo "\n" ."\n\t \n\tVerfahren" ."\n\t"; if ($vnam == "") { echo $vbez; // nur die Nummer } else { // Name oder beides if ($showkey) {echo "(".$vbez.") ";} echo $vnam; } echo "" ."\n\t " ."\n"; } } } if (pg_num_rows($res_strittigeGrenze) > 0) { // 1 Zeile echo "\n\nStrittige 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." ."\n \n"; } } echo "\n"; // G R U N D B U C H echo "\n\n" ."\n" ."\n\t" ."\n\t" ."\n" ."\n
" ."\n\t\t

Grundbücher

" ."\n\t
" ."\n\t\t" ."\n\t
"; // B U C H U N G S S T E L L E N zum FS (istGebucht) $sql ="SELECT s.gml_id, s.buchungsart, s.laufendenummer as lfd, s.zaehler, s.nenner, s.nummerimaufteilungsplan as nrpl, s.beschreibungdessondereigentums as sond, b.v AS bart, b.d AS barttitle FROM ax_flurstueck f JOIN ax_buchungsstelle s ON s.gml_id=f.istgebucht LEFT JOIN alkis_wertearten b ON cast(s.buchungsart AS character varying)=b.k AND b.element='ax_buchungsstelle' AND b.bezeichnung='buchungsart' WHERE f.gml_id= $1 AND f.endet IS NULL AND s.endet IS NULL ORDER BY s.laufendenummer;"; $v = array($gmlid); $ress = pg_prepare("", $sql); $ress = pg_execute("", $v); if (!$ress) { echo "\n

Keine Buchungsstelle.

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

Fehler:".pg_result_error($ress)."

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

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

";} } } $bs=0; // Z.BuchungsStelle while($rows = pg_fetch_array($ress)) { // Schleife Buchungs-Stelle $gmls=$rows["gml_id"]; // gml b-Stelle $lfd=$rows["lfd"]; // BVNR $barttitle=htmlentities($rows["barttitle"], ENT_QUOTES, "UTF-8"); // .. für Anzeige aufbereitet // B U C H U N G S B L A T T zur Buchungsstelle (istBestandteilVon) $sql="SELECT b.gml_id, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, wb.v AS blattartv, wb.d AS blattartd, z.bezeichnung FROM ax_buchungsstelle s JOIN ax_buchungsblatt b ON b.gml_id=s.istbestandteilvon LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk LEFT JOIN alkis_wertearten wb ON cast(b.blattart AS character varying)=wb.k AND wb.element='ax_buchungsblatt' AND wb.bezeichnung='blattart' WHERE s.gml_id = $1 AND s.endet IS NULL AND b.endet IS NULL AND z.endet IS NULL ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung ;"; $v=array($gmls); $resg=pg_prepare("", $sql); $resg=pg_execute("", $v); if (!$resg) { echo "\n

Kein Buchungsblatt.

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

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

";} } $bl=0; // Z.Blatt while($rowg = pg_fetch_array($resg)) { $gmlg=$rowg["gml_id"]; $beznam=$rowg["bezeichnung"]; $blattkeyg=$rowg["blattart"]; // Key $blattartg=$rowg["blattartv"]; // Value $blatt=$rowg["blatt"]; echo "\n
" ."\n" ."\n"; // 1 row only echo "\n\t\n\t" // ende aussen rechts ."\n" ."\n
"; // Outer linke Spalte: // Rahmen mit GB-Kennz if ($blattkeyg == 1000) { echo "\n\t\t"; }else { echo "\n\t\t
"; // GB fiktiv = Rahmen dotted } echo "\n\t\t\n\t\t\t" ."\n\t\t\t" ."\n\t\t\t" ."\n\t\t\t" ."\n\t\t" ."\n\t\t" ."\n\t\t\t" ."\n\t\t\t" ."\n\t\t\t" ."\n\t\t\t" ."\n\t\t" ."\n\t\t
Bezirk"; if ($showkey) {echo "".$blattkeyg." ";} echo $blattartg."Lfd-Nr.Buchungsart
"; if ($showkey) {echo "".$rowg["bezirk"]."
";} echo $beznam." 
".$blatt."".$lfd.""; if ($showkey) {echo "".$rows["buchungsart"]."
";} echo $rows["bart"]."
"; // Miteigentumsanteil if ($rows["zaehler"] <> "") { echo "\n

".$rows["zaehler"]."/".$rows["nenner"]." Anteil am Flurstück

"; } echo "\n\t
"; // Outer rechte Spalte: NW-Links echo "\n\t\t"; // berechtigte Buchungstellen (im rechten Teil der äußeren Tab. $cnt_ber = ber_bs_hinw($gmls, $gmlid); // Hinweis ausgeben, zählen echo "\n\t
"; // +++ Weitere Felder ausgeben? BeschreibungDesUmfangsDerBuchung if ($rows["sond"] != "") { echo "\n

Verbunden mit dem Sondereigentum
".$rows["sond"]."

"; } if ($rows["nrpl"] != "") { echo "\n

Nummer ".$rows["nrpl"]." im Aufteilungsplan.

"; } // E I G E N T U E M E R, zum GB // Person <-benennt< AX_Namensnummer >istBestandteilVon-> AX_Buchungsblatt if ($eig=="j") { // Wahlweise mit/ohne Eigentümer $n = eigentuemer($gmlg, false, ""); // hier ohne Adresse if ($n == 0) { if ($blattkeyg == 1000) { echo "\n

Keine Namensnummer gefunden.

"; } else { echo "\n

ohne Eigentümer.

"; } } } // B e r e c h t i g t e B u c h u n g e n ... zu dieser Buchungs-Stelle. Optional. if ($berbu=="j") { // Wahlweise anzeigen echo "\n
\n

Berechtigte Buchungen

" ."\n

".$cnt_ber." Buchungen mit Rechten an der Buchung ".$lfd." auf ".$blattartg." ".$blatt." von ".$beznam.":

"; ber_bs_anz($gmls, $eig); // berechtigte Buchungstellen und GB-Blätter Anzeigen, und ggf. auch mit Eigentümer } $bl++; // Zähl Blatt } if ($bl == 0) {echo "\n

Kein Buchungsblatt zur Buchungstelle gefunden.

";} $bs++; // Zähl Buchungs-Stelle } pg_free_result($resg); if ($bs == 0) {echo "\n

Keine Buchungstelle zum Flurstück gefunden.

";} pg_close($con); echo <<
zurück  Drucken  Export  END; footer($gmlid, $_SERVER['PHP_SELF']."?", "&eig=".$eig."&berbu=".$berbu); ?>