]> git.openstreetmap.org Git - nominatim.git/commitdiff
Check for positive polygon simplification threshold
authorOleksandr Shulgin <oleksandr.shulgin@zalando.de>
Wed, 29 Apr 2015 14:13:39 +0000 (16:13 +0200)
committerOleksandr Shulgin <oleksandr.shulgin@zalando.de>
Wed, 29 Apr 2015 14:13:39 +0000 (16:13 +0200)
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.

lib/Geocode.php
website/search.php

index a5454867c17939a9c6abd27486974d2014e7afdc..6781ceecb9993bccdf89b746795ab9a7d8c68763 100644 (file)
                                        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))
                                        {
index ecf584ae97500d4d5f9a4f8368bb5c96029ad90c..bf27ef9a8157e734536b60196f35f009cf3d19ba 100755 (executable)
@@ -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)
                $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']))