SSC-FDM-TD0031

ST_DISTANCE results are slightly different from ST_SPHERICALDISTANCE

Description

The Teradata function ST_SPHERICALDISTANCE calculates the distance between two spherical coordinates on the planet using the Haversine formula, on the other side, the Snowflake ST_DISTANCE function does not utilize the haversine formula to calculate the minimum distance between two geographical points.

Example Code

Input Code:

IN -> Teradata_01.sql
--The distance between New York and Los Angeles
Select Cast('POINT(-73.989308 40.741895)' As ST_GEOMETRY) As location1,
	Cast('POINT(40.741895 34.053691)' As ST_GEOMETRY) As location2,
	location1.ST_SPHERICALDISTANCE(location2) As Distance_In_km;

Teradata Output

location1location2Distance_In_Km

POINT (-73.989308 40.741895)

POINT (40.741895 34.053691)

9351139.978062356

Output Code

OUT -> Teradata_01.sql
--The distance between New York and Los Angeles
SELECT
	TO_GEOGRAPHY('POINT(-73.989308 40.741895)') As location1,
	TO_GEOGRAPHY('POINT(40.741895 34.053691)') As location2,
	--** SSC-FDM-TD0031 - ST_DISTANCE RESULTS ARE SLIGHTLY DIFFERENT FROM ST_SPHERICALDISTANCE **
	ST_DISTANCE(
	location1, location2) As Distance_In_km;

Snowflake Output

LOCATION1LOCATION2DISTANCE_IN_KM

{ "coordinates": [ -73.989308, 40.741895 ], "type": "Point" }

{ "coordinates": [ 40.741895, 34.053691 ], "type": "Point" }

9351154.65572674

Recommendations

Last updated