ST_DWITHIN函数用于判断两个地理对象之间的最短距离是否小于或等于指定的距离值。
命令格式
BOOLEAN ST_DWITHIN(GEOGRAPHY <value1>, GEOGRAPHY <value2>, DOUBLE <distance>)参数说明
value1、value2:必填。GEOGRAPHY数据类型的地理对象。可根据需求使用ST_GEOGPOINT、ST_GEOGFROMWKB、ST_GEOGFROMTEXT、ST_MAKELINE和ST_MAKEPOLYGON函数来构造GEOGRAPHY类型对象。
distance:必填。DOUBLE类型。距离阈值,单位为米。
返回值说明
返回BOOLEAN类型。返回规则如下:
若value1中任意一点到value2中任意一点的最短距离小于或等于distance,则返回TRUE;否则返回FALSE。
若value1或value2为空的地理对象,则返回FALSE。
使用示例
示例1:判断两个地理点之间的最短距离是否在给定阈值内。
-- 返回FALSE,两个点之间的距离约为157249.63米,大于给定阈值157249.0 SELECT ST_DWITHIN(ST_GEOGFROMTEXT('POINT(0 0)'), ST_GEOGFROMTEXT('POINT(1 1)'), 157249.0); -- 返回TRUE,两个点之间的距离小于给定阈值157249.7 SELECT ST_DWITHIN(ST_GEOGFROMTEXT('POINT(0 0)'), ST_GEOGFROMTEXT('POINT(1 1)'), 157249.7);示例2:空地理对象处理
-- 返回FALSE,因为有一个地理对象是empty SELECT ST_DWITHIN(ST_GEOGFROMTEXT('POINT(0 0)'), ST_GEOGFROMTEXT('POINT EMPTY'), 157249.7);示例3:判断点是否在多边形内部(距离为0)
-- 返回TRUE,因为POINT(0 0)在POLYGON内部,最短距离为0 SELECT ST_DWITHIN(ST_GEOGFROMTEXT('POINT(0 0)'), ST_GEOGFROMTEXT('POLYGON((-1 -1, 1 -1, 1 1, -1 1, -1 -1))'), 0.0);