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);