Scott Gifford wrote:

Hello,

I'd like to sort my query results based on their distance from a given
point.  The actual data I have will be in (longitude,latitude) format,
but I can convert to something else if that will work better.

For example, I may have data like this

   Item               Latitude      Longitude
   ----               --------      ---------
   Scott's House      37.4419       -122.1419
   Tom's House        37.4519       -122.2419
   Mary's House       37.4619       -122.3419
   Sally's House      37.4719       -122.4419

and I'd like to see these rows sorted by distance from (38,-121).
So, some one else is doing GIS appliations, huh... Like I was saying earlier, unfortunately, even if you did have the distance function, it would not work, because the results are calculated on a planar surface. The SRIDs in the GIS functions are there, but pretty much useless.

And, here you go:

SELECT(
 DEGREES(
    ACOS(
       SIN(RADIANS( latitue1 )) * SIN(RADIANS( latitue2 ))
           +  COS(RADIANS( latitue1 )) * COS(RADIANS( latitue2 ))
           * COS(RADIANS( longitude1 - longitude2 ))
       ) * 60 * 1.1515
    )
 ) AS distance

Just sort that by distance.

--
http://www.douglassdavis.com

Reply via email to