- 类别:
ST_DISTANCE¶
返回两个 GEOGRAPHY 对象之间的最小测地线距离,或两个 GEOMETRY 对象之间的最小欧几里得距离。
语法¶
ST_DISTANCE( <geography_or_geometry_expression_1> , <geography_or_geometry_expression_2> )
实参¶
geography_or_geometry_expression_1
实参的类型必须为 GEOGRAPHY 或 GEOMETRY。
geography_or_geometry_expression_2
实参的类型必须为 GEOGRAPHY 或 GEOMETRY。
返回¶
返回一个 REAL 值,代表距离:
对于 GEOGRAPHY 输入值,距离以米为单位。
对于 GEOMETRY 输入值,距离的计算单位与定义输入坐标的单位相同。
使用说明¶
如果一个或多个输入点为 NULL,则返回 NULL。
对于 GEOMETRY 对象,如果两个输入 GEOMETRY 对象具有不同的 SRIDs,该函数会报告错误。
示例¶
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; +---------------+--------------+ | KILOMETERS | MILES | |---------------+--------------| | 111.195101177 | 69.108204585 | +---------------+--------------+
该示例展示了带有 NULL 值的 ST_DISTANCE 函数的用法:
SELECT ST_DISTANCE(ST_MAKEPOINT(0, 0), ST_MAKEPOINT(NULL, NULL)); +-----------------------------------------------------------+ | ST_DISTANCE(ST_MAKEPOINT(0, 0), ST_MAKEPOINT(NULL, NULL)) | |-----------------------------------------------------------| | 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;+-------------------+--------------------+ | GEOMETRY_DISTANCE | GEOGRAPHY_DISTANCE | |-------------------+--------------------| | 1.414213562 | 157249.628092508 | +-------------------+--------------------+