名称

ST_Expand — 返回从另一个边界框或几何图形扩展的边界框。

语法

geometry ST_Expand(geometry geom, float units_to_expand);

geometry ST_Expand(geometry geom, float dx, float dy, float dz=0, float dm=0);

box2d ST_Expand(box2d box, float units_to_expand);

box2d ST_Expand(box2d box, float dx, float dy);

box3d ST_Expand(box3d box, float units_to_expand);

box3d ST_Expand(box3d box, float dx, float dy, float dz=0);

描述

返回从输入边界框扩展的边界框,方法是指定一个距离,使边界框在两个轴上都扩展该距离,或为每个轴指定一个扩展距离。使用双精度。可用于距离查询,或向查询中添加边界框过滤器,以利用空间索引。

除了接受并返回几何图形的 ST_Expand 版本外,还提供了接受并返回 box2dbox3d 数据类型的数据类型。

距离以输入的空间参考系单位为单位。

ST_Expand 类似于 ST_Buffer,不同之处在于,缓冲在所有方向上扩展几何图形,而 ST_Expand 沿每个轴扩展边界框。

[Note]

在 1.3 版本之前,ST_Expand 与 ST_Distance 结合使用,以执行可索引的距离查询。例如,geom && ST_Expand('POINT(10 20)', 10) AND ST_Distance(geom, 'POINT(10 20)') < 10。这已被更简单、更高效的 ST_DWithin 函数所取代。

可用性:1.5.0 行为已更改为输出双精度,而不是 float4 坐标。

增强:引入了对多面体表面、三角形和 TIN 的 2.0.0 支持。

增强:添加了 2.3.0 支持,以便在不同维度中以不同量扩展一个框。

此函数支持多面体表面。

此函数支持三角形和三角不规则网络表面 (TIN)。

示例

[Note]

以下示例使用美国国家地图集等面积(SRID=2163),它是一种米投影

		
--10 meter expanded box around bbox of a linestring
SELECT CAST(ST_Expand(ST_GeomFromText('LINESTRING(2312980 110676,2312923 110701,2312892 110714)', 2163),10) As box2d);
					 st_expand
------------------------------------
 BOX(2312882 110666,2312990 110724)

--10 meter expanded 3D box of a 3D box
SELECT ST_Expand(CAST('BOX3D(778783 2951741 1,794875 2970042.61545891 10)' As box3d),10)
							  st_expand
-----------------------------------------------------
 BOX3D(778773 2951731 -9,794885 2970052.61545891 20)

 --10 meter geometry astext rep of a expand box around a point geometry
 SELECT ST_AsEWKT(ST_Expand(ST_GeomFromEWKT('SRID=2163;POINT(2312980 110676)'),10));
											st_asewkt
-------------------------------------------------------------------------------------------------
 SRID=2163;POLYGON((2312970 110666,2312970 110686,2312990 110686,2312990 110666,2312970 110666))

		

另请参见

ST_BufferST_DWithinST_SRID