- 类别:
ST_HAUSDORFFDISTANCE¶
返回两个 GEOGRAPHY 对象之间的离散 豪斯多夫距离 (link removed)。
豪斯多夫距离表示两个对象的相似程度。如果一个对象中的每个点都接近另一个对象中的一个点,则认为两个对象相似。豪斯多夫距离是一个对象中的点与另一个对象中的点之间的最大距离。
ST_HAUSDORFFDISTANCE 返回离散豪斯多夫距离,该距离是通过仅比较顶点(离散点)而不是沿边的任意点来计算的。
语法¶
ST_HAUSDORFFDISTANCE( <geography_expression_1> , <geography_expression_2> )
实参¶
geography_expression_1
实参必须是 GEOGRAPHY 类型的表达式。
geography_expression_2
实参必须是 GEOGRAPHY 类型的表达式。
返回¶
返回一个 REAL 类型的值,该值表示离散的豪斯多夫距离(以度为单位)。
使用说明¶
如果一个或多个输入点为 NULL,则返回 NULL。
示例¶
此示例返回两个点(点 0 0
和点 0 1
)之间的豪斯多夫距离:
SELECT ST_HAUSDORFFDISTANCE(ST_POINT(0, 0), ST_POINT(0, 1)); +------------------------------------------------------+ | ST_HAUSDORFFDISTANCE(ST_POINT(0, 0), ST_POINT(0, 1)) | |------------------------------------------------------| | 1 | +------------------------------------------------------+
下一个示例比较三个多边形(a
、b
和 c
)。
a
和 c
中最远的点(点 0 1
和点 0 3
)之间的距离大于 a
和 b
中最远点(点 1 0
和点 2 0
)之间的距离。
因此,对于 a
和 c
,ST_HAUSDORFFDISTANCE 返回的值较小。这表明 a
和 c
比 a
和 b
更相似。
WITH a AS (TO_GEOGRAPHY('POLYGON((-1 0, 0 1, 1 0, 0 -1, -1 0))')), b AS (TO_GEOGRAPHY('POLYGON((-1 0, 0 1, 2 0, 0 -1, -1 0))')), c AS (TO_GEOGRAPHY('POLYGON((-1 0, 0 3, 1 0, 0 -1, -1 0))')) SELECT ST_HAUSDORFFDISTANCE(a, b) as distance_between_a_and_b, ST_HAUSDORFFDISTANCE(a, c) as distance_between_a_and_c; +--------------------------+--------------------------+ | DISTANCE_BETWEEN_A_AND_B | DISTANCE_BETWEEN_A_AND_C | |--------------------------+--------------------------| | 1 | 2 | +--------------------------+--------------------------+