カテゴリ:

地理空間関数

HAVERSINE

Haversine公式 を使って、地球表面の2点間の大圏距離をキロメートル単位で計算します。2点は緯度と経度を10進数で指定します。

注釈

Snowflakeでは、 HAVERSINE 関数の代わりに、 ST_DISTANCE 関数の使用を推奨しています。ST_DISTANCE 関数は、地理空間型の値を使用して計算を実行します。これにより、地理空間データを保存し、そのデータに対して 地理空間関数 を使用することができます。さらに、 ST_DISTANCE 関数を使用する結合述語は、 HAVERSINE 関数を使用する結合述語よりもパフォーマンスが良くなります。

構文

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

引数

lat1

第1地点の緯度(10進角)。

lon1

第1地点の経度(10進角)。

lat2

第2地点の緯度(10進角)。

lon2

第2地点の経度(10進角)。

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 |
+--------------------+