use that for the calculation and buffer creation. You could convert Pedro's
PHP script into PL/PGSQL to make it easy to work with in the db.
Post by Michael Frumincorrect. I wanted to calculate the buffer so that I can render a map
using GeoServer, which sits right on top of PostGIS, which would show the
first set of hospitals, the 25 mile radius, and the second set.
thanks,
mike
It is a common mis-assumption that you need to do a buffer calculation. To
select *,distance_sphere(hospital1geom,hospitals2geom) from hospitals2 where
distance_sphere(hospital1geom,hospitals2geom)<25*1609 order by
distance_sphere(hospital1geom,hospitals2geom) asc;
Just add a limit 1 to the end if all you want is the closest.
No buffer necessary at all.
David
Right, I should be more specific from the outset. I did do some
searching thru the PostGIS archives, and didn't find the answer I was
looking for; is there a PostGIS FAQ somewhere?
As for my problem, my inputs are two sets of geocoded hospitals, and I
just want to be able to identify for each hospital in the first set, the
hospitals in the second set within approximately 25 miles. I will the map
these sets, with a 25 mile buffer around the first set, using Geoserver.
So, distance and area are both somewhat important, heading not at all.
distance_sphere(oid), sounds good for the calculation, but won't help with
the buffering because it doesn't tell me the 'distance' in lat/lng space
that would equate to 25 miles (because of course this varies over the
globe). To achieve this I would need to reproject into something that is in
meters, and buffer around that.
How egregious would you expect the errors to be if I simply use the
projection for the UTM zone that represents, say, Central time?
thanks,
mike
_______________________________________________
postgis-users mailing list
http://postgis.refractions.net/mailman/listinfo/postgis-users
------------------------------
It is a common mis-assumption that you need to do a buffer calculation.
To do this type of analysis, all you need is the distance_sphere()
select *,distance_sphere(hospital1geom,hospitals2geom) from hospitals2
where distance_sphere(hospital1geom,hospitals2geom)<25*1609 order by
distance_sphere(hospital1geom,hospitals2geom) asc;
Just add a limit 1 to the end if all you want is the closest.
No buffer necessary at all.
David
Post by Michael FruminRight, I should be more specific from the outset. I did do some
searching thru the PostGIS archives, and didn't find the answer I was
looking for; is there a PostGIS FAQ somewhere?
As for my problem, my inputs are two sets of geocoded hospitals, and I
just want to be able to identify for each hospital in the first set, the
hospitals in the second set within approximately 25 miles. I will the map
these sets, with a 25 mile buffer around the first set, using Geoserver.
So, distance and area are both somewhat important, heading not at all.
distance_sphere(oid), sounds good for the calculation, but won't help with
the buffering because it doesn't tell me the 'distance' in lat/lng space
that would equate to 25 miles (because of course this varies over the
globe). To achieve this I would need to reproject into something that is in
meters, and buffer around that.
How egregious would you expect the errors to be if I simply use the
projection for the UTM zone that represents, say, Central time?
thanks,
mike
_______________________________________________
postgis-users mailing list
http://postgis.refractions.net/mailman/listinfo/postgis-users