From: Sarah Hoffmann Date: Thu, 30 Apr 2015 19:48:25 +0000 (+0200) Subject: Merge branch 'reverse-lookup-including-tiger-lookup' of https://github.com/mtmail... X-Git-Tag: v.2.5.0~60 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/cf36e8d2fba81351889208e4499e8d28e7d9593c?hp=2e1590ed89e16eea79c9c1f140b979b2533ea212 Merge branch 'reverse-lookup-including-tiger-lookup' of https://github.com/mtmail/Nominatim --- diff --git a/configure.ac b/configure.ac index cc77d333..badcb5b2 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT(Nominatim,2.4) +AC_INIT(Nominatim,2.5) if git rev-parse HEAD 2>/dev/null >/dev/null; then AC_SUBST([PACKAGE_VERSION], [$PACKAGE_VERSION-git-`git rev-parse --short HEAD`]) fi diff --git a/lib/Geocode.php b/lib/Geocode.php index 7bd4f552..212eebb9 100644 --- a/lib/Geocode.php +++ b/lib/Geocode.php @@ -12,6 +12,7 @@ protected $bIncludePolygonAsGeoJSON = false; protected $bIncludePolygonAsKML = false; protected $bIncludePolygonAsSVG = false; + protected $fPolygonSimplificationThreshold = 0.0; protected $aExcludePlaceIDs = array(); protected $bDeDupe = true; @@ -102,6 +103,11 @@ $this->bIncludePolygonAsSVG = $b; } + function setPolygonSimplificationThreshold($f) + { + $this->fPolygonSimplificationThreshold = $f; + } + function setDeDupe($bDeDupe = true) { $this->bDeDupe = (bool)$bDeDupe; @@ -578,18 +584,6 @@ else $aSearch['sOperator'] = 'near'; // near = in for the moment if (strlen($aSearchTerm['operator']) == 0) $aSearch['iSearchRank'] += 1; - // Do we have a shortcut id? - if ($aSearch['sOperator'] == 'name') - { - $sSQL = "select get_tagpair('".$aSearch['sClass']."', '".$aSearch['sType']."')"; - if ($iAmenityID = $this->oDB->getOne($sSQL)) - { - $aValidTokens[$aSearch['sClass'].':'.$aSearch['sType']] = array('word_id' => $iAmenityID); - $aSearch['aName'][$iAmenityID] = $iAmenityID; - $aSearch['sClass'] = ''; - $aSearch['sType'] = ''; - } - } if ($aSearch['iSearchRank'] < $this->iMaxRank) $aNewWordsetSearches[] = $aSearch; } } @@ -768,7 +762,6 @@ if (!$this->sQuery && !$this->aStructuredQuery) return false; $sLanguagePrefArraySQL = "ARRAY[".join(',',array_map("getDBQuoted",$this->aLangPrefOrder))."]"; - $sCountryCodesSQL = false; if ($this->aCountryCodes && sizeof($this->aCountryCodes)) { @@ -1612,7 +1605,16 @@ if ($this->bIncludePolygonAsKML) $sSQL .= ",ST_AsKML(geometry) as askml"; if ($this->bIncludePolygonAsSVG) $sSQL .= ",ST_AsSVG(geometry) as assvg"; if ($this->bIncludePolygonAsText || $this->bIncludePolygonAsPoints) $sSQL .= ",ST_AsText(geometry) as astext"; - $sSQL .= " from placex where place_id = ".$aResult['place_id']; + $sFrom = " from placex where place_id = ".$aResult['place_id']; + if ($this->fPolygonSimplificationThreshold > 0) + { + $sSQL .= " from (select place_id,centroid,ST_SimplifyPreserveTopology(geometry,".$this->fPolygonSimplificationThreshold.") as geometry".$sFrom.") as plx"; + } + else + { + $sSQL .= $sFrom; + } + $aPointPolygon = $this->oDB->getRow($sSQL); if (PEAR::IsError($aPointPolygon)) { diff --git a/settings/settings.php b/settings/settings.php index a04795ef..75b9ac23 100644 --- a/settings/settings.php +++ b/settings/settings.php @@ -10,8 +10,8 @@ @define('CONST_Limit_Reindexing', true); // Software versions - @define('CONST_Postgresql_Version', '9.1'); // values: 9.0, 9.1, 9.2 - @define('CONST_Postgis_Version', '1.5'); // values: 1.5, 2.0 + @define('CONST_Postgresql_Version', '9.3'); // values: 9.0, ... , 9.4 + @define('CONST_Postgis_Version', '2.1'); // values: 1.5, 2.0, 2.1 // Paths @define('CONST_Path_Postgresql_Contrib', '/usr/share/postgresql/'.CONST_Postgresql_Version.'/contrib'); diff --git a/tests/features/api/search.feature b/tests/features/api/search.feature index ac378b0e..859faa76 100644 --- a/tests/features/api/search.feature +++ b/tests/features/api/search.feature @@ -74,3 +74,9 @@ Feature: Search queries Then results contain | ID | display_name | 0 | Illinois.* + + Scenario: Search with class-type feature + When sending jsonv2 search query "Hotel California" + Then results contain + | place_rank + | 30 diff --git a/tests/features/api/search_params.feature b/tests/features/api/search_params.feature index 23a6bf59..1062cd02 100644 --- a/tests/features/api/search_params.feature +++ b/tests/features/api/search_params.feature @@ -170,3 +170,35 @@ Feature: Search queries Then results contain | ID | display_name | 0 | Everest.* + + Scenario Outline: Search with polygon threshold (json) + Given the request parameters + | polygon_geojson | polygon_threshold + | 1 | + When sending json search query "switzerland" + Then at least 1 result is returned + And result 0 has attributes geojson + + Examples: + | th + | -1 + | 0.0 + | 0.5 + | 999 + | nan + + Scenario Outline: Search with polygon threshold (xml) + Given the request parameters + | polygon_geojson | polygon_threshold + | 1 | + When sending xml search query "switzerland" + Then at least 1 result is returned + And result 0 has attributes geojson + + Examples: + | th + | -1 + | 0.0 + | 0.5 + | 999 + | nan diff --git a/website/search.php b/website/search.php index a9e20d4e..bf27ef9a 100755 --- a/website/search.php +++ b/website/search.php @@ -68,6 +68,11 @@ $oGeocode->setIncludePolygonAsSVG($bAsSVG); } + // Polygon simplification threshold (optional) + $fThreshold = 0.0; + if (isset($_GET['polygon_threshold'])) $fThreshold = (float)$_GET['polygon_threshold']; + $oGeocode->setPolygonSimplificationThreshold($fThreshold); + $oGeocode->loadParamArray($_GET); if (CONST_Search_BatchMode && isset($_GET['batch']))