Bonjour,
Nombreux sont ceux qui, lors de création de nouvelles géométries ou de diverses manipulations de géométries lors d'une connexion entre PostgreSQL/PostGIS et Qgis, ont un problème de cohérence de géométrie dans leur table et voit ce message apparaître :
Erreurs : ERREUR : 1 attribut non-ajouté.
Erreur du prestataire :
Erreur PostGIS lors de l'ajout d'entité : ERREUR: Geometry type (Polygon) does not match column type (MultiPolygon)
C'était mon cas et étonnement, je n'ai trouver que peu de sujets à ce propos et encore moins de solutions.
Soit, ayant réussi à régler mon problème je partage la marche à suivre.
La manip se fait dans Postgre
1. Je crée une nouvelle colonne que j'appelle as_text de type text :
>>> ALTER TABLE schema.matable ADD COLUMN as_text text;
2. Je mets à jour cette colonne par un UPDATE ... SET et je dis que ma nouvelle colonne est égale à ma colonne de géométrie à la seule différence que je transforme ma géométrie en texte pour voir à quel type de géométrie j'ai affaire.
>>> UPDATE schema.matable SET as_text = (SELECT ST_ASTEXT(geom) FROM schema.matable);
3. De là on peut déjà constater les géométries. Maintenant il suffit plus qu'à faire une petite requête :
>>> UPDATE schema.matable SET as_text = (SELECT ST_ASTEXT(ST_MULTI(geom)) FROM schema.matable);
Et Tadaaa! toute la géométrie devient du MULTIPOLYGON.
Il faut savoir que la géométrie qui était initialement en MULTIPOLYGON reste telle quelle.
4. Plus qu'a faire un UPDATE sur ma colonne geom
>>> UPDATE schema.matable SET geom = as_text;
Puis on peut supprimer la colonne as_text
La procédure est bien sur appliquable pour les points et lignes.
Je vous conseille ensuite de créer une contrainte dans Postgre pour ne plus qu'avoir du POLYGON ou du MULTIPOLYGON.
Voilà, personnellement j'ai galéré alors je me suis dis que le partager pouvait rendre service à d'autres.
Partager