Di PostGIS 2.0, saya mencari cara yang efisien untuk membuat tampilan yang diaktifkan secara spasial yang dapat dilihat di QGIS.
Saya mengikuti konteks Bagian 2 dari @Mike Toews jawaban untuk Bagaimana membuat tabel dari tabel yang ada (menerapkan skema baru) di postgis DB? , dan tampilan muncul sebagai layer titik (dalam kasus saya) dalam dialog "Tambahkan Lapisan PostGIS". Tetapi setelah membuat tampilan dan mengaktifkannya secara spasial, saya menerima kesalahan berikut ketika mencoba menambahkan tampilan ke QGIS:
Anda harus memilih tabel untuk menambahkan lapisan
Adakah yang bisa menjelaskan mengapa tampilan spasial tidak dimuat ke QGIS, dan apa yang perlu saya lakukan agar dapat dimuat sebagai layer di QGIS?
Saya saat ini menggunakan QGIS v1.8 dari installer OSGEO
Pandangan saya dibangun dari basis data geonames, dimuat ke dalam PostGIS. Tabel geoname / data spasial dapat dipilih / dilihat di QGIS saja.
Ketika saya mencoba untuk memilih " mt_view ", QGIS melihat tampilan dalam dialog, tetapi tidak akan membiarkan saya memilihnya. Ini memberi kotak bertitik di sekitar area, tetapi tidak menyorot dan memilih tampilan.
Saya baru menyadari bahwa ketika saya menjalankan permintaan pertama saya:
CREATE OR REPLACE VIEW data.test AS
SELECT * FROM data.geoname
WHERE admin1='MT'
tampilan muncul di QGIS Add Layer Dialog, tetapi tidak dapat dipilih. Lalu ketika saya menjalankan:
SELECT Populate_Geometry_Columns('data.test'::regclass);
Saya mendapatkan hasil dari "0", di mana menurut dokumentasi , saya pikir itu harus mengembalikan "1".
sumber
Jawaban:
Saya dapat mengonfirmasi bahwa tidak mungkin hanya memilih tampilan yang tercantum.
Tampaknya perlu untuk memilih "kolom kunci utama" terlebih dahulu. Kemudian tabel berubah menjadi dipilih:
sumber
(Memperbarui sedikit jawabanku)
Selama bidang OBJECTID (row_number) adalah yang pertama dalam definisi kolom tampilan , QGIS akan mengambilnya tanpa meminta Anda untuk menambahkan dari menu 'add vector layer'.
Saya baru saja memperbaiki beberapa pandangan lama yang rusak sesuai pertanyaan awal, tetapi memindahkan bidang OBJECTID ke awal tampilan memperbaiki masalah!
sumber
PRIMARY KEY
definisi, QGIS secara rutin mengambilnya: tidak pernah gagal untuk 'memilih' PK di salah satu meja saya yang memiliki PK, meskipun hampir semua PK sayaVARCHAR
. Itu tidak dapat terjadi denganVIEW
karena PostgreSQLVIEW
tidak dapat memilikiCONSTRAINT
. Cukup yakin itu sebabnya perlu untuk memilih PK untukVIEW
tangan ketika mengimpor ke QGIS melalui tombol 'Tambah PostGIS Layers', itulah sebabnya saya mengimpor mereka menggunakan skrip Python.Apakah tampilan Anda muncul di
geometry_columns
tabel? Menurut manual , tampilan akan muncul secara otomatis di 2.0 tetapi saya belum mencobanya.Coba jalankan yang berikut ini untuk memeriksa:
sumber
Apakah tampilan Anda menggunakan bidang bilangan bulat unik seperti "gid" atau setara PK dari salah satu tabel di tampilan Anda?
Saya tahu bahwa dalam versi QGIS sebelumnya saya memiliki masalah dengan pandangan yang ditambahkan ke peta ketika tidak ada bidang bilangan bulat yang unik. Namun saya memang menerima pesan kesalahan berbeda yang menunjukkan masalah itu, tetapi mungkin ada baiknya memeriksa untuk menutup semua pangkalan.
sumber