Index: /trunk/data/mapbender/http/nav/alkisnav_grd.php =================================================================== --- /trunk/data/mapbender/http/nav/alkisnav_grd.php (revision 67) +++ /trunk/data/mapbender/http/nav/alkisnav_grd.php (revision 68) @@ -1,12 +1,8 @@ @@ -29,30 +25,10 @@ } -function is_blatt(&$wert) { - // Prueft, ob eine Eingabe dem Format von Grundbuch-Blatt entspricht. - // Die Blatt-Nummern wird dabei auf das Datenbank-Format mit fuehrenden Nullen ergaenzt (&). - // +++ Nur ein Aufruf der Function. In aufrufendes Programm integrieren? - $len=strlen($wert); - if ($len < 1 or $len > 7) {return false;}; - if (trim($wert, "0..9") == "") { // Normalfall: nur Zahlen - return true; - } else { // Sonderfall Zusatz-Buchstabe am Ende - $zahl=substr($wert,0,$len-1); - $zus=strtoupper(substr($wert,$len-1,1)); - if ( (trim($zahl, "0..9") == "") and (trim($zus, "A..Z") == "")) { - $wert=$zahl.$zus; - return true; - } else { - return false; - } - } -} - function ZerlegungGBKennz($gbkennz) { -// Das eingegebene Grundbuch-Kennzeichen auseinander nehmen (gggg-999999z-BVNR) -// Return: 0=Fehler, 1=Such Bezirk-Name oder Listen alle Bezirke -// 2=Such Bezirk-Nummer $zgbbez, 3=Such Blatt $zblatt, 4=Such BVNR $zbvnr - global $debug, $zgbbez, $zblatt, $zbvnr; - $arr = explode("-", $gbkennz, 3); + // Das eingegebene Grundbuch-Kennzeichen auseinander nehmen (gggg-999999z-BVNR) + // Return: 0=Fehler, 1=Such Bezirk-Name oder Listen alle Bezirke + // 2=Such Bezirk-Nummer $zgbbez, 3=Such Blatt $zblatt, 4=Such BVNR $zbvnr + global $debug, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr; + $arr=explode("-", $gbkennz, 3); $zgbbez=trim($arr[0]); $zblatt=trim($arr[1]); @@ -60,27 +36,44 @@ if ($zgbbez == "") { // keine Eingabe return 1; // alle Bezirke listen - } elseif ( ! is_ne_zahl($zgbbez)) { + } elseif ( ! is_ne_zahl($zgbbez)) { // Alphabetische Eingabe return 1; // Such Bezirk-NAME } elseif ($zblatt == "") { return 2; // Such Bezirk-NUMMER - } elseif (is_blatt($zblatt)) { - if ($zbvnr == "") { - return 3; // Such BLATT - } elseif (is_ne_zahl($zbvnr)) { - // $zbvnr=ltrim($zbvnr,"0"); // DB-Format ist integer - // Vorsicht, Wert "0" ist moeglich und gueltig - return 4; // Such Grundstueck + } else { // Format von Blatt pruefen + $len=strlen($zblatt); + if ($len > 0 AND $len < 8) { + if (trim($zblatt, "0..9") == "") { // Normalfall: nur Zahlen + $zblattn= ltrim($zblatt, "0"); + $zblattz=""; + } else { // Sonderfall: Zusatz-Buchstabe am Ende + $zblattn=substr($zblatt,0,$len-1); + $zblattz=strtoupper(substr($zblatt,$len-1,1)); + if ( (trim($zblattn, "0..9") == "") and (trim($zblattz, "A..Z") == "")) { + $zblatt=$zblattn.$zblattz; + $zblattn= ltrim($zblattn, "0"); // ohne fuehrende Nullen + } else { + echo "
"; + return 0; + } + } + if ($zbvnr == "") { + return 3; // Such BLATT + } elseif (is_ne_zahl($zbvnr)) { + // $zbvnr=ltrim($zbvnr,"0"); // DB-Format ist integer + // Vorsicht, Wert "0" ist moeglich und gueltig + return 4; // Such Grundstueck + } else { + echo "
"; + return 0; + } } else { - echo "
"; + echo "
"; return 0; } - } else { - echo "
"; - return 0; } } function SuchGBBezName() { -// Grundbuch-Bezirk suchen nach Name(-nsanfang) + // Grundbuch-Bezirk suchen nach Name(-nsanfang) global $con, $gkz, $gemeinde, $debug, $gbkennz; $linelimit=50; @@ -134,8 +127,7 @@ global $con, $gkz, $gemeinde, $debug, $zgbbez, $auskpath; $linelimit=200; // max. Blatt je Bezirk - // Dies linelimit nicht ausreichend fuer alle Blaetter eines Bezirks, aber ... - // Wenn man die Blatt-Nr nicht kennt, kommt man hier sowieso nicht weiter. - // Es nutzt also nichts, hier Tausende Nummern aufzulisten. - // +++ Wildcard in Blatt zulassen? Schwiegig bei numerischem Wert mit fuehrenden Nullen. + // Dies linelimit ist nicht ausreichend fuer alle Blaetter eines Bezirks, aber ... + // Wenn man die Blatt-Nr nicht kennt, kommt man hier sowieso nicht weiter. + // Es nutzt also nichts, hier Tausende Nummern aufzulisten. if ($showParent) { $sql ="SELECT a.bezeichnung AS ag, g.bezeichnung FROM ax_buchungsblattbezirk g "; @@ -163,8 +155,8 @@ return; } - // > 1 auch möglich ??? + // > 1 auch möglich? echo "\n
GB-Kennzeichen Typ=".$kennztyp."
";} -// Wurde eine gml_id (internes Kennzeichen) aus einem Link verwendet? + +// Wurde eine gml_id (internes Kennzeichen) aus einem Self-Link verwendet? +// Dann hat das Prioritaet, nicht nach $gbkennz suchen. If (isset($gbuchung)) { // gml der Buchungsstelle if ($debug >= 2) {echo "Link Buchung(gml)=".$gbuchung."
";} @@ -422,5 +417,5 @@ }; } else { - // Kein internes Kennzeichen (gml_id), also nur die (manuelle) Eingabe interpretieren. + // Kein internes Kennzeichen (gml_id), die (manuelle) Eingabe interpretieren. switch ($kennztyp) { // +++ Ersten Schritt "Suche Amtsgericht" voranstellen? Index: /trunk/data/mapbender/http/nav/alkisnav.css =================================================================== --- /trunk/data/mapbender/http/nav/alkisnav.css (revision 67) +++ /trunk/data/mapbender/http/nav/alkisnav.css (revision 68) @@ -1,39 +1,29 @@ /* Style fuer ALKIS-Navigation - Version 2011-01-10 + Version 2011-01-13 */ -body,p,a,.textfield,.sbutton,.cityText,.streetText,.city {font-family: Verdana, Arial, Helvetica, sans-serif;} +body,p,a,.textfield,.sbutton {font-family: Verdana, Arial, Helvetica, sans-serif;} body {font-size: 11px; color: #000000; margin: 0px;} p {font-size: 10px;} -p.hilfe {font-size: 9px; text-align: right; color: gray;} /* Programmier-Hilfsfelder */ +p.hilfe {font-size: 9px; text-align: right; color: gray; padding-right: 3px;} /* Programmier-Hilfsfelder */ p.start {font-size: 9px; color: gray;} p.nam {font-size: 10px; border: 1px solid navy; padding: 3px; margin: 0px;} p.err {font-size: 11px; color: red;} -a {font-size: 11px; text-decoration: none; margin: 0px;} -/* a:link {color: #000000;} a:visited{color: #000000;} */ - a:hover {color: red;} - a:active {color: red;} - -/* abgestuft eingerueckte Treffer in Suche */ +a {text-decoration: none;} /* font-size: 11px; */ +a:hover, a:active {color: red;} +/* abgestuft eingerueckte Treffer in der Suche */ div {margin: 0px; padding: 0px;} div.back {font-size: 10px; color: gray; border-bottom: 1px dotted gray;} div.nam {color: maroon;} /* Name */ +div.gk {color: black; margin-left: 0px; margin-top: 6px;} /* Gemarkung o. GB-Bezirk*/ +div.fl {color: olive; margin-left: 9px; margin-top: 4px;} /* Flur */ div.gb {color: green; margin-left: 6px;} /* Grundbuch */ -div.gk {color: black; margin-left: 0px; margin-top: 6px;} /* Gemarkung */ -div.fl {color: olive; margin-left: 9px; margin-top: 4px;} /* Flur */ -div.st {color: maroon;} div.gs {color: olive; margin-left: 12px; margin-top: 2px;} /* Grundstueck, BVNR */ div.fs {color: navy; margin-left: 18px; margin-top: 0px;} /* Flurstueck */ - -/* Abstufungen (margin-left) - Adr.: - Name: - Flst: gk - fl - fs - Grdb: gk - gb - gs - fs - 0 6 9 12 18 - */ -td.hsnr {text-align: center; margin: 2px;} -hr {color: gray;} +div.stu {color: maroon; font-size: 13px;} /* Strasse - Ueberschrift */ +div.stl {color: maroon; font-size: 11px; margin-top: 3px;} /* Strasse - Liste*/ +td.hsnr {font-size: 11px; text-align: center; padding-left: 4px; padding-right: 4px;} /* Hausnummer */ +hr {color: gray;} .textfield{ @@ -51,7 +41,5 @@ } img.nwlink {border: 0px; margin: 0px; padding: 0px;} /* Icons */ -.letter {cursor: pointer; font-weight: bold;} -.cityText {color: black;} -.streetText {color: #6699FF; font-size: 13px; font-weight: bold;} +.letter {cursor: pointer; font-weight: bold;} /* Liste Anfangsbuchstaben */ /* Registertabs */ @@ -59,7 +47,5 @@ div#tabs ul { position: absolute; top: 0px; - margin-top: 0px; - margin-left: 0px; - margin-bottom: 20px; + margin-top: 0px; margin-left: 0px; margin-bottom: 20px; padding: 0px; width: 220px; Index: /trunk/data/mapbender/http/nav/alkisnav_fls.php =================================================================== --- /trunk/data/mapbender/http/nav/alkisnav_fls.php (revision 67) +++ /trunk/data/mapbender/http/nav/alkisnav_fls.php (revision 68) @@ -1,10 +1,6 @@ 0) {$sql.=" AND v.gemeinde=".$gemeinde;} // wie prepared? $sql.=" ORDER BY g.bezeichnung LIMIT $2 ;"; @@ -96,8 +91,7 @@ echo "\nGemarkung ".$zgemkg." Flur ".$zflur." FlurstÃŒck ".$zzaehler."
";} - nurEinFlurstueck(); + EinFlurstueck(); break; case 5: if ($debug >= 2) {echo "Gemarkung ".$zgemkg." Flur ".$zflur." FlurstÃŒck ".$zzaehler."/".$znenner."
";} - nurEinFlurstueck(); + EinFlurstueck(); break; } Index: /trunk/data/mapbender/http/nav/alkisnav_eig.php =================================================================== --- /trunk/data/mapbender/http/nav/alkisnav_eig.php (revision 67) +++ /trunk/data/mapbender/http/nav/alkisnav_eig.php (revision 68) @@ -1,9 +1,9 @@ Fehler bei der Verbindung zur Datenbank".$dbname); +// ToDo: Buchung zwischen Blatt und Flst? ?> @@ -21,4 +21,5 @@ ".$nnam.", ".$vnam."\nFehler bei Name
\n"; - if ($debug >= 3) {echo "".$sql."
";} - } + if (!$res) {echo "\nFehler bei Name
\n";} // Daten der Person echo "\nFehler bei Name
"; - } + $sql.="ORDER BY k.bezeichnung, k.lage LIMIT $2 ;"; + $v=array($match,$linelimit); + $res=pg_prepare("", $sql); + $res=pg_execute("", $v); + if (!$res) {return "\nFehler bei Name
";} $cnt = 0; while($row = pg_fetch_array($res)) { - $sname=$row["bezeichnung"]; + $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); $gkey=$row["schluesselgesamt"]; - $gemname=$row["gemname"]; + $gemname=htmlentities($row["gemname"], ENT_QUOTES, "UTF-8"); $skey=$row["lage"]; - echo "\n\tKeine Straße.
"; } elseif($cnt == 1) { // Eindeutig - $str_schl=$skey; // dann gleich weiter + $str_schl=$gkey; // dann gleich weiter } elseif($cnt >= $linelimit) { echo ".. und weitere
"; @@ -82,18 +71,61 @@ } +function suchStrKey() { + // Straßen nach Strassen-Schluessel + global $con, $street, $scalestr, $str_schl, $gkz, $gemeinde, $debug; + $linelimit=50; + if(preg_match("/\*/",$street)) { + $match=trim(preg_replace("/\*/i","%",$street)); + // -> Anwender muss fuehrende Nullen eingeben oder fuehrende Wildcard + } else { + $match=str_pad($street, 5, "0", STR_PAD_LEFT); // "Wie eine Zahl" verarbeiten + } + //if ($debug >= 2) {echo "sql-Match='".$match."'
";} + $sql ="SELECT g.bezeichnung AS gemname, k.bezeichnung, k.schluesselgesamt, k.lage "; + $sql.="FROM ax_lagebezeichnungkatalogeintrag as k "; + $sql.="JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde "; + $sql.="WHERE k.lage LIKE $1 "; + if($gemeinde > 0) { // Filter Gemeinde? + $sql.="AND k.gemeinde=".$gemeinde." "; + } + $sql.="ORDER BY k.lage, k.bezeichnung LIMIT $2 ;"; + $v=array($match,$linelimit); + $res=pg_prepare("", $sql); + $res=pg_execute("", $v); + if (!$res) {return "\nFehler bei Schlüssel
";} + $cnt = 0; + while($row = pg_fetch_array($res)) { + $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); + $gkey=$row["schluesselgesamt"]; + $gemname=htmlentities($row["gemname"], ENT_QUOTES, "UTF-8"); + $skey=$row["lage"]; + echo "\n\tKeine Straße mit Schlüssel ".$match."
"; + } elseif($cnt == 1) { // Eindeutig + $str_schl=$gkey; // dann gleich weiter + } elseif($cnt >= $linelimit) { + echo "\n.. und weitere
"; + } else { + echo "\n".$cnt." Straßen
"; + } + return; +} + function suchHausZurStr(){ -// ======================= -// Haeuser zu einer Straße -// ======================= + // Haeuser zu einer Straße global $con, $str_schl, $gkz, $scalestr, $scalehs, $epsg, $gemeinde, $debug; - // Strasse zum Strassenschluessel $sql ="SELECT k.bezeichnung, k.land, k.regierungsbezirk, k.kreis, k.gemeinde, k.lage "; - $sql.="FROM ax_lagebezeichnungkatalogeintrag as k "; - $sql.="WHERE schluesselgesamt = $1 LIMIT 1"; + $sql.="FROM ax_lagebezeichnungkatalogeintrag AS k WHERE schluesselgesamt = $1 LIMIT 1"; $v=array($str_schl); $res=pg_prepare("", $sql); $res=pg_execute("", $v); - if($row = pg_fetch_array($res)) { // Strassenschluessel gefunden $sname=$row["bezeichnung"]; @@ -102,8 +134,6 @@ $kreis=$row["kreis"]; $gemnd=$row["gemeinde"]; - //$lage=$row["lage"]; $nr=ltrim($row["lage"], "0"); - - // eine Koordinaten zur ausgewählten Strasse besorgen + // eine Koordinate zur Strasse besorgen // ax_Flurstueck >zeigtAuf> ax_LagebezeichnungOhneHausnummer $sqlko ="SELECT "; @@ -115,5 +145,4 @@ $sqlko.="WHERE o.land= $1 AND o.regierungsbezirk= $2 AND o.kreis= $3 AND o.gemeinde= $4 AND o.lage= $5 "; $sqlko.="AND v.beziehungsart='zeigtAuf' LIMIT 1;"; // die erstbeste beliebige Koordinate -// $resko=pg_query($con, $sqlko); $v=array($land,$regb,$kreis,$gemnd,$nr); $resko=pg_prepare("", $sqlko); @@ -127,21 +156,20 @@ } $sqlko.=""; - //if ($debug >= 2) {echo "\nKoord: '".$x."' '".$y."'
";} - echo "\n".$sql."
";} - $resh=pg_query($con, $sql); + $sql.="ORDER BY lpad(split_part(hausnummer,' ',1), 4, '0'), split_part(hausnummer,' ',2);"; + $v=array($land,$regb,$kreis,$nr); + $resh=pg_prepare("", $sql); + $resh=pg_execute("", $v); $cnt=0; $count=0; - echo ""; echo "".$nr.""; - echo "\n\t | "; + echo ""; $cnt++; $count++; @@ -196,8 +220,8 @@ // =========== if(isset($epsg)) { - if ($debug >= 2) {echo "