This function should work to return the correct UTM zone in WGS84 (unless I messed something up quickly pulling this together -- verify before you use it).<br><br>CREATE OR REPLACE FUNCTION utmzone(geometry)<br> RETURNS integer AS
<br>$BODY$<br>declare<br>geomgeog geometry;<br>zone int;<br>pref int;<br>begin<br>geomgeog:=transform($1,4326);<br>if (y(geomgeog))>0 then <br> pref:=32600; <br>else <br> pref:=32700; <br>end if;<br>zone:=floor((x(geomgeog)+180)/6)+1;
<br>return zone+pref;<br>end;<br>$BODY$<br> LANGUAGE 'plpgsql' VOLATILE;<br><br><div><span class="gmail_quote">On 4/2/07, <b class="gmail_sendername">David William Bitner</b> <<a href="mailto:bitner@gyttja.org">
bitner@gyttja.org</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">If you're only concerned with 25 miles, you could use the method to determine which UTM zone your data is in for your first hospital and then 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.
<div><span class="e" id="q_111b3f1db36b21e4_1"><br><br><div><span class="gmail_quote">On 4/2/07, <b class="gmail_sendername">Michael Frumin</b> <<a href="mailto:mfrumin@rpa.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
mfrumin@rpa.org</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div bgcolor="#ffffff" text="#000000">
correct. 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.<br>
<br>
thanks,<br>
mike<div><span><br>
<br>
<a href="mailto:david.bitner@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">david.bitner@gmail.com</a>
wrote:
</span></div><blockquote cite="http://mid4ECE4FEECC.0EB06C4FTFSVEVOZ@gmail.com" type="cite"><div><span>
<pre>It is a common mis-assumption that you need to do a buffer calculation. To<br>do this type of analysis, all you need is the distance_sphere() calculation:<br>select *,distance_sphere(hospital1geom,hospitals2geom) from hospitals2 where
<br><br>distance_sphere(hospital1geom,hospitals2geom)<25*1609 order by<br>distance_sphere(hospital1geom,hospitals2geom) asc;<br><br>Just add a limit 1 to the end if all you want is the closest.<br><br>No buffer necessary at all.
<br><br><br><br>David<br><br><br>On 4/2/07, Michael Frumin <a href="mailto:mfrumin@rpa.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"><mfrumin@rpa.org></a> wrote:<br> </pre>
</span></div><blockquote type="cite"><div><span>
<pre> Right, I should be more specific from the outset. I did do some<br>searching thru the PostGIS archives, and didn't find the answer I was<br>looking for; is there a PostGIS FAQ somewhere?<br><br>As for my problem, my inputs are two sets of geocoded hospitals, and I
<br><br>just want to be able to identify for each hospital in the first set, the<br>hospitals in the second set within approximately 25 miles. I will the map<br>these sets, with a 25 mile buffer around the first set, using Geoserver.
<br><br>So, distance and area are both somewhat important, heading not at all.<br>distance_sphere(oid), sounds good for the calculation, but won't help with<br>the buffering because it doesn't tell me the 'distance' in lat/lng space
<br><br>that would equate to 25 miles (because of course this varies over the<br>globe). To achieve this I would need to reproject into something that is in<br>meters, and buffer around that.<br><br>How egregious would you expect the errors to be if I simply use the
<br><br>projection for the UTM zone that represents, say, Central time?<br><br>thanks,<br>mike<br><br><br> </pre></span></div>
</blockquote><span>
<pre>_______________________________________________<br>postgis-users mailing list<br><a href="mailto:postgis-users@postgis.refractions.net" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">postgis-users@postgis.refractions.net
<br></a>
<a href="http://postgis.refractions.net/mailman/listinfo/postgis-users" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://postgis.refractions.net/mailman/listinfo/postgis-users</a>
</pre>
<br>
<hr size="4" width="90%"><br>
<br></span><div><span>
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() calculation:<br>
select *,distance_sphere(hospital1geom,hospitals2geom) from hospitals2
where distance_sphere(hospital1geom,hospitals2geom)<25*1609 order by
distance_sphere(hospital1geom,hospitals2geom) asc; <br>
<br>
Just add a limit 1 to the end if all you want is the closest.<br>
<br>
No buffer necessary at all.<br>
<br>
<br>
David<br>
<br>
<br>
<div><span class="gmail_quote">On 4/2/07, <b class="gmail_sendername">Michael
Frumin</b> <<a href="mailto:mfrumin@rpa.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">mfrumin@rpa.org</a>>
wrote:</span>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div bgcolor="#ffffff" text="#000000">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?<br>
<br>
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.<br>
<br>
How egregious would you expect the errors to be if I simply use the
projection for the UTM zone that represents, say, Central time?<br>
<br>
thanks,<br>
mike<br>
<br>
</div>
</blockquote>
</div>
</span></div></blockquote>
</div>
<br>_______________________________________________<br>postgis-users mailing list<br><a href="mailto:postgis-users@postgis.refractions.net" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">postgis-users@postgis.refractions.net
</a><br><a href="http://postgis.refractions.net/mailman/listinfo/postgis-users" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://postgis.refractions.net/mailman/listinfo/postgis-users</a><br>
<br>
</blockquote></div><br><br clear="all"><br></span></div>-- <br>************************************<br><span class="sg">David William Bitner
</span></blockquote></div><br><br clear="all"><br>-- <br>************************************<br>David William Bitner