Saya mencoba mengimpor beberapa polifon shapefile ke Postgis di QGIS via SPIT. Salah satunya tidak dapat diimpor dan mengembalikan kesalahan ini:
ERROR: Geometry type (Polygon) does not match column type (MultiPolygon)
Saya sudah mencoba mengubah atribut "Feature Class" dalam tabel itu di SPIT widnow, dari MULTIPOLYGON ke POLYGON, tetapi tidak ada yang terjadi.
Apakah ada cara untuk membuat Postgis menerima kedua jenis (poligon dan multipoligon)? Atau mungkin entah bagaimana saya dapat mengubah geometri shapefile dari poligon ke multipoligon? Ada ide?
Saya sudah mencoba Qgis 2.0.1 di Windows dan Qgis 2.3 di ArchLinux.
Ini tampaknya merupakan masalah yang diketahui yang tidak akan diperbaiki: lihat http://hub.qgis.org/issues/5328
Jika Anda membutuhkan solusi, coba ubah jenis kolom geometri tabel Anda menjadi 'geometri' umum:
Setelah melakukan impor, Anda dapat kembali ke
MultiPolygon
:Atau, coba muat data Anda menggunakan ogr2ogr .
sumber
Saya menggunakan ogr2ogr untuk mengotomatiskan penggunaan shapefile ke dalam database PostGIS. Khusus terkait dengan pertanyaan, gunakan opsi:
Ini akan memaksa ogr2ogr untuk mempromosikan geometri POLYGON ke MULTIPOLYGON, menghindari kesalahan. Contoh yang sangat sederhana:
Saya telah menghilangkan detail host / auth pgsql. Untuk batch beberapa shapefile Anda dapat melakukan sesuatu seperti:
sumber
Walaupun saya mencoba menyelesaikannya dengan algoritma "Impor ke PostGis", saya tidak berhasil (database saya tidak muncul dalam daftar - saya menggunakan QGIS 2.10).
Sebagai gantinya, saya menggunakan shp2pgsql , yang merupakan tugas Command Prompt sederhana seperti yang dijelaskan di bawah ini:
C:\Program Files\PostgreSQL\9.4\bin>
.shp
file Anda ke direktori ini. (Saya menyalin seluruh folder saya dengan.shp
file saya .shp2pgsql -s 4326 MyShpDir/MySHPFile.shp> MYSQLFile.sql
manaMyShpDir
direktori Anda, 4326 adalah SRID WGS84 jadi ubah jika Anda menggunakan SSID yang berbeda,MySHPFile.shp
file khusus Anda (MYSQLFile
akan dibuat secara otomatis). Jelas lakukan ini untuk semua file yang ingin Anda konversi. File akan disimpan di direktori Anda saat ini (C:\Program Files\PostgreSQL\9.4\bin
dalam kasus saya)Kemudian cukup salin & tempel file SQL di PLSQL DataBase Anda.
Selain itu, satu hal keren tambahan tentang
shp2pgsql
kenyataan bahwa Anda dapat langsung membuat indeks di tabel Anda hanya dengan menambahkanI
parameter dalam perintah, seperti ini:shp2pgsql -s 4326 -I MyShpDir/MySHPFile.shp> MYSQLFile.sql
Keuntungan! :)
sumber
Ya, Anda bisa memberi tahu PostGIS untuk menerima semua jenis geometri (poligon, multipoligon, titik, linestring, dll) dengan menambahkan batasan berikut ke tabel Anda.
Untuk PostGIS 2.x (menggunakan typemod Geometry generik)
Jawaban Sebelumnya (untuk PostGIS 1.x menggunakan Kendala)
sumber
enforce_geotype_geom
daripadaenforce_geometry_type
. beri tahu saya jika itu berhasil, dan saya akan mengedit respons saya jika berhasil.Saya mencoba solusi algoritma 'Impor ke PostGIS' tetapi ternyata tidak berhasil. Solusi termudah yang saya temukan adalah pergi ke Database > DB Manager , navigasikan ke database Anda, dan klik tombol Impor layer / file (panah bawah) .
sumber