STV_DWithin

确定从一个空间对象的边界到另一个对象的边界的最短距离是否在指定的距离范围以内。

g1g2 参数必须都是 GEOMETRY 对象或都是 GEOGRAPHY 对象。

行为类型

不可变

语法

STV_DWithin( g1, g2, d )

参数

g1

GEOMETRY 或 GEOGRAPHY 类型的空间对象

g2

GEOMETRY 或 GEOGRAPHY 类型的空间对象

d
表示距离的 FLOAT 类型的值。对于 GEOMETRY 对象,距离使用笛卡尔坐标单位测量。对于 GEOGRAPHY 对象,距离以米为单位测量。

返回

BOOLEAN

支持的数据类型

兼容的 GEOGRAPHY 对:

数据类型
GEOGRAPHY (Perfect Sphere)
Point-Point
Point-Linestring
Point-Polygon
Point-Multilinestring
Point-Multipolygon

示例

以下示例显示了 STV_DWithin 的用法。

两个几何图形彼此在最接近的点的距离为一个笛卡尔坐标单位:

=> SELECT STV_DWithin(ST_GeomFromText('POLYGON((-1 -1,2 2,0 1,-1 -1))'),
   ST_GeomFromText('POLYGON((4 3,2 3,4 5,4 3))'),1);
 STV_DWithin
-------------
 t
(1 row)

如果将该距离缩小为 0.99 个单位:

=> SELECT STV_DWithin(ST_GeomFromText('POLYGON((-1 -1,2 2,0 1,-1 -1))'),
   ST_GeomFromText('POLYGON((4 3,2 3,4 5,4 3))'),0.99);
 STV_DWithin
-------------
 f
(1 row)

第一个多边形将会接触到第二个多边形:

=> SELECT STV_DWithin(ST_GeomFromText('POLYGON((-1 -1,2 2,0 1,-1 -1))'),
   ST_GeomFromText('POLYGON((1 1,2 3,4 5,1 1))'),0.00001);
 STV_DWithin
-------------
 t
(1 row)

第一个多边形不在第二个多边形的 1000 米距离范围以内:

=> SELECT STV_DWithin(ST_GeomFromText('POLYGON((45.2 40,50.65 51.29,
   55.67 47.6,50 47.6,45.2 40))'),ST_GeomFromText('POLYGON((25 25,25 30,
   30 30,30 25,25 25))'), 1000);
 STV_DWithin
--------------
 t
(1 row)