- $sSQL = 'select place_id,0 as numfeatures,st_area(geometry) as area,';
- $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';
+ $sSQL = 'select place_id,0 as numfeatures,st_area(geometry) as area,';
+ if ($fLonReverse != null && $fLatReverse != null) {
+ $sSQL .= ' CASE WHEN (class = \'highway\') AND (ST_GeometryType(geometry) = \'ST_LineString\') THEN';
+ $sSQL .= ' ST_Y(ST_LineInterpolatePoint(geometry,';
+ $sSQL .= ' ST_LineLocatePoint(geometry, ST_SetSRID(ST_Point('.$fLatReverse.','.$fLonReverse.'),4326))))';
+ $sSQL .= ' ELSE ST_Y(centroid) ';
+ $sSQL .= ' END as centrelat, ';
+ $sSQL .= ' CASE WHEN (class = \'highway\') AND (ST_GeometryType(geometry) = \'ST_LineString\') THEN';
+ $sSQL .= ' ST_X(ST_LineInterpolatePoint(geometry,';
+ $sSQL .= ' ST_LineLocatePoint(geometry, ST_SetSRID(ST_Point('.$fLatReverse.','.$fLonReverse.'),4326))))';
+ $sSQL .= ' ELSE ST_X(centroid) ';
+ $sSQL .= ' END as centrelon, ';
+ } else {
+ $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';