st_distance between a point and an edge using GeographicLib.

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

st_distance between a point and an edge using GeographicLib.

Hector Gonzalez
Hello,

I am trying to verify the distance calculation (using geographies and use_spheroid=true) between a line and a point.

I have used GeographicLib to generate a geodesic (using the wgs84 ellipsoid) between points 0 0 and 10 50 (lng lat). I generate a point lies on the edge (at the mid point)  which is 3.91451185 25.11977359. When I use st_distance to compute the distance between the edge and the point I expect the answer to be close to 0. But it is not.

select st_distance(st_geogfromtext('SRID=4326;point( 3.91451185 25.11977359 )'),st_geogfromtext('SRID=4326;linestring(0.00000000 0.00000000,   10 50 )'), true);
produces: 274.54332271 meters. If I use use_spheroid=false the answer is 274.10911308.

Is this because the distance calculation between a point and a line is done by projecting the point to the line assuming a perfect sphere? Or am I doing something wrong?

I am using Postgresql-9.5 and PostGIS-2.2 on Ubuntu 16.04.


Thanks
--
Hector

_______________________________________________
postgis-users mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/postgis-users
Reply | Threaded
Open this post in threaded view
|

Re: st_distance between a point and an edge using GeographicLib.

Paul Ramsey-3
Yes, you've got it right. The projected point is done in sphere world for speed, and then the point-to-point distance is done on spheroid. Most people don't care. Curse you for caring :)
P

On Tue, Mar 28, 2017 at 4:36 PM, Hector Gonzalez <[hidden email]> wrote:
Hello,

I am trying to verify the distance calculation (using geographies and use_spheroid=true) between a line and a point.

I have used GeographicLib to generate a geodesic (using the wgs84 ellipsoid) between points 0 0 and 10 50 (lng lat). I generate a point lies on the edge (at the mid point)  which is 3.91451185 25.11977359. When I use st_distance to compute the distance between the edge and the point I expect the answer to be close to 0. But it is not.

select st_distance(st_geogfromtext('SRID=4326;point( 3.91451185 25.11977359 )'),st_geogfromtext('SRID=4326;linestring(0.00000000 0.00000000,   10 50 )'), true);
produces: 274.54332271 meters. If I use use_spheroid=false the answer is 274.10911308.

Is this because the distance calculation between a point and a line is done by projecting the point to the line assuming a perfect sphere? Or am I doing something wrong?

I am using Postgresql-9.5 and PostGIS-2.2 on Ubuntu 16.04.


Thanks
--
Hector

_______________________________________________
postgis-users mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/postgis-users


_______________________________________________
postgis-users mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/postgis-users