类别:

地理空间函数

HAVERSINE

使用 Haversine 公式 (link removed) 计算地球表面两点之间的大圆距离(以千米为单位)。这两个点由它们的纬度和经度(以十进制度为单位)指定。

备注

Snowflake 建议使用 ST_DISTANCE 函数而不是 HAVERSINE 函数。ST_DISTANCE 函数使用地理空间类型的值执行计算,这使您能够存储地理空间数据并对数据使用 地理空间函数。此外,使用 ST_DISTANCE 函数的联接谓词的性能优于使用 HAVERSINE 函数的联接谓词。

语法

HAVERSINE( <lat1>, <lon1>, <lat2>, <lon2> )
Copy

实参

lat1

第一个点的纬度,以十进制度为单位。

lon1

第一个点的经度,以十进制度为单位。

lat2

第二个点的纬度,以十进制度为单位。

lon2

第二个点的经度,以十进制度为单位。

Returns

此函数返回 FLOAT 类型的值。

示例

以下示例返回纽约和洛杉矶之间的地理空间距离(以千米为单位):

SELECT HAVERSINE(
    40.7127,
    -74.0059,
    34.0500,
    -118.2500
  ) AS distance_in_kilometers;
Copy
+------------------------+
| DISTANCE_IN_KILOMETERS |
|------------------------|
|         3936.385096389 |
+------------------------+

The following example is the same as the previous example, but it returns the geospatial distance in meters instead of kilometers by multiplying the result by 1000:

SELECT HAVERSINE(
    40.7127,
    -74.0059,
    34.0500,
    -118.2500
  ) * 1000 AS distance_in_meters;
Copy
+--------------------+
| DISTANCE_IN_METERS |
|--------------------|
|   3936385.09638929 |
+--------------------+
语言: 中文