J'essaie d'importer des fichiers de formes polygonales dans Postgis dans QGIS via SPIT. L'un d'eux ne peut pas être importé et renvoie cette erreur:
ERROR: Geometry type (Polygon) does not match column type (MultiPolygon)
J'ai essayé de changer l'attribut "Feature Class" dans cette table dans widnow SPIT, de MULTIPOLYGON à POLYGON, mais rien ne s'est produit.
Existe-t-il un moyen pour que Postgis accepte les deux types (polygone et multipolygone)? Ou peut-être que je peux convertir la géométrie du fichier de formes du polygone en multipolygone? Des idées?
J'ai essayé Qgis 2.0.1 sous Windows et Qgis 2.3 sous ArchLinux.
Cela semble être un problème connu qui ne sera pas résolu: voir http://hub.qgis.org/issues/5328
Si vous avez besoin d'une solution de contournement, essayez de changer le type de colonne de géométrie de votre table en une «géométrie» générique:
Après avoir effectué votre importation, vous pouvez revenir à
MultiPolygon
:Vous pouvez également essayer de charger vos données à l'aide de ogr2ogr .
la source
J'utilise ogr2ogr pour automatiser l'ingestion de fichiers de formes dans une base de données PostGIS. En ce qui concerne spécifiquement la question, utilisez l'option:
Cela forcera ogr2ogr à promouvoir les géométries POLYGON en MULTIPOLYGON, en évitant l'erreur. Un exemple très simple:
J'ai omis les détails de l'hôte / auth pgsql. Pour regrouper plusieurs fichiers de formes, vous pouvez faire quelque chose comme:
la source
Bien que j'aie essayé de le résoudre avec l'algorithme "Importer vers PostGis", je n'ai pas réussi (ma base de données n'apparaissait pas sur la liste - j'utilise QGIS 2.10).
Au lieu de cela, j'ai utilisé shp2pgsql , qui était une tâche d'invite de commandes simple, comme décrit ci-dessous:
C:\Program Files\PostgreSQL\9.4\bin>
.shp
fichiers dans ce répertoire. (J'ai copié tout mon dossier avec mes.shp
fichiers.shp2pgsql -s 4326 MyShpDir/MySHPFile.shp> MYSQLFile.sql
oùMyShpDir
votre répertoire, 4326 est le SRID de WGS84, changez donc si vous utilisez un SSID différent,MySHPFile.shp
votre fichier particulier (MYSQLFile
sera créé automatiquement). Évidemment, faites cela pour tous les fichiers que vous souhaitez convertir. Les fichiers seront enregistrés dans votre répertoire actuel (C:\Program Files\PostgreSQL\9.4\bin
dans mon cas)Ensuite, copiez et collez simplement les fichiers SQL dans votre base de données PLSQL.
De plus, une autre chose intéressante
shp2pgsql
est le fait que vous pouvez créer instantanément un index dans votre table en ajoutant simplement leI
paramètre dans la commande, comme ceci:shp2pgsql -s 4326 -I MyShpDir/MySHPFile.shp> MYSQLFile.sql
Profit! :)
la source
Oui, vous pouvez indiquer à PostGIS d'accepter tout type de géométrie (polygone, multipolygone, point, chaîne de lignes, etc.) en ajoutant la contrainte suivante à votre table.
Pour PostGIS 2.x (en utilisant le type de modèle Geometry générique)
Réponse précédente (pour PostGIS 1.x utilisant des contraintes)
la source
enforce_geotype_geom
plutôt queenforce_geometry_type
. faites-moi savoir si cela fonctionne, et je modifierai ma réponse si c'est le cas.J'ai essayé la solution d'algorithme «Importer dans PostGIS» mais j'ai constaté que cela ne fonctionnait pas non plus. La solution la plus simple que j'ai trouvée était d'aller dans Base de données > Gestionnaire de bases de données, accédez à votre base de données et cliquez sur le bouton Importer la couche / le fichier (la flèche vers le bas) .
la source