From: Oleksandr Shulgin Date: Wed, 29 Apr 2015 14:13:39 +0000 (+0200) Subject: Check for positive polygon simplification threshold X-Git-Tag: v.2.5.0~62^2 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/46e64bd93385d7c2e30154a07fa7cae79bf9ecee Check for positive polygon simplification threshold Don't run the simplification function if no threshold was given (or in case of a negative one). Also process the query string parameter in case of html out format. --- diff --git a/lib/Geocode.php b/lib/Geocode.php index a5454867..6781ceec 100644 --- a/lib/Geocode.php +++ b/lib/Geocode.php @@ -1618,7 +1618,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 (select place_id,centroid,ST_SimplifyPreserveTopology(geometry,".$this->fPolygonSimplificationThreshold.") as geometry from placex where place_id = ".$aResult['place_id'].") as plx"; + $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/website/search.php b/website/search.php index ecf584ae..bf27ef9a 100755 --- a/website/search.php +++ b/website/search.php @@ -44,8 +44,6 @@ $bAsKML = (boolean)isset($_GET['polygon_kml']) && $_GET['polygon_kml']; $bAsSVG = (boolean)isset($_GET['polygon_svg']) && $_GET['polygon_svg']; $bAsText = (boolean)isset($_GET['polygon_text']) && $_GET['polygon_text']; - $fThreshold = 0.0; - if (isset($_GET['polygon_threshold'])) $fThreshold = (float)$_GET['polygon_threshold']; if ( ( ($bAsGeoJSON?1:0) + ($bAsKML?1:0) + ($bAsSVG?1:0) @@ -68,9 +66,13 @@ $oGeocode->setIncludePolygonAsGeoJSON($bAsGeoJSON); $oGeocode->setIncludePolygonAsKML($bAsKML); $oGeocode->setIncludePolygonAsSVG($bAsSVG); - $oGeocode->setPolygonSimplificationThreshold($fThreshold); } + // 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']))