

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# ST\$1DistanceSphere
<a name="ST_DistanceSphere-function"></a>

ST\$1DistanceSphere 會傳回球面上兩個點幾何之間的距離。

## 語法
<a name="ST_DistanceSphere-function-syntax"></a>

```
ST_DistanceSphere(geom1, geom2)
```

```
ST_DistanceSphere(geom1, geom2, radius)
```

## 引數
<a name="ST_DistanceSphere-function-arguments"></a>

 *geom1*   
球面上 `GEOMETRY` 資料類型的點值，單位為度。點的第一個座標是經度值。點的第二個座標是緯度值。對於 3DZ、3DM 或 4D 幾何，僅使用前兩個座標。

 *geom2*   
球面上 `GEOMETRY` 資料類型的點值，單位為度。點的第一個座標是經度值。點的第二個座標是緯度值。對於 3DZ、3DM 或 4D 幾何，僅使用前兩個座標。

 *radius*   
`DOUBLE PRECISION` 資料類型的球面半徑。如果沒有提供 *radius*，則球面會預設為地球，且會從橢球的全球測量系統 (WGS) 84 表示法運算半徑。

## 傳回類型
<a name="ST_DistanceSphere-function-return"></a>

與半徑單位相同的 `DOUBLE PRECISION`。如果未提供半徑，則距離以公尺為單位。

如果 *geom1* 或 *geom2* 為 Null 或空白，則會傳回 Null。

如果沒有提供 *radius*，則結果的單位會是沿著地球表面的公尺數。

如果 *radius* 為負數，則會傳回錯誤。

如果 *geom1* 和 *geom2* 的空間參考系統識別碼 (SRID) 不同，則會傳回錯誤。

如果 *geom1* 或 *geom2* 不是點，則會傳回錯誤。

## 範例
<a name="ST_DistanceSphere-function-examples"></a>

以下範例 SQL 會計算地球上兩點之間的距離 (以公里為單位)。

```
SELECT ROUND(ST_DistanceSphere(ST_Point(-122, 47), ST_Point(-122.1, 47.1))/ 1000, 0);
```

```
  round
-----------
 13
```

以下範例 SQL 會運算德國三個機場位置間的距離 (公里)：柏林泰格爾機場 (TXL)、慕尼黑國際機場 (MUC) 及法蘭克福國際機場 (FRA)。

```
WITH airports_raw(code,lon,lat) AS (
(SELECT 'MUC', 11.786111, 48.353889) UNION
(SELECT 'FRA', 8.570556, 50.033333) UNION
(SELECT 'TXL', 13.287778, 52.559722)),
airports1(code,location) AS (SELECT code, ST_Point(lon, lat) FROM airports_raw),
airports2(code,location) AS (SELECT * from airports1)
SELECT (airports1.code || ' <-> ' || airports2.code) AS airports,
round(ST_DistanceSphere(airports1.location, airports2.location) / 1000, 0) AS distance_in_km
FROM airports1, airports2 WHERE airports1.code < airports2.code ORDER BY 1;
```

```
  airports   | distance_in_km 
-------------+----------------
 FRA <-> MUC |            299
 FRA <-> TXL |            432
 MUC <-> TXL |            480
```