PostGIS_DropBBox — 从几何体中删除边界框缓存。
geometry PostGIS_DropBBox(geometry geomA);
从几何体中删除边界框缓存。 这会减少几何尺寸,但会使基于边界框的查询变慢。 它还用于删除损坏的边界框。 缓存边界框损坏的一个迹象是 ST_Intersects 和其他关系查询遗漏了理应返回 true 的几何图形。
|
|
|
边界框会自动添加到几何图形中并提高查询速度,因此通常不需要这样做,除非生成的边界框以某种方式损坏或者您的旧安装缺少边界框。 然后你需要删除旧的并重新读取。 在 8.3-8.3.6 系列中已经观察到这种损坏,其中当几何图形更改时,并不总是重新计算缓存的 bbox,并且在不重新加载转储的情况下升级到较新的版本将不会纠正已经损坏的框。 因此,可以使用下面的方法手动更正并重新添加 bbox 或进行转储重新加载。 |
此方法支持圆形字符串和曲线。
This example drops cached bounding boxes where the stored box is wrong. Applying Box2D to ST_AsBinary forces a fresh box calculation, while Box2D on the table geometry reads the cached box.
UPDATE sometable SET geom = PostGIS_DropBBox(geom) WHERE Not (Box2D(ST_AsBinary(geom)) = Box2D(geom));
UPDATE ...
After dropping corrupt cached boxes, re-add them where needed.
UPDATE sometable SET geom = PostGIS_AddBBox(geom) WHERE Not PostGIS_HasBBOX(geom);
UPDATE ...