Lors de la découpe des polygones d'une table avec des polygones dans une autre, ST_Intersection peut renvoyer un ensemble de résultats qui peuvent être gérés avec ST_Dump. Les multiples géométries renvoyées ne sont pas nécessairement ST_Polygon mais également ST_LineString (probablement aussi un point). Ainsi, lors de l'exécution d'une requête
INSERT INTO c (geom)
(SELECT (ST_Dump(ST_Intersection(a.geom,b.geom))).geom
FROM a INNER JOIN b ON ST_Intersects(a.geom, b.geom));
lorsque vous essayez de remplir le tableau "c" avec des polygones écrêtés, il échoue avec ERREUR: le type de géométrie (LineString) ne correspond pas au type de colonne (Polygon)
J'ai fait une autre instruction SELECT imbriquée, de sorte que seules les géométries de polygone ont traversé, comme:
INSERT INTO c (geom)
(SELECT geom FROM
(SELECT (ST_Dump(ST_Intersection(a.geom,b.geom))).geom
FROM a INNER JOIN b ON ST_Intersects(a.geom, b.geom))) AS cl
WHERE ST_GeometryType(cl.geom)='ST_Polygon');
Comme c'est un peu lourd, je me demande s'il existe une solution plus élégante pour supprimer des géométries invalides?
{}au-dessus de la fenêtre d'édition de la question.