PostGIS_DropBBox — ジオメトリからバウンディングボックスのキャッシュを削除します。
geometry PostGIS_DropBBox(geometry geomA);
ジオメトリからバウンディングボックスのキャッシュを削除します。これによりジオメトリのサイズは小さくなりますが、バウンディングボックスを基にした検索が遅くなります。破損したバウンディングボックスを削除する際にも使われます。ST_Intersectsや他の関係関数がジオメトリを正しくtrueを返すべきジオメトリを無視すると、それが、バウンディングボックスのキャッシュが破損したことを示す合図です。
![]() | |
バウンディングボックスは自動的にジオメトリに追加されるので、通常はこの関数は不要ですが、生成されたバウンディングボックスが何らかの理由で破損するか、バウンディングボックスを欠く古い版をインストールしている場合に使われます。古いものを削除し、再追加する必要があります。この種類の破損は8.3-8.3.6で観察されました。ジオメトリが変更された際に常にキャッシュされたバウンディングボックスが再計算されておらず、ダンプと再読み込みを行わずに新しい版へのアップグレードを行うと、既に破損したバウンディングボックスが訂正されないためです。次に示すように手動で収集してバウンディングボックスを再追加するか、ダンプとリロードを使います。 |
This method supports Circular Strings and Curves
-- これは、バウンディングボックスのキャッシュが正しくないときに
-- バウンディングボックスを削除する例です。
-- Box2Dの適用でバウンディングボックスの再計算が強制される前に
-- ST_AsBinaryを実行して、
-- ジオメトリテーブルに適用されたBox2Dが
-- 常にバウンディングボックスのキャッシュを返すようにします。
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);