Memuat ulang file CSV dalam QGIS?

9

Saya menggunakan QGIS untuk menggambarkan hasil dari simulasi Matlab saya. Matlab menghasilkan file CSV yang terhubung ke shapefile dalam QGIS.

Saat ini saya harus menutup dan membuka kembali QGIS untuk menunjukkan hasil baru dari simulasi Matlab.

Apakah mungkin memuat ulang tabel atribut dari file CSV tanpa menutup dan membuka kembali QGIS?

Edgar
sumber
Terima kasih @Jason, tip Anda berfungsi menyukai pesona bagi saya - menggunakan QGIS 3.10 opsi ada di bawah properties-> source ! [Propertiescreatespatialindex ] ( i.stack.imgur.com/5G3y5.png )
Hannes Buhrmann

Jawaban:

3

Saya dapat menyarankan alur kerja alternatif yang, meskipun tidak selalu lebih mudah daripada menutup dan membuka QGIS setiap kali, mungkin lebih masuk akal:

  • Impor shapefile Anda ke spasial
  • Impor CSV ke dalam spatialite (menggunakan opsi "Virtual TXT / CSV)
  • Buat tampilan spasial dalam spasial dengan BERGABUNG dengan tabel spasial (shapefile) ke tabel CSV virtual

Sekarang, Anda dapat menampilkan tampilan dalam QGIS seperti halnya lapisan spasial mana pun, dan menggunakan nilai-nilai BERGABUNG dari spatialite. Tetapi, setiap kali CSV diciptakan kembali, Anda perlu MENGHENTIKAN tabel CSV virtual, dan menautkannya kembali. Kemudian refresh di QGIS akan menunjukkan nilai-nilai baru. Ini hanya membutuhkan beberapa saat, dan terlebih lagi, Anda dapat menentukan banyak tampilan, dan menyimpan yang sebelumnya jika diperlukan ...

HTH

Micha
sumber
2

Bagi siapa pun yang masih mencari jawaban untuk ini tanpa menggunakan format spasial, saya telah menemukan sesuatu yang berfungsi.

Jika Anda memiliki csv dan menggunakan gabungan untuk bergabung ke lapisan spasial, salah satu opsi bergabung adalah untuk men-cache lapisan. Anda bisa mendapatkan opsi ini jika Anda pergi ke properti lapisan Anda, lalu ke data yang bergabung dan klik edit gabungan. Jika Anda menonaktifkan opsi cache , Anda dapat memuat ulang lapisan data setelah csv berubah dan kemudian memicu pengecatan ulang peta Anda untuk mendapatkan tampilan peta yang segar.

Anda bisa melakukan pemuatan ulang dan pengecatan ulang di Konsol Python. Pertama, Anda harus mendefinisikan nama untuk kanvas peta, csv dan untuk layer:

mc = iface.mapCanvas()
layer=mc.currentLayer()
csv_layer=mc.currentLayer()

Pastikan untuk mengaktifkan lapisan saat Anda memberi nama mereka di konsol saat menggunakan metode currentLayer (itu harus menjadi 'lapisan saat ini').

Kemudian, jika Anda menetapkan opsi cache sebagai off untuk bergabung Anda, Anda dapat mengubah csv dan kemudian menggunakan dua perintah berikut di konsol Python untuk menggambar ulang peta Anda:

csv_layer.reload()
layer.triggerRepaint()

Ini bekerja untuk saya, tetapi saya hanya memiliki 100 baris data. Bisa jadi operasi akan lambat tanpa caching ketika Anda memiliki dataset yang lebih besar.

Sanne de Bruin
sumber
0

Buka properti layer dari shapefile, dan pergi ke General- Coordinate reference system, klik Create spatial index. Setelah selesai, shapefile di-refresh.

Jason
sumber