PostGIS_DropBBox — 从几何图形中删除边界框缓存。
geometry PostGIS_DropBBox(
geometry geomA)
;
从几何图形中删除边界框缓存。这会减小几何图形的大小,但会使基于边界框的查询速度变慢。它还用于删除损坏的边界框。一个损坏的缓存边界框的明显迹象是,当您的 ST_Intersects 和其他关系查询遗漏了理应返回 true 的几何图形时。
边界框会自动添加到几何图形中,并提高查询速度,因此通常不需要这样做,除非生成的边界框以某种方式损坏,或者您安装的是缺少边界框的旧版本。然后您需要删除旧的并重新添加。这种类型的损坏在 8.3-8.3.6 系列中观察到,其中当几何图形发生更改时,缓存的 bbox 并不总是重新计算,并且升级到较新版本而不进行转储重新加载将不会纠正已损坏的框。因此,可以使用下面的方法手动纠正并重新添加 bbox,或者进行转储重新加载。 |
此方法支持圆形字符串和曲线。
--This example drops bounding boxes where the cached box is not correct --The force to ST_AsBinary before applying Box2D forces a recalculation of the box, and Box2D applied to the table geometry always -- returns the cached bounding box. UPDATE sometable SET geom = PostGIS_DropBBox(geom) WHERE Not (Box2D(ST_AsBinary(geom)) = Box2D(geom)); UPDATE sometable SET geom = PostGIS_AddBBox(geom) WHERE Not PostGIS_HasBBOX(geom);