[postgis-users] distance between two POINTM
Matthew Perry
perrygeo at gmail.com
Sun May 13 23:25:21 PDT 2007
Michael,
On 5/13/07, Michael Welter <mike at telecommatters.net> wrote:
> Here are two problems:
>
> select distance_sphere(GeomFromEWKT('SRID=4269;POINTM(-105.32395
> 39.50163 2563)'),GeomFromEWKT('SRID=4269;POINTM(-105.30166 39.53806
> 2487)'));
> distance_sphere
> ------------------
> 4479.36511546862
> (1 row)
>
> select distance_sphere(GeomFromEWKT('SRID=4269;POINTM(-105.32395
> 39.50163 0)'),GeomFromEWKT('SRID=4269;POINTM(-105.30166 39.53806 0)'));
> distance_sphere
> ------------------
> 4479.36511546862
> (1 row)
>
> The distance returned from problem #1 (~2500m elevation) should be
> greater that from problem #2 (sea level). However, it appears that the
> Z value is ignored altogether.
>
This is correct if you consider that distance_sphere (and
distance_spheroid) are calculating linear distance along a fixed,
mathematically-defined surface. The elevation doesn't factor into the
calculation.
For a true on-the-ground distance between two points, you'd have to
get do an elevation profile on a DEM. WIth the 2D distance between
each node and the change in elevation, you could do some trigonometry
to determine the 3D length of each segment and sum the results. Take a
look at GRASS, specifically r.profile
(http://grass.itc.it/gdp/html_grass63/r.profile.html)
--
Matthew T. Perry
http://www.perrygeo.net
"You never change things by fighting the existing reality.
To change something, build a new model that makes
the existing model obsolete" - R. Buckminster Fuller
More information about the postgis-users
mailing list