X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/b8db8301df64712bb2fa39ab07ea9ce747a1e5e6..e276ec2e94cdb16b99062bf0ec44c958925c9766:/lib/ReverseGeocode.php diff --git a/lib/ReverseGeocode.php b/lib/ReverseGeocode.php index 6d3cc829..1de0893c 100644 --- a/lib/ReverseGeocode.php +++ b/lib/ReverseGeocode.php @@ -57,7 +57,7 @@ class ReverseGeocode $sSQL .= ' , ST_Distance(linegeo,'.$sPointSQL.') as distance'; $sSQL .= ' FROM location_property_osmline'; $sSQL .= ' WHERE ST_DWithin('.$sPointSQL.', linegeo, '.$fSearchDiam.')'; - $sSQL .= ' and indexed_status = 0 '; + $sSQL .= ' and indexed_status = 0 and startnumber is not NULL '; $sSQL .= ' ORDER BY ST_distance('.$sPointSQL.', linegeo) ASC limit 1'; return chksql( @@ -118,7 +118,7 @@ class ReverseGeocode $iMaxRank = 26; } - $sSQL = 'select place_id,parent_place_id,rank_search,calculated_country_code'; + $sSQL = 'select place_id,parent_place_id,rank_search,country_code'; $sSQL .= ' FROM placex'; $sSQL .= ' WHERE ST_DWithin('.$sPointSQL.', geometry, '.$fSearchDiam.')'; $sSQL .= ' and rank_search != 28 and rank_search >= '.$iMaxRank; @@ -135,7 +135,7 @@ class ReverseGeocode ); $iPlaceID = $aPlace['place_id']; $iParentPlaceID = $aPlace['parent_place_id']; - $bIsInUnitedStates = ($aPlace['calculated_country_code'] == 'us'); + $bIsInUnitedStates = ($aPlace['country_code'] == 'us'); } // If a house was found make sure there isn't an interpolation line @@ -153,7 +153,7 @@ class ReverseGeocode // look for an interpolation that is closer $aPlaceLine = $this->lookupInterpolation($sPointSQL, $fDistancePlacex); - if ($aPlaceLine) { + if ($aPlaceLine && (float) $aPlaceLine['distance'] < (float) $fDistancePlacex) { // interpolation is closer to point than placex house $bPlaceIsLine = true; $aPlace = $aPlaceLine; @@ -201,6 +201,8 @@ class ReverseGeocode if ($iPlaceID && $iMaxRank < 28) { if (($aPlace['rank_search'] > 28 || $bPlaceIsTiger || $bPlaceIsLine) && $iParentPlaceID) { $iPlaceID = $iParentPlaceID; + $bPlaceIsLine = false; + $bPlaceIsTiger = false; } $sSQL = 'select address_place_id'; $sSQL .= ' FROM place_addressline';