检测两个几何间的距离是否在指定范围内。
geometry-expression.ST_WithinDistance(geo2,distance[, unit-name])
名称 | 类型 | 说明 |
---|---|---|
geo2 |
ST_Geometry |
要测量与 geometry-expression 的距离的另一个几何值。 |
distance |
DOUBLE |
两个几何应处于其范围内的距离。 |
unit-name |
VARCHAR(128) |
解释 distance 参数时应使用的单位。缺省值为空间参照系的单位。单位名称必须与 ST_UNITS_OF_MEASURE 视图中 UNIT_TYPE 为 'LINEAR' 的行的 UNIT_NAME 列匹配。 |
BIT 如果 geometry-expression 和 geo2 间的距离在指定范围内,则返回 1,否则返回 0。
ST_WithinDistance 方法检测两个几何间的最小距离是否超过指定距离,并考虑公差。
更确切地说,用 d 表示 geometry-expression 和 geo2 间的最小距离。如果 d <= distance 或者 d 超出 distance 的长度低于相关联空间参照系的公差,那么表达式 geometry-expression.ST_WithinDistance( geo2, distance[, unit_name])
的值为 1。
对于平面空间参照系,所计算的距离为平面中的笛卡尔距离,计算时采用相关空间参照系的线性测量单位对于球形地球空间参照系,在计算距离时将考虑地球表面的曲率,方法为使用空间参照系定义中的椭圆体参数。
如果 geometry-expression 包含圆弧线串,则将这些圆弧线串内插到线串中。
对于球形地球空间参照系,仅当 geometry-expression 和 geo2 中只包含点时才支持 ST_WithinDistance 方法。
SQL/MM (ISO/IEC 13249-3: 2006) 服务商扩充
以下示例返回一个排序结果集,其中每行对应于一个与点 (2,3) 的距离在 1.4 之内的 shape。
SELECT ShapeID, ROUND( Shape.ST_Distance( NEW ST_Point( 2, 3 ) ), 2 ) AS dist FROM SpatialShapes WHERE ShapeID < 17 AND Shape.ST_WithinDistance( NEW ST_Point( 2, 3 ), 1.4 ) = 1 ORDER BY dist |
该示例返回以下结果集:
ShapeID | dist |
---|---|
2 |
0.0 |
3 |
0.0 |
5 |
1.0 |
6 |
1.21 |
以下示例创建表示加拿大诺瓦斯克提亚省哈利法克斯市和安大略省滑铁卢市的点,并使用 ST_WithinDistance 说明两个点间的距离在 850 英里内,而不是在 840 英里内。该示例假设已通过 sa_install_feature 系统过程安装了 'st_geometry_predefined_uom' 功能。请参见sa_install_feature 系统过程。
SELECT NEW ST_Point( -63.573566, 44.646244, 4326 ) .ST_WithinDistance( NEW ST_Point( -80.522372, 43.465187, 4326 ) , 850, 'Statute mile' ) within850, NEW ST_Point( -63.573566, 44.646244, 4326 ) .ST_WithinDistance( NEW ST_Point( -80.522372, 43.465187, 4326 ) , 840, 'Statute mile' ) within840 |
该示例返回以下结果集:
within850 | within840 |
---|---|
1 |
0 |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |