类别:

地理空间函数

ST_DISTANCE

返回两个 GEOGRAPHY 对象之间的最小测地线距离,或两个 GEOMETRY 对象之间的最小欧几里得距离。

语法

ST_DISTANCE( <geography_or_geometry_expression_1> , <geography_or_geometry_expression_2> )
Copy

实参

geography_or_geometry_expression_1

实参的类型必须为 GEOGRAPHY 或 GEOMETRY。

geography_or_geometry_expression_2

实参的类型必须为 GEOGRAPHY 或 GEOMETRY。

返回

返回表示距离的 FLOAT 值,或者返回 NULL:

  • 对于 GEOGRAPHY 输入值,距离以米为单位。

  • 对于 GEOMETRY 输入值,距离的计算单位与定义输入坐标的单位相同。

  • 如果一个或多个输入点为 NULL,则返回 NULL。

使用说明

  • 对于 GEOMETRY 对象,如果两个输入 GEOMETRY 对象具有不同的 SRIDs,该函数会报告错误。

示例

以下示例使用 ST_DISTANCE 函数。

GEOGRAPHY 示例

以米为单位显示沿赤道相距 1 度的两点之间的距离(约 111 公里或 69 英里)。

WITH d AS
  ( ST_DISTANCE(ST_MAKEPOINT(0, 0), ST_MAKEPOINT(1, 0)) )
SELECT d / 1000 AS kilometers, d / 1609 AS miles;
Copy
+---------------+--------------+
|    KILOMETERS |        MILES |
|---------------+--------------|
| 111.195101177 | 69.108204585 |
+---------------+--------------+

当一个或多个输入值为 NULL 时,显示 ST_DISTANCE 函数的输出:

SELECT ST_DISTANCE(ST_MAKEPOINT(0, 0), ST_MAKEPOINT(NULL, NULL)) AS null_input;
Copy
+------------+
| NULL_INPUT |
|------------|
|       NULL |
+------------+

GEOMETRY 示例

以下示例比较了为 GEOGRAPHY 和 GEOMETRY 输入对象计算的距离。

SELECT ST_DISTANCE(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('POINT(1 1)')) AS geometry_distance,
  ST_DISTANCE(TO_GEOGRAPHY('POINT(0 0)'), TO_GEOGRAPHY('POINT(1 1)')) AS geography_distance;
Copy
+-------------------+--------------------+
| GEOMETRY_DISTANCE | GEOGRAPHY_DISTANCE |
|-------------------+--------------------|
|       1.414213562 |   157249.628092508 |
+-------------------+--------------------+

有关其他示例,请参阅 比较 GEOGRAPHY 和 GEOMETRY 数据类型的示例

语言: 中文