X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/27af9b102c2d6167b9025d594f8cb75e4dd76a03..5e792078b3ed580f723a47182325405d54cae822:/lib-php/ReverseGeocode.php diff --git a/lib-php/ReverseGeocode.php b/lib-php/ReverseGeocode.php index 64fc214e..a670c623 100644 --- a/lib-php/ReverseGeocode.php +++ b/lib-php/ReverseGeocode.php @@ -111,6 +111,7 @@ class ReverseGeocode $sSQL .= ' FROM placex'; $sSQL .= ' WHERE osm_type = \'N\''; $sSQL .= ' AND country_code = \''.$sCountryCode.'\''; + $sSQL .= ' AND rank_search < 26 '; // needed to select right index $sSQL .= ' AND rank_search between 5 and ' .min(25, $iMaxRank); $sSQL .= ' AND class = \'place\' AND type != \'postcode\''; $sSQL .= ' AND name IS NOT NULL '; @@ -206,6 +207,7 @@ class ReverseGeocode // for place nodes at rank_address 16 $sSQL .= ' AND rank_search > '.$iRankSearch; $sSQL .= ' AND rank_search <= '.$iMaxRank; + $sSQL .= ' AND rank_search < 26 '; // needed to select right index $sSQL .= ' AND rank_address > 0'; $sSQL .= ' AND class = \'place\''; $sSQL .= ' AND type != \'postcode\''; @@ -243,26 +245,24 @@ class ReverseGeocode public function lookupPoint($sPointSQL, $bDoInterpolation = true) { Debug::newFunction('lookupPoint'); - // starts if the search is on POI or street level, - // searches for the nearest POI or street, - // if a street is found and a POI is searched for, - // the nearest POI which the found street is a parent of is choosen. - $iMaxRank = $this->iMaxRank; - // Find the nearest point $fSearchDiam = 0.006; $oResult = null; $aPlace = null; // for POI or street level - if ($iMaxRank >= 26) { + if ($this->iMaxRank >= 26) { + // starts if the search is on POI or street level, + // searches for the nearest POI or street, + // if a street is found and a POI is searched for, + // the nearest POI which the found street is a parent of is choosen. $sSQL = 'select place_id,parent_place_id,rank_address,country_code,'; $sSQL .= ' ST_distance('.$sPointSQL.', geometry) as distance'; $sSQL .= ' FROM '; $sSQL .= ' placex'; $sSQL .= ' WHERE ST_DWithin('.$sPointSQL.', geometry, '.$fSearchDiam.')'; $sSQL .= ' AND'; - $sSQL .= ' rank_address between 26 and '.$iMaxRank; + $sSQL .= ' rank_address between 26 and '.$this->iMaxRank; $sSQL .= ' and (name is not null or housenumber is not null'; $sSQL .= ' or rank_address between 26 and 27)'; $sSQL .= ' and (rank_address between 26 and 27'; @@ -285,7 +285,7 @@ class ReverseGeocode if ($aPlace) { // if street and maxrank > streetlevel - if ($iRankAddress <= 27 && $iMaxRank > 27) { + if ($iRankAddress <= 27 && $this->iMaxRank > 27) { // find the closest object (up to a certain radius) of which the street is a parent of $sSQL = ' select place_id,'; $sSQL .= ' ST_distance('.$sPointSQL.', geometry) as distance'; @@ -339,7 +339,7 @@ class ReverseGeocode } } - if ($bDoInterpolation && $iMaxRank >= 30) { + if ($bDoInterpolation && $this->iMaxRank >= 30) { $fDistance = $fSearchDiam; if ($aPlace) { // We can't reliably go from the closest street to an @@ -366,7 +366,7 @@ class ReverseGeocode } } else { // lower than street level ($iMaxRank < 26 ) - $oResult = $this->lookupLargeArea($sPointSQL, $iMaxRank); + $oResult = $this->lookupLargeArea($sPointSQL, $this->iMaxRank); } Debug::printVar('Final result', $oResult);