[postgis-users] Great circle as a linestring
Colin Wetherbee
cww at denterprises.org
Fri Feb 22 10:10:02 PST 2008
Dane Springmeyer wrote:
> Okay, I've got a bit closer. The right way to do this is likely a
> function that computes the route between two points borrowing from some
> of the formulas here:
> http://williams.best.vwh.net/avform.htm#Crs The postgis function that
> calculates the great circle distance is likely engineered this way, but
> we'll have to hear from the experts on that.
Thanks for your thorough investigation. I've just solved it! Here's my
solution.
The idea is to take points on the sphere, make the line there,
segmentize the line, and then transform it to the plane.
Transform(
Segmentize(
MakeLine(
Transform(dp.location, 53027),
Transform(ap.location, 53027)
), 4000
), 4326
) AS line
The 4000 is an arbitrary "distance" I conjured up. I don't really know
what the units are, but 20 was too low and thrashed my server for a few
minutes before I killed the process.
The problem with our previous approach was we didn't do it with
segments... when the segments are reprojected, they stay more-or-less
aligned along the sphere.
Thanks again. :)
Colin
More information about the postgis-users
mailing list