X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/c4b13f2b7fffa410074e2c54428645135ef2ee72..f535340d5af0b59c1bbdfde885b62dd483a9e38e:/lib-php/PlaceLookup.php diff --git a/lib-php/PlaceLookup.php b/lib-php/PlaceLookup.php index ba4f50bc..895a30df 100644 --- a/lib-php/PlaceLookup.php +++ b/lib-php/PlaceLookup.php @@ -86,7 +86,7 @@ class PlaceLookup ($this->bIncludePolygonAsSVG ? 1 : 0); if ($iWantedTypes > CONST_PolygonOutput_MaximumTypes) { if (CONST_PolygonOutput_MaximumTypes) { - userError('Select only '.CONST_PolygonOutput_MaximumTypes.' polgyon output option'); + userError('Select only '.CONST_PolygonOutput_MaximumTypes.' polygon output option'); } else { userError('Polygon output is disabled'); } @@ -524,12 +524,7 @@ class PlaceLookup // Get the bounding box and outline polygon $sSQL = 'select place_id,0 as numfeatures,st_area(geometry) as area,'; - if ($fLonReverse != null && $fLatReverse != null) { - $sSQL .= ' ST_Y(closest_point) as centrelat,'; - $sSQL .= ' ST_X(closest_point) as centrelon,'; - } else { - $sSQL .= ' ST_Y(centroid) as centrelat, ST_X(centroid) as centrelon,'; - } + $sSQL .= ' ST_Y(centroid) as centrelat, ST_X(centroid) as centrelon,'; $sSQL .= ' ST_YMin(geometry) as minlat,ST_YMax(geometry) as maxlat,'; $sSQL .= ' ST_XMin(geometry) as minlon,ST_XMax(geometry) as maxlon'; if ($this->bIncludePolygonAsGeoJSON) { @@ -544,19 +539,21 @@ class PlaceLookup if ($this->bIncludePolygonAsText) { $sSQL .= ',ST_AsText(geometry) as astext'; } + + $sSQL .= ' FROM (SELECT place_id'; if ($fLonReverse != null && $fLatReverse != null) { - $sFrom = ' from (SELECT * , CASE WHEN (class = \'highway\') AND (ST_GeometryType(geometry) = \'ST_LineString\') THEN '; - $sFrom .=' ST_ClosestPoint(geometry, ST_SetSRID(ST_Point('.$fLatReverse.','.$fLonReverse.'),4326))'; - $sFrom .=' ELSE centroid END AS closest_point'; - $sFrom .= ' from placex where place_id = '.$iPlaceID.') as plx'; + $sSQL .= ',CASE WHEN (class = \'highway\') AND (ST_GeometryType(geometry) = \'ST_LineString\') THEN '; + $sSQL .=' ST_ClosestPoint(geometry, ST_SetSRID(ST_Point('.$fLatReverse.','.$fLonReverse.'),4326))'; + $sSQL .=' ELSE centroid END AS centroid'; } else { - $sFrom = ' from placex where place_id = '.$iPlaceID; + $sSQL .= ',centroid'; } if ($this->fPolygonSimplificationThreshold > 0) { - $sSQL .= ' from (select place_id,centroid,ST_SimplifyPreserveTopology(geometry,'.$this->fPolygonSimplificationThreshold.') as geometry'.$sFrom.') as plx'; + $sSQL .= ',ST_SimplifyPreserveTopology(geometry,'.$this->fPolygonSimplificationThreshold.') as geometry'; } else { - $sSQL .= $sFrom; + $sSQL .= ',geometry'; } + $sSQL .= ' FROM placex where place_id = '.$iPlaceID.') as plx'; $aPointPolygon = $this->oDB->getRow($sSQL, null, 'Could not get outline');