pg_prepare + pg_execute)
01.02.2011 *Left* Join - Fehlertoleranz bei unvollstaendigen Schluesseltabellen
07.02.2011 JOIN ax_gemeinde auch ueber regierungsbezirk
11.07.2011 Ersetzen $self durch $_SERVER['PHP_SELF']."?"
25.07.2011 PostNAS 0.5/0.6 Versionen unterscheiden
ToDo: Entschluesseln Kreis usw.
*/
//ini_set('error_reporting', 'E_ALL & ~ E_NOTICE');
session_start();
$gkz=urldecode($_REQUEST["gkz"]);
require_once("alkis_conf_location.php");
if ($auth == "mapbender") { // Bindung an Mapbender-Authentifizierung
require_once($mapbender);
}
include("alkisfkt.php");
?>
ALKIS Lagebezeichnung
Fehler beim Verbinden der DB\n";
// Lagebezeichnung
$sql ="SELECT s.bezeichnung AS snam, k.bezeichnung AS knam, g.bezeichnung AS gnam, l.land, l.regierungsbezirk, l.kreis, l.gemeinde, l.lage, ";
switch ($ltyp) {
case "m": // "Mit HsNr"
$sql.="l.hausnummer ";
break;
case "p": // "mit PseudoNr"
$sql.="l.pseudonummer, l.laufendenummer ";
break;
case "o": //"Ohne HsNr"
$sql.="l.unverschluesselt ";
break;
}
$sql.="FROM ".$tnam." l ";
// Gemeinde, Kreis, Strasse entschluesseln
$sql.="LEFT JOIN ax_gemeinde g ON l.land=g.land AND l.regierungsbezirk=g.regierungsbezirk AND l.kreis=g.kreis AND l.gemeinde=g.gemeinde ";
$sql.="LEFT JOIN ax_kreisregion k ON l.land=k.land AND l.regierungsbezirk=k.regierungsbezirk AND l.kreis=k.kreis ";
$sql.="LEFT JOIN ax_lagebezeichnungkatalogeintrag s ";
if ($dbvers == "05") { // bis PostNAS 0.5
// Besonderheit: unterschiedliche Feldformate und Fuellungen!!!
// +++ Nach vollstaendiger Umstellung diesen Programmteil entfernen
switch ($ltyp) {
case "o": //"Ohne HsNr"
// hier beide .lage als Char(5)
// in ax_lagebezeichnungKatalogeintrag mit führenden Nullen
// in ax_lagebezeichnungOhneHausnummer jedoch ohne führende Nullen
$sql.="ON l.land=s.land AND l.regierungsbezirk=s.regierungsbezirk AND l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=trim(leading '0' from s.lage) ";
break;
default: // "Mit HsNr" + "mit PseudoNr"
// ax_LagebezeichnungKatalogeintrag.lage ist char,
// ax_LagebezeichnungMitHausnummer.lage ist integer,
// ax_lagebezeichnungMitPseudonummer.lage ist integer,
$sql.="ON l.land=s.land AND l.regierungsbezirk=s.regierungsbezirk AND l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND to_char(l.lage, 'FM00000')=s.lage ";
break;
}
} else { // ab PostNAS 0.6 char(5) mit fuehr.Nullen
$sql.="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 ";
}
$sql.="WHERE l.gml_id= $1;";
$v = array($gmlid);
$res = pg_prepare("", $sql);
$res = pg_execute("", $v);
if (!$res) echo "\n
";
break;
case "p": // "mit PseudoNr"
echo "\n\t\t
Haus-Nr
";
echo "\n\t\t
lfd.-Nr
";
break;
case "o": //"Ohne HsNr"
echo "\n\t\t
unverschlüsselte Lage
";
break;
}
echo "\n\t
";
echo "\n\t
";
echo "\n\t\t
".$land."
";
echo "\n\t\t
".$regbez."
";
echo "\n\t\t
";
if ($showkey) {
echo "".$kreis." ";
}
echo $knam."
";
echo "\n\t\t
";
if ($showkey) {
echo "".$gem." ";
}
echo $gnam."
";
echo "\n\t\t
";
if ($showkey) {
echo "".$lage." ";
}
echo $snam."
";
switch ($ltyp) {
case "m":
echo "\n\t\t
".$hsnr."
";
break;
case "p":
echo "\n\t\t
".$pseu."
";
echo "\n\t\t
".$lfd."
";
break;
case "o":
echo "\n\t\t
".$unver."
";
break;
}
echo "\n\t
";
echo "\n\t
";
echo "\n\t
\n\t
";
// Kopf Rechts: weitere Daten?
// z.B. hier Ausgabe von "georeferenzierte Gebäudeadresse" ?
if ($idanzeige) {linkgml($gkz, $gmlid, "Lage"); }
echo "\n\t
\n
\n
";
// Ende Seitenkopf
// F L U R S T U E C K E
if ($ltyp <> "p") { // Pseudonummer linkt nur Gebäude
echo "\n\n
Flurstücke
\n";
echo "\n
mit dieser Lagebezeichnung.
";
// ax_Flurstueck >weistAuf> ax_LagebezeichnungMitHausnummer
// ax_Flurstueck >zeigtAuf> ax_LagebezeichnungOhneHausnummer
switch ($ltyp) {
case "m":
$bezart="weistAuf";
break;
case "o":
$bezart="zeigtAuf";
break;
}
$sql="SELECT g.gemarkungsnummer, g.bezeichnung, ";
$sql.="f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.regierungsbezirk, f.kreis, f.gemeinde, f.amtlicheflaeche ";
$sql.="FROM ax_flurstueck f ";
$sql.="JOIN alkis_beziehungen v ON f.gml_id=v.beziehung_von ";
$sql.="LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
$sql.="WHERE v.beziehung_zu= $1 "; // id Lage
$sql.="AND v.beziehungsart= $2 ";
$sql.="ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
$v = array($gmlid,$bezart);
$resf = pg_prepare("", $sql);
$resf = pg_execute("", $v);
if (!$resf) {echo "
weitere Nebengebäude: ";
$sql ="SELECT l.gml_id, l.laufendenummer FROM ax_lagebezeichnungmitpseudonummer l ";
$sql.=$whereclaus."AND pseudonummer= $6 AND laufendenummer <> $7 ORDER BY laufendenummer;";
$v = array($land,$regbez,$kreis,$gem,$lage,$pseu,$lfd);
$res = pg_prepare("", $sql);
$res = pg_execute("", $v);
if (!$res) echo "\n
Fehler bei Nebengebäude. ".$sql."
\n";
while($row = pg_fetch_array($res)) {
echo "\n\tlfd.-Nr ".$row["laufendenummer"]." ";
}
echo "\n";
break;
}
}
// G E B A E U D E
// Mittelfristig ist zu ueberlegen, ob hier weitere Einzelheiten dargestellt werden,
// oder ob nicht besser ein eigenes Modul alkisgebaeude.php dies uebernehmen sollte.
// Dort sollten auch diese Relationen abgebildet werden:
// ax_gebaeude >gehoertZu> ax_gebaeude (ringförmige Verbindung Gebäudekomplex)
// ax_gebaeude (umschliesst) ax_bauteil
// ax_gebaeude >gehoert> ax_person (Ausnahme)
if ($ltyp <> "o") { // OhneHsNr linkt nur Flurst.
echo "\n\n
Gebäude
";
echo "\n
mit dieser Lagebezeichnung.
";
switch ($ltyp) {
case "p":
$bezart="hat";
break;
case "m":
$bezart="zeigtAuf";
break;
}
$sql ="SELECT g.gml_id, g.gebaeudefunktion, g.description, g.name, g.lagezurerdoberflaeche, g.bauweise, g.anzahlderoberirdischengeschosse AS aog, g.grundflaeche, g.individualname, g.zustand, ";
$sql.="round(area(g.wkb_geometry)::numeric,2) AS flaeche, h.bauweise_beschreibung, u.bezeichner ";
$sql.="FROM ax_gebaeude g ";
$sql.="JOIN alkis_beziehungen v ON g.gml_id=v.beziehung_von ";
$sql.="LEFT JOIN ax_gebaeude_bauweise h ON g.bauweise = h.bauweise_id ";
$sql.="LEFT JOIN ax_gebaeude_funktion u ON g.gebaeudefunktion = u.wert ";
$sql.="WHERE v.beziehung_zu= $1 AND v.beziehungsart= $2 ;";
$v = array($gmlid,$bezart);
$res = pg_prepare("", $sql);
$res = pg_execute("", $v);
if (!$res) echo "