Pages: 1
- Sujet précédent - QGIS & PostGIS: Incompatibilité entre POLYGON et MULTIPOLYGON - Sujet suivant
#1 Fri 22 April 2016 14:41
- Alice.C
- Participant occasionnel
- Date d'inscription: 24 Sep 2015
- Messages: 15
QGIS & PostGIS: Incompatibilité entre POLYGON et MULTIPOLYGON
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.
Hors ligne
#2 Tue 02 August 2016 15:16
- guil31
- Participant actif
- Date d'inscription: 22 Jan 2013
- Messages: 79
Re: QGIS & PostGIS: Incompatibilité entre POLYGON et MULTIPOLYGON
Bonjour,
Merci pour ce post qui m'a bien été utile.
On peut faire le update directement:
Code:
UPDATE schema.matable SET geom = ST_ASTEXT(ST_MULTI(geom));
Dans mon cas je suis tombé sur une deuxième erreur de type:
ERREUR: Geometry SRID (0) does not match column SRID (2154)
et j'ai résolu le problème en effectuant le update de la façon suivante (mes données étaient déjà dans le SRID 2154)
Code:
UPDATE schema.matable SET geom = ST_SetSRID(ST_ASTEXT(ST_MULTI(geom)), 2154);
Hors ligne
#3 Thu 02 November 2017 16:20
- Tony VINCENT
- Participant actif
- Lieu: Poitiers
- Date d'inscription: 13 Jan 2010
- Messages: 86
Re: QGIS & PostGIS: Incompatibilité entre POLYGON et MULTIPOLYGON
Bonjour,
J'ai eu le même problème lors de ajout de données dans une table en utilisant la fonction ST_Union.
Après quelques recherche sur la toile et ayant vu ce post, je me permet d'ajouter une autre solution.
Ce qui posait problème :
Code:
ST_Union(geom) Qui générait l'erreur suivante : ERREUR: Geometry type (Polygon) does not match column type (MultiPolygon)
En modifiant mon code comme ceci, plus de message d'erreur :
Code:
ST_Multi(ST_Union(ST_Multi(a.geom)))
Cordialement,
Tony VINCENT
Hors ligne
Pages: 1
- Sujet précédent - QGIS & PostGIS: Incompatibilité entre POLYGON et MULTIPOLYGON - Sujet suivant