Search Postgresql Archives

Re: PostGIS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Nov 02, 2006 at 09:11:58PM +0530, Sandeep Kumar Jakkaraju wrote:
> Like We have used the Haversine formula ...given on most of the websites ...
> to calculate the distance between to lat/lon points ..

You can examine the PostGIS source code to see how distance_sphere()
works; the underlying function is LWGEOM_distance_sphere() in
lwgeom/lwgeom_spheroid.c.  The algorithm appears to be Haversine.

> which doesnt match with the distance given by distance_sphere() method

Could you post an example showing how you're calling distance_sphere(),
the output you get, and the output you get from other Haversine
functions?  Several possibilities might explain the discrepancy:

1. If the difference is small then distance_sphere() might be using
a different value for the earth's radius than some other Haversine
function.  The earth isn't a perfect sphere so simple functions use
approximations of the earth's radius and different functions might
use different values.  distance_sphere() uses 6370986.884258304,
which is a reasonable (if overly precise) approximation of the
earth's radius in meters.

2. Make sure you're comparing the same units.  A Haversine function
that returns distance in feet or miles won't return the same distance
as distance_sphere(), which returns meters.

3. Make sure your PostGIS geometries have coordinates in the correct
order: (X Y) which is (longitude latitude).  This is a common cause
of problems for people accustomed to thinking (latitude longitude)
and who therefore create geometries as (Y X).

-- 
Michael Fuhr


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux