ST_DistanceSphere - Amazon Redshift
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

ST_DistanceSphere

ST_DistanceSphere 返回位于球体上的两个点几何体之间的距离。

Syntax

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

Arguments

geom1

位于球体上的数据类型 GEOMETRY 的点值(以度为单位)。该点的第一个坐标是经度值。该点的第二个坐标是纬度值。

geom2

位于球体上的数据类型 GEOMETRY 的点值(以度为单位)。该点的第一个坐标是经度值。该点的第二个坐标是纬度值。

radius

数据类型球的半径 DOUBLE PRECISION。如果否 半径 提供,球形默认为地球,半径由世界地形系统(WGS)84表示的椭圆形计算。

返回类型

DOUBLE PRECISION,采用与半径相同的单位。

如果 geom1geom2 为 null 或为空,则返回 null。

如果未提供 radius,则结果是沿地球表面的米数。

如果 radius 是负数,则返回一个错误。

如果 geom1geom2 不具有相同的空间参考系统标识符 (SRID) 值,则返回一个错误。

如果 geom1geom2 不是点,则返回一个错误。

Examples

下列示例“HP计算德国三个机场位置之间的距离,单位为千米”: BerlinTegel(TXL)、MunichInternational(MUC)和FrankfurtInternational(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