in die Conf? preg_match("/^(\D+)(\d*)(\D*)/",$street,$matches); # 4 matches name/nr/zusatz echo "match: ".$matches[1].",".$matches[2].",".$matches[3]; $matches[1] = preg_replace("/strasse/i","str", $matches[1]); $matches[1] = preg_replace("/str\./i","str", $matches[1]); if(preg_match("/\*/",$matches[1])){ $match="'".trim(preg_replace("/\*/i","%", strtoupper($matches[1]))). "' "; } else { $match="'".trim($matches[1])."%' "; } $sql ="SELECT g.bezeichnung AS gemname, k.bezeichnung, k.schluesselgesamt, k.lage "; $sql.="FROM ax_lagebezeichnungkatalogeintrag as k "; $sql.="JOIN ax_gemeinde g "; $sql.="ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde "; $sql.="WHERE k.bezeichnung ILIKE ".$match." "; if($gemeinde > 0) { // Filter Gemeinde? $sql.="AND k.gemeinde=".$gemeinde." "; } $sql.="ORDER BY k.bezeichnung, k.lage "; // +++ if ($gemeinde == 0) ORDER Gemeinde, Straße? $sql.="LIMIT ".$linelimit; $res=pg_query($con, $sql); if (!$res) { return "\n

Fehler bei Name

"; } $cnt = 0; while($row = pg_fetch_array($res)) { $sname=$row["bezeichnung"]; $gkey=$row["schluesselgesamt"]; $gemname=$row["gemname"]; $skey=$row["lage"]; echo "\n\t
"; echo "".$sname; if ($gemeinde == 0) { echo " - ".$gemname; } echo "
"; echo "
"; $cnt++; } if($cnt == 0) { echo "

Keine Straße.

"; } elseif($cnt == 1) { // Eindeutig $str_schl=$skey; // dann gleich weiter } elseif($cnt >= $linelimit) { echo "

.. und weitere

"; } return; } function suchHausZurStr(){ // ======================= // 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"; $v=array($str_schl); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if($row = pg_fetch_array($res)) { // Strassenschluessel gefunden $sname=$row["bezeichnung"]; $land =$row["land"]; $regb =$row["regierungsbezirk"]; $kreis=$row["kreis"]; $gemnd=$row["gemeinde"]; //$lage=$row["lage"]; $nr=ltrim($row["lage"], "0"); // eine Koordinaten zur ausgewählten Strasse besorgen // ax_Flurstueck >zeigtAuf> ax_LagebezeichnungOhneHausnummer $sqlko ="SELECT "; $sqlko.="x(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS x, "; $sqlko.="y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y "; $sqlko.="FROM ax_lagebezeichnungohnehausnummer o "; $sqlko.="JOIN alkis_beziehungen v ON o.gml_id=v.beziehung_zu "; $sqlko.="JOIN ax_flurstueck f ON v.beziehung_von=f.gml_id "; $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); $resko=pg_execute("", $v); if ($resko) { $rowko=pg_fetch_array($resko); $x=$rowko["x"]; $y=$rowko["y"]; } else { echo "\n

Fehler bei Koordinate zur Straße

"; } $sqlko.=""; //if ($debug >= 2) {echo "\n

Koord: '".$x."' '".$y."'

";} echo "\n
"; if ($x > 0) { // Koord. bekommen? echo "".$sname." (".$nr.")"; } else { // keine Koord. dazu gefunden echo $sname." (".$nr.")"; // nur Anzeige, ohne Link } echo "\n

"; // Haeuser zum Strassenschluessel $sql ="SELECT h.hausnummer, "; $sql.="x(st_transform(st_Centroid(g.wkb_geometry), ".$epsg.")) AS x, "; $sql.="y(st_transform(st_Centroid(g.wkb_geometry), ".$epsg.")) AS y "; $sql.="FROM ax_lagebezeichnungmithausnummer h "; $sql.="JOIN alkis_beziehungen v ON h.gml_id=v.beziehung_zu "; $sql.="JOIN ax_gebaeude g ON v.beziehung_von=g.gml_id "; $sql.="WHERE h.land=".$land." AND h.regierungsbezirk=".$regb." AND h.kreis=".$kreis." AND h.lage=".$nr." "; // integer $sql.="AND v.beziehungsart='zeigtAuf' "; $sql.="ORDER BY hausnummer;"; // Sortierproblem: Hausnummer, numerischer Teil sollte numerisch sortiert sein. //if ($debug >= 3) {echo "\n

".$sql."

";} $resh=pg_query($con, $sql); $cnt=0; $count=0; echo ""; // mehrere Hausnummern je Zeile ausgeben while($rowh = pg_fetch_array($resh)) { if($count == 0){ echo "\n"; } $gml=$rowh["gml_id"]; $nr=$rowh["hausnummer"]; $x=$rowh["x"]; $y=$rowh["y"]; echo "\n\t"; $cnt++; $count++; if($count == 6) { echo "\n"; $count = 0; } } if($count > 0) {echo "\n";} echo "\n
"; echo "".$nr.""; echo "\n\t
"; echo "\n

".$cnt." Hausnummern

"; } else { echo "\n

Kein Haus.

"; } return; } // =========== // Start hier! // =========== if(isset($epsg)) { if ($debug >= 2) {echo "

aktueller EPSG='".$epsg."'

";} // aus MB If (substr($epsg, 0, 5) == "EPSG:") {$epsg=substr($epsg, 5);} } else { if ($debug >= 2) {echo "

kein EPSG gesetzt

";} $epsg=$gui_epsg; // aus Conf } if ($debug >= 2) { if(isset($gemeinde)) {echo "

Filter Gemeinde = ".$gemeinde."

"; } else {echo "

Kein Filter Gemeinde

";} } if(isset($street)) { // dies ist noch nicht möglich, es muesste der Gesamt-Keystring eingegeben werden if (is_numeric($street)) { $str_schl = $street; // Schluessel (eindeutig) ist schon gesetzt } else { suchStrName(); // Suche nach Name } } // Strassenschluessel suchen // Verknuepfung zwischen "suchStrName" und "suchHausZurStr" uber Gesamt-Schluessel // Alternative für Eingabefeld (nur db-Feld "lage")? // z.B. HIER trennen zwischen Eingabe-Key und Result-Key if(isset($str_schl)){ suchHausZurStr(); } ?>