ST_DistanceSphere - Amazon Redshift

ST_DistanceSphere

ST_DistanceSphere は、球面の 2 つのポイントのジオメトリ間の距離を返します。

構文

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

引数

geom1

球面のデータ型 GEOMETRY の角度のポイント値。ポイントの最初の座標は経度の値です。ポイントの 2 番目の座標は緯度の値です。3DZ、3DM、または 4D ジオメトリの場合、最初の 2 つの座標のみが使用されます。

geom2

球面のデータ型 GEOMETRY の角度のポイント値。ポイントの最初の座標は経度の値です。ポイントの 2 番目の座標は緯度の値です。3DZ、3DM、または 4D ジオメトリの場合、最初の 2 つの座標のみが使用されます。

radius

データ型 DOUBLE PRECISION の球の半径。radius が指定されていない場合、球体はデフォルトで地球に設定され、半径は楕円体の WGS (World Geodetic System) 84 表現から計算されます。

戻り型

半径と同じユニットの DOUBLE PRECISION。半径が指定されていない場合、距離はメートル単位です。

geom1 または geom2 が null または空の場合、null が返されます。

radius が指定されていない場合、地球の表面に沿った結果がメートルで表示されます。

radius が負数である場合、エラーが返されます。

geom1 および geom2 の空間リファレンスシステム識別子 (SRID) が同じ値でない場合、エラーが返されます。

geom1 または geom2 がポイントでない場合、エラーが返されます。

次の SQL の例では、地球上の 2 点間の距離をキロメートル単位で計算します。

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

次の SQL の例では、ドイツのベルリンテーゲル空港 (TXL)、ミュンヘン空港 (MUC)、フランクフルト空港 (FRA) の 3 つのポイントの場所の間の距離をキロメートルで計算します。

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