Saya punya masalah dengan postgresql dan QGIS:
- Saya bisa menambahkan titik / garis / poligon dan bidang isian
Tetapi saya tidak bisa:
- hapus titik / garis / poligon
- memodifikasi titik / garis / poligon (pindahkan atau modifikasi bidang)
mis: dbname = 'host Eropa' = port host lokal = 5432 pengguna = 'postgres' sslmode = menonaktifkan kunci = 'tid' estimmetadata = true srid = 900913 type = Tabel titik = "publik". "planet_osm_point" (cara) sql =
QGIS terhubung sebagai level admin ke dalam basis data. Dengan pdAdmin III saya dapat melakukan semuanya (membuat, menghapus, memodifikasi ...)
Database postgresql diimpor dari OSM dengan osm2pgsql .
Pada layer lain, seperti .shp, saya tidak memiliki masalah ini.
Ada ide ?
Konfigurasi: Ubuntu 14.04 / Posgresql 9.4 / QGIS 2.10
qgis
postgresql
editing
osm2pgsql
Mathieu
sumber
sumber
Jawaban:
Tetap. Masalahnya bukan kunci utama.
Di pgAdmin lakukan permintaan ini.
ALTER TABLE tableName TAMBAHKAN KUNCI UTAMA (id);
Contoh untuk planet_osm_line tabel dan pengaturan kolom osm_id, sebagai kunci utama:
ALTER TABLE planet_osm_line ADD KUNCI UTAMA (osm_id);
sampai osm_id unik.
sumber
Solusinya adalah membuat kunci utama, seperti yang telah disebutkan.
Tetapi dengan desain,
osm2pgsql
tidak menjamin bahwaosm_id
itu unik. Itu dapat menghasilkan beberapa baris dengan osm_id yang sama .Untuk mengedit
planet_osm_*
tabel di QGIS, sebaiknya tambahkan kolom id lain, misalnyagid
.Untuk menambahkan
gid
kolom unik :QGIS memiliki masalah jika kolom geometri hanya GEOMETRI. Beberapa kueri mungkin gagal. Saya merasa berguna untuk mengubah
planet_osm_polygon
geometri menjadiMultiPolygon
dengan:sumber
Saya pikir ini adalah masalah utama. Meja Anda harus memiliki satu dan itu dikenali ketika Anda melihat tabel melalui PGAdmin.
Saya memiliki masalah yang sama, tetapi memuat kembali layer dengan bidang kunci utama yang disebut ID (arbitrary) dan semua alat edit saya sekarang aktif di bilah alat.
Menggunakan SQL Anda dapat menambahkan kolom OID dari tipe data 'serial' dan membuat kunci utama menggunakan pernyataan ini:
Menggunakan GUI, Anda dapat memuat ulang layer Anda dengan kunci utama yang akan dikenali oleh database dan dengan demikian PostGIS dan QGIS:
Dari sana, kembali ke PGAdmin, sambungkan ke database Anda, dan klik pada tabel yang baru saja Anda buat - Anda sekarang dapat melihat apakah kolom OID dikenali:
sumber