[postgis-users] extent of properties within a specified distance
aanderson at amherst.edu
Tue May 20 14:09:27 PDT 2008
On May 19, 2008, at 5:01 AM, User Map wrote:
> thanks for reply. i think i have to clarify my problem a bit more.
> i want to get the records from my table within a specified distance
> for e.g 50 meters. For this i have to calculate the extent first to
> get the image in mapserver. what i have is just a polygon geom,
> which area as you know can vary from property to property. i dont
> want to take into account the area/distance the property holds, but
> a center point for that polygon, so to calculate the distance
> equally on each side of that point, and then calculate the extent
> of those records, for the image to be generated. what i have done
> uptil now is:
> SELECT extent(geom),max(Distance('<center of polygon>',geom))as
> from tarea
> where within(geom,'<expand(geom,50)from the given geom>')
> and Distance('<center of polygon>',geom)<=50
> but this query is taking about 25-26 mins which is quite a large
> time span. and also when i get the results and on showing through
> the map server, the scale bar is not matching, i mean it has to
> show a 100 meter bar scale, but, it is showing more then 100 meters
> on the scalebar, about 192 or so.
A couple of thoughts, upon which the more experienced may correct or
1) It looks to me like you are performing a duplicate calculation.
I'm not sure if Postgres is smart enough to avoid this by itself, but
just in case you should take advantage of a subexpression to perform
the calculation once for each geom:
SELECT extent(geom), distance from (SELECT geom, Distance('<center
of polygon>', geom)) from tarea) as tdistance where distance <= 50.
2) Seems like
within(geom,'<expand(geom,50)from the given geom>')
is unnecessary, it will always be true. Or do you mean something
different than the simpler form:
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the postgis-users