Name

PostGIS_DropBBox — Supprime le cache de la boîte de délimitation de la géométrie.

Synopsis

geometry PostGIS_DropBBox(geometry geomA);

Description

Supprime le cache de la boîte de délimitation de la géométrie. Cela réduit la taille de la géométrie, mais rend les requêtes basées sur les boîtes de délimitation plus lentes. Elle est également utilisée pour supprimer une boîte de délimitation corrompue. Un signe révélateur d'une boîte de délimitation corrompue dans le cache est lorsque vos ST_Intersects et autres requêtes de relations laissent de côté des géométries qui devraient légitimement renvoyer un résultat vrai.

[Note]

Les boîtes de délimitation sont automatiquement ajoutées aux géométries et améliorent la vitesse des requêtes. En général, cela n'est donc pas nécessaire, sauf si le boîte de délimitation générée est corrompue d'une manière ou d'une autre ou si vous avez une ancienne installation qui ne contient pas de boîtes de délimitation. Dans ce cas, il est nécessaire de supprimer l'ancienne installation et de la remplacer par une nouvelle. Ce type de corruption a été observé dans les séries 8.3-8.3.6 où les bboxes mises en cache n'étaient pas toujours recalculées lorsqu'une géométrie changeait et lors des mises à jour vers une version plus récente où le dump non rechargé ne corrigeait pas les bboxes déjà corrompues. La mise à jour vers une version plus récente sans rechargement du dump ne corrigera pas les boîtes déjà corrompues. Il est donc possible de corriger manuellement en utilisant la méthode ci-dessous et de lire la bbox ou de recharger le dump.

Cette méthode prend en charge les types Circular String et Curve.

Exemples

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