Ich versuche, einige Polygon-Shapefiles über SPIT nach Postgis in QGIS zu importieren. Einer von ihnen kann nicht importiert werden und gibt diesen Fehler zurück:
ERROR: Geometry type (Polygon) does not match column type (MultiPolygon)
Ich habe versucht, das Attribut "Feature Class" in dieser Tabelle in SPIT widnow von MULTIPOLYGON in POLYGON zu ändern, aber es ist nichts passiert.
Gibt es eine Möglichkeit, Postgis zu veranlassen, beide Typen (Polygon und Multipolygon) zu akzeptieren? Oder kann ich vielleicht irgendwie Shapefile-Geometrie von Polygon in Multipolygon konvertieren? Irgendwelche Ideen?
Ich habe Qgis 2.0.1 in Windows und Qgis 2.3 in ArchLinux ausprobiert.
Dies scheint ein bekanntes Problem zu sein, das nicht behoben werden kann: siehe http://hub.qgis.org/issues/5328
Wenn Sie eine Problemumgehung benötigen, versuchen Sie, den Geometriespaltentyp Ihrer Tabelle in eine generische "Geometrie" zu ändern:
Nachdem Sie den Import abgeschlossen haben, können Sie zurückkehren zu
MultiPolygon
:Versuchen Sie alternativ, Ihre Daten mit ogr2ogr zu laden .
quelle
Ich benutze ogr2ogr, um das Einlesen von Shapefiles in eine PostGIS-Datenbank zu automatisieren. Verwenden Sie im Hinblick auf die Frage die Option:
Dadurch wird ogr2ogr gezwungen, POLYGON-Geometrien in MULTIPOLYGON umzuwandeln, wodurch der Fehler vermieden wird. Ein sehr einfaches Beispiel:
Ich habe Pgsql Host / Auth Details ausgelassen. Um mehrere Shapefiles zu stapeln, können Sie Folgendes tun:
quelle
Obwohl ich versucht habe, es mit dem "Import to PostGis" -Algorithmus zu lösen, hatte ich keinen Erfolg (meine Datenbank wurde nicht in der Liste angezeigt - ich verwende QGIS 2.10).
Stattdessen habe ich shp2pgsql verwendet , eine einfache Eingabeaufforderung, wie unten beschrieben:
C:\Program Files\PostgreSQL\9.4\bin>
.shp
Dateien und fügen Sie sie in dieses Verzeichnis ein. (Ich habe meinen gesamten Ordner mit meinen.shp
Dateien kopiert .shp2pgsql -s 4326 MyShpDir/MySHPFile.shp> MYSQLFile.sql
inMyShpDir
Ihrem Verzeichnis. Ändern Sie daher bei Verwendung einer anderen SSID Ihre bestimmte Datei ( wird automatisch erstellt). Tun Sie dies natürlich für alle Dateien, die Sie konvertieren möchten. Die Dateien werden in Ihrem aktuellen Verzeichnis gespeichert ( in meinem Fall)MySHPFile.shp
MYSQLFile
C:\Program Files\PostgreSQL\9.4\bin
Dann kopieren Sie einfach die SQL-Dateien in Ihre PLSQL-Datenbank.
Darüber hinaus ist eine weitere coole Sache
shp2pgsql
, dass Sie sofort einen Index in Ihrer Tabelle erstellen können, indem Sie einfach denI
Parameter im Befehl hinzufügen , wie folgt :shp2pgsql -s 4326 -I MyShpDir/MySHPFile.shp> MYSQLFile.sql
Profitieren! :)
quelle
Ja, Sie können PostGIS anweisen, jeden Geometrietyp (Polygon, Multipolygon, Punkt, Linienfolge usw.) zu akzeptieren, indem Sie der Tabelle die folgende Einschränkung hinzufügen.
Für PostGIS 2.x (unter Verwendung des generischen Geometrie-Typemods)
Vorherige Antwort (für PostGIS 1.x mit Einschränkungen)
quelle
enforce_geotype_geom
lieber mit alsenforce_geometry_type
. Lassen Sie mich wissen, ob das funktioniert, und ich bearbeite meine Antwort, wenn dies der Fall ist.Ich habe versucht, den PostGIS-Algorithmus zu importieren, aber auch das hat nicht funktioniert. Die einfachste Lösung, die ich gefunden habe, war, zu Datenbank > DB Manager zu wechseln, zu Ihrer Datenbank zu navigieren und auf die Schaltfläche Layer / Datei importieren (Abwärtspfeil) zu klicken .
quelle