Skip to main content

Vertica Place - Difference between ST_Distance and google distance

  • November 25, 2015
  • 2 replies
  • 9 views

Vivian_Rossi
Forum|alt.badge.img

Hello, I would like to understand the difference between google map and ST_Distance calculation.

 

case: distance between Milan and Bari with google maps is: 786 km with azimut 125 degrees

Milan geo coordinates (degrees) are latitude 45 27 50 and Longitude 9 11 31, converted to decimal is: (45.463889, 9.191944)

Bari geo coordinates (degrees) are latitude 41 6 41 and longitude 16 51 19, converted to decimal is: (41.111389 3 16.885278)

 

So I execute the select as follow:

SELECT ST_Distance(ST_GeographyFromText('POINT(45.463889 9.191944)'),    ST_GeographyFromText('POINT(41.111389 16.885278)'));

with result: 976591.545506267 meters so: 976 kilometers.

 

Which other parameters do I need to configure? What's wrong with my select? 

 

many thanks for any suggestion,

Vivian.

2 replies

Pan
Forum|alt.badge.img
  • Participating Frequently
  • November 25, 2015

Hello, Vivian

 

Thank you for using Place.

 

The format for WKT here is (x,y) = (long, lat) ;

 

So you have to reverse the long and lat value in your WKT. Also, to use WGS84 coordinate system, you have to use parameter spheriod=true, otherwise it will calculate based on perfect sphere.

 

 

WGS84 result:

 

SELECT ST_Distance(ST_GeographyFromText('POINT(9.191944 45.463889)'), ST_GeographyFromText('POINT(16.885278 41.111389)') using parameters spheroid=true);
ST_Distance
------------------
789127.852937305
(1 row)

 

Perfect sphere result:

SELECT ST_Distance(ST_GeographyFromText('POINT(9.191944 45.463889)'),    ST_GeographyFromText('POINT(16.885278 41.111389)'));
   ST_Distance  
-----------------
 788061.60163958
(1 row)

 

Regards.

Pan


zun
Forum|alt.badge.img
  • Participating Frequently
  • May 12, 2022

Hi, I'm also running into a similar issue with geospatial function being in-accurate. I'm using Stv_geometrypoint and St_distance, and have reversed lat/long as suggested above, but still obtain incorrect results.

For example:
--lat/long of empire state building new york: (40.74819191258412, -73.98573903191816)
--lat/long of Good Smaritan Hospital in LongIsland NYC: (40.69412102658633, -73.29518084490165)
--distance between empire state & Good Smaritan Hospital == 58.58KM from Google Maps

SELECT public.St_distance(public.Stv_geometrypoint(-73.98573903191816, 40.74819191258412), public.Stv_geometrypoint(-73.29518084490165, 40.69412102658633))
--Result: 0.692671834542238
-- 0.692671834542238 * 111KM = 76.88KM

76.88KM is not even close to 58.58KM.

What am I doing wrong?