如果两个对象之间的距离在指定范围之内,则返回True。

语法

boolean  ST_DWithin(geometry  g1 , geometry  g2 , double precision  distanceOfSrid);
boolean  ST_DWithin(geography  gg1 , geography  gg2 , double precision  distanceMeters);
boolean  ST_DWithin(geography  gg1 , geography  gg2 , double precision  distanceMeters , boolean  useSpheroid);

参数

参数名称 描述
g1 第一个Geometry对象。
g2 第二个Geometry对象。
distanceOfSrid 在源数据SRID下的距离。
gg1 第一个Geography对象。
gg2 第二个Geography对象。
distanceMeters 单位为米的距离值。
useSpheroid 是否使用椭球参考系。使用椭球参考系会使得结果更精确但稍慢。

描述

  • 对于Geometry对象,两个对象的SRID必须一致才使得函数有意义。
  • 对于Geography对象,默认使用米为单位。
  • 该函数调用时将自动包括外包框比较,该比较将利用Geometry对象上可用的任何索引。
  • 对于3D对象,需要使用ST_3DDWithin

示例

对比ST_DFullyWithin
SELECT ST_DFullyWithin(g1,g2,2), ST_DWithin(g1,g2,2) from (SELECT 'LINESTRING(0 1,1 1)'::geometry as g1,
                                                                           'LINESTRING(0 0,0 -1)'::geometry as g2) as test;
 st_dfullywithin | st_dwithin
-----------------+------------
 f               | t
(1 row)