0){ for($i=0; $i0){ for($i=0; $i 0)) { $v = array($h); $t = array('i'); $sql = "SELECT DISTINCT name, hausnummer, zusatz, plz, post_ortsname, "; $sql .= "SRID(the_geom) AS srid, AsGML(the_geom) AS gml ,"; $sql .= "(xmin(the_geom) - ".$bufferSH.") as minx, "; $sql .= "(ymin(the_geom) - ".$bufferSH.") as miny, "; $sql .= "(xmax(the_geom) + ".$bufferSH.") as maxx, "; $sql .= "(ymax(the_geom) + ".$bufferSH.") as maxy "; $sql .= "FROM hauskoordinaten "; $sql .= "WHERE hausnummer = $1 AND strschl_gesamt IN ("; for($i=0; $i 0){$sql .= ",";} $sql .= "$".($i+2); array_push($v,$str_schl[$i]); array_push($t,'i'); } $sql .= ")"; if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 25832) { $sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql); } $res = db_prep_query($sql,$v,$t); while($row = db_fetch_array($res)){ #$show = $row["name"]." ".$row["hausnummer"]; if($row["zusatz"] != 'null'){ # $show .= $row["zusatz"]; $show = $row["name"]." ".$row["hausnummer"].$row["zusatz"]; //$show = $row["name"]." ".$row["hausnummer"].$row["zusatz"]; TODO: exchange this, when the hauskoordinaten table is delivered in a homogenous encoding! } else {$show = $row["name"]." ".$row["hausnummer"];} $show .= ", " . $row["plz"]. " " . $row["post_ortsname"]; stack_it($arraySH,"haus",$show,"sh",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]); } } } } else { //is this 'else' obsolete? $sql = "SELECT DISTINCT name, hausnummer, zusatz, plz, post_ortsname, "; $sql .= "SRID(the_geom) AS srid, AsGML(the_geom) AS gml ,"; $sql .= "(xmin(the_geom) - ".$bufferSH.") as minx, "; $sql .= "(ymin(the_geom) - ".$bufferSH.") as miny, "; $sql .= "(xmax(the_geom) + ".$bufferSH.") as maxx, "; $sql .= "(ymax(the_geom) + ".$bufferSH.") as maxy "; $sql .= "FROM hauskoordinaten "; $sql .= "WHERE name ILIKE $1 AND hausnummer = $2 "; $v = array("%".$s."%",$h); $t = array('s','i'); if($z){ $sql .= "AND zusatz = $" . (count($v)+1); array_push($v,$z); array_push($t,'s'); } if($p){ $sql .= "AND plz = $" . (count($v)+1); array_push($v,$p); array_push($t,'i'); } if($o){ $sql .= "AND post_ortsname ILIKE $" . (count($v)+1); array_push($v,"%".$o."%"); array_push($t,'s'); } #$sql .= " GROUP BY the_geom, name, hausnummer, zusatz, plz, post_ortsname"; if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 25832) { $sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql); } $res = db_prep_query($sql,$v,$t); while($row = db_fetch_array($res)){ $show = $row["name"]." ".$row["hausnummer"]; //$show = $row["name"]." ".$row["hausnummer"]; TODO: see above if($row["zusatz"] != null){ $show .= $row["zusatz"]; } $show .= ", " . $row["plz"]. " " . $row["post_ortsname"]; stack_it($arraySH,"haus",$show,"sh",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]); } } return true; } //Wohnplatz function checkWP($plz,$name){ global $bufferWP, $arrayWP, $arrayWPKey, $epsg; $v = array(); $t = array(); checkMinLength($name); $sql = "SELECT DISTINCT gemeinde_gem_teile, gem_schl_neu, postleitzahl,"; $sql .= "SRID(the_geom) AS srid, AsGML(the_geom) AS gml ,"; $sql .= "(xmin(the_geom) - ".$bufferWP.") as minx, "; $sql .= "(ymin(the_geom) - ".$bufferWP.") as miny, "; $sql .= "(xmax(the_geom) + ".$bufferWP.") as maxx, "; $sql .= "(ymax(the_geom) + ".$bufferWP.") as maxy "; $sql .= "FROM wohnplatz WHERE "; if($plz == false){ $sql .= "gemeinde_gem_teile_upper ILIKE $1 "; array_push($v,"%".$name."%"); array_push($t,'s'); } else if($name == false){ $sql .= "postleitzahl = $1 "; array_push($v,$plz); array_push($t,'i'); } else{ $sql .= "postleitzahl = $1 AND gemeinde_gem_teile_upper ILIKE $2 "; array_push($v,$plz); array_push($t,'i'); array_push($v,"%".$name."%"); array_push($t,'s'); } $sql .= "GROUP BY the_geom, gemeinde_gem_teile, gem_schl_neu, postleitzahl"; if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 25832) { $sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql); } $res = db_prep_query($sql,$v,$t); while($row = db_fetch_array($res)){ $show = encode($row["gemeinde_gem_teile"]); $show.= " (Wohnplatz)"; if(intval($row['postleitzahl'])> 1){ $show .= " (".$row['postleitzahl'].")"; } stack_it($arrayWP,"wohnplatz",$show,"wp",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]); if(!in_array($row["gem_schl_neu"],$arrayWPKey)){ array_push($arrayWPKey,$row["gem_schl_neu"]); } } return true; } function checkGfromWP(){ global $arrayWPKey, $bufferG, $arrayG, $toleranceG, $epsg; if(count($arrayWPKey) == 0){ return false; } $v = array(); $t = array(); $sql = "SELECT DISTINCT gemeinde, "; $sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,$toleranceG)) AS gml ,"; $sql .= "(xmin(the_geom) - ".$bufferG.") as minx, "; $sql .= "(ymin(the_geom) - ".$bufferG.") as miny, "; $sql .= "(xmax(the_geom) + ".$bufferG.") as maxx, "; $sql .= "(ymax(the_geom) + ".$bufferG.") as maxy "; $sql .= "FROM gemeinden WHERE gem_schl_neu IN("; for($i=0; $i 0){$sql .= ",";} $sql .= "$".($i+1); array_push($v,$arrayWPKey[$i]); array_push($t,'i'); } $sql .= ") GROUP BY the_geom, gemeinde"; if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 25832) { $sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql); } $res = db_prep_query($sql,$v,$t); while($row = db_fetch_array($res)){ stack_it($arrayG,"gemeinde",encode($row["gemeinde"]." (Wohnplatz)"),"g",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]); } } function checkG($str){ global $bufferG, $arrayG, $toleranceG, $arrayWPKey, $epsg; checkMinLength($str); $tmp = array(); $sql = "SELECT DISTINCT gemeinde, gem_schl_neu, "; $sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,$toleranceG)) AS gml ,"; $sql .= "(xmin(the_geom) - ".$bufferG.") as minx, "; $sql .= "(ymin(the_geom) - ".$bufferG.") as miny, "; $sql .= "(xmax(the_geom) + ".$bufferG.") as maxx, "; $sql .= "(ymax(the_geom) + ".$bufferG.") as maxy "; $sql .= "FROM gemeinden WHERE gemeinde_upper ILIKE $1 "; #$sql .= "GROUP BY the_geom, gemeinde, gem_schl_neu"; if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 25832) { $sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql); } $v = array("%".$str."%"); $t = array('s'); $res = db_prep_query($sql,$v,$t); while($row = db_fetch_array($res)){ stack_it($arrayG,"gemeinde",encode($row["gemeinde"]." (Gemeinde)"),"g",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]); $tmp[count($tmp)] = $row["gem_schl_neu"]; } $arrayWPKey = array_diff($arrayWPKey,$tmp); } function checkK($str){ global $bufferK, $arrayK, $toleranceK, $epsg; checkMinLength($str); $sql = "SELECT DISTINCT kreis, "; $sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceK.")) AS gml ,"; $sql .= "(xmin(the_geom)-".$bufferK.") as minx, "; $sql .= "(ymin(the_geom)-".$bufferK.") as miny, "; $sql .= "(xmax(the_geom)+".$bufferK.") as maxx, "; $sql .= "(ymax(the_geom)+".$bufferK.") as maxy "; $sql .= "FROM kreis_fl WHERE kreis_upper ILIKE $1 "; if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 25832) { $sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql); } $v = array("%".$str."%"); $t = array('s'); $res = db_prep_query($sql,$v,$t); while($row = db_fetch_array($res)){ stack_it($arrayK,"kreis",encode($row["kreis"]." (Landkreis)"),"k",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]); } } function checkVg($str){ global $bufferV, $arrayV, $toleranceV, $epsg; checkMinLength($str); $sql = "SELECT DISTINCT vg, "; $sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceV.")) AS gml ,"; $sql .= "(xmin(the_geom)-".$bufferV.") as minx, "; $sql .= "(ymin(the_geom)-".$bufferV.") as miny, "; $sql .= "(xmax(the_geom)+".$bufferV.") as maxx, "; $sql .= "(ymax(the_geom)+".$bufferV.") as maxy "; $sql .= "FROM vg_fl WHERE vg ILIKE $1 "; if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 25832) { $sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql); } $v = array("%".$str."%"); $t = array('s'); $res = db_prep_query($sql,$v,$t); while($row = db_fetch_array($res)){ stack_it($arrayV,"verbandsgemeinde",encode($row["vg"]." (Verbandsgemeinde)"),"vg",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]); } } function stack_it(&$stack,$category,$showtitle,$prefix,$srid,$minx,$miny,$maxx,$maxy,$gml){ $doc = new DOMDocument(); $member = $doc->createElement("member"); $doc->appendChild($member); $member->setAttribute('id',$prefix.count($stack)); $fc = $doc->createElement("FeatureCollection"); $member->appendChild($fc); $fc->setAttribute("xmlns:gml","http://www.opengis.net/gml"); $bb = $doc->createElement("boundedBy"); $fc->appendChild($bb); $box = $doc->createElement("Box"); $bb->appendChild($box); $box->setAttribute('srsName',"EPSG:".$srid); $c = $doc->createElement("coordinates"); $box->appendChild($c); $coords = $doc->createTextNode($minx.",".$miny." ".$maxx.",".$maxy); $c->appendChild($coords); $fm = $doc->createElement("featureMember"); $fc->appendChild($fm); $wp = $doc->createElement($category); $fm->appendChild($wp); $title = $doc->createElement("title"); $wp->appendChild($title); $ttitle = $doc->createTextNode($showtitle); $title->appendChild($ttitle); $geom = $doc->createElement("the_geom"); $wp->appendChild($geom); $myNode = @simplexml_load_string($gml); $mySNode = dom_import_simplexml($myNode); $domNode = $doc->importNode($mySNode, true); $geom->appendChild($domNode); array_push($stack,$member); } function null_output(){ global $sstr, $arrayWP, $arrayG, $arrayK, $arraySH, $arraySTR, $arrayV; $doc = new DOMDocument('1.0'); $doc->encoding = CHARSET; $result = $doc->createElement("result"); $doc->appendChild($result); $ready = $doc->createElement('ready'); $result->appendChild($ready); $tready = $doc->createTextNode("true"); $ready->appendChild($tready); echo $doc->saveXML(); } function xml_output(){ global $sstr, $arrayWP, $arrayG, $arrayK, $arraySH, $arraySTR, $arrayV; $doc = new DOMDocument('1.0'); $doc->encoding = CHARSET; $result = $doc->createElement("result"); $doc->appendChild($result); for($i=0; $iimportNode($arrayWP[$i], true); $result->appendChild($domNode); } for($i=0; $iimportNode($arrayG[$i], true); $result->appendChild($domNode); } for($i=0; $iimportNode($arrayK[$i], true); $result->appendChild($domNode); } for($i=0; $iimportNode($arraySH[$i], true); $result->appendChild($domNode); } for($i=0; $iimportNode($arraySTR[$i], true); $result->appendChild($domNode); } for($i=0; $iimportNode($arrayV[$i], true); $result->appendChild($domNode); } $ready = $doc->createElement('ready'); $result->appendChild($ready); $tready = $doc->createTextNode("true"); $ready->appendChild($tready); echo $doc->saveXML(); } function encode($s){ # if(CHARSET == 'UTF-8'){ # $s = utf8_encode($s); # } return $s; } function getPlz($str){ $p = "/.*(\d{5}).*/"; $am = array(); if(preg_match($p, $str, $am)){ return $am[1]; } else{ return false; } } function getCity($str){ $p = "/(^\d{5}){0,1}(.*)/"; $am = array(); if(preg_match($p, $str, $am)){ return trim($am[2]); } else{ return false; } } function getNr($str){ $p = "/.*[^0-9](\d{1,4})[^0-9]*/"; $am = array(); if(preg_match($p, $str, $am)){ return $am[(count($am)-1)]; } else{ return false; } } function getStrn($str){ $p = "/^(\D+)\d/"; $am = array(); if(preg_match($p, $str, $am)){ return trim($am[1]); } else{ return false; } } function getAppendix($str){ $p = "/.*\d+.*(\D{1})/"; $am = array(); if(preg_match($p, $str, $am)){ return $am[1]; } else{ return false; } } function getCKeysByName($city){ global $ckeys; $city = "%".strtoupper(trim($city))."%"; $sql = "SELECT gem_schl_neu FROM wohnplatz "; $sql .= "WHERE gemeinde_gem_teile_upper ILIKE $1 "; $v = array($city); $t = array('s'); $res = db_prep_query($sql,$v,$t); while($row = db_fetch_array($res)){ array_push($ckeys, $row['gem_schl_neu']); } } ?>