PostGIS_DropBBox — バウンディングボックスのキャッシュをジオメトリから削除します.
geometry PostGIS_DropBBox(
geometry geomA)
;
バウンディングボックスのキャッシュをジオメトリから削除します. これによりジオメトリのサイズは縮小しますが,バウンディングボックスベースのクエリは遅くなります.不正なバウンディングボックスの削除にも使います.不正なバウンディングボックスを知るためのサインは,ST_Intersectsや他の関連クエリが当然TRUEになるべきジオメトリを無視する時です.
バウンディングボックスにはジオメトリが自動的に追加され, 必要が無くてもクエリの速度を改善させます. 生成されたジオメトリボックスが何らかの方法で壊されたり,バウンダリボックスが欠けている古い版のデータベースを持っている場合のみ使う必要があります.その際,古いものを削除して追加しなおす必要があります. この種の破壊は8.3-8.3.6シリーズで見られます. これは,ジオメトリ更新時にキャッシュされたバウンディングボックスが常には再計算されないことや,ダンプとリロードを伴わないアップグレードで破壊されたバウンディングボックスが修正されないことによります.次を使って手動修正とバウンディングボックス追加を行うか,ダンプとリロードを行います. |
このメソッドは曲線ストリングと曲線をサポートします.
--この例では,キャッシュが不正になっている --バウンダリボックスを削除しています. --Box2Dを適用する前にST_AsBinaryを強制することで, --ボックスを強制的に再計算します. --テーブルジオメトリに適用されたBox2Dは --常にキャッシュされたバウンディングボックスを返します. 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 the_geom = PostGIS_DropBBox(the_geom) WHERE Not (Box2D(ST_AsBinary(the_geom)) = Box2D(the_geom)); UPDATE sometable SET the_geom = PostGIS_AddBBox(the_geom) WHERE Not PostGIS_HasBBOX(the_geom);