Bagaimana Saya Dapat Membuat QGIS Berhenti Berkedip Setiap Kali Saya Pan?

8

Cara QGIS menggambar kanvas saat panning cukup mengganggu. Jika saya menggeser peta sedikit saja, semuanya menjadi kosong selama satu atau dua detik sebelum lapisan-lapisan itu digambar. Sepertinya ini terjadi hanya ketika konten lapisan seharusnya diunduh (lapisan PostGIS saya digambar tanpa menyakiti mata saya), jadi ini mungkin hanya masalah dengan konfigurasi daripada kode. Adakah yang punya solusi?

Oh, dan pertanyaannya adalah "bagaimana saya bisa membuat QGIS cocok untuk penderita epilepsi?". Menyebalkan sekali.

EDIT untuk mengajukan pertanyaan untuk QGIS 2.4 dan selanjutnya:

Ini tampaknya masih menjadi masalah di 2.4. Tampaknya ada beberapa pengaturan bermanfaat di bawah Pengaturan> Rendering tetapi ini tidak membantu masalah ini. QGIS tidak memiliki nuansa yang bagus, licin, dan halus dari pemirsa peta lainnya. Apakah caching masih ada di kartu?

orieeel
sumber
Ini adalah salah satu kencing hewan peliharaan terbesar dengan Qgis. Masalahnya sangat mengerikan ketika Anda memiliki lapisan dari Plugin OpenLayers di peta Anda.
Devdatta Tengshe
Ini tidak ideal, tetapi Anda dapat mematikan rendering dengan mencentang renderkotak di bilah alat bawah. Ini berarti bahwa data di luar viewport saat ini tidak lagi ditampilkan / di-refresh.
djq
itu bahkan lebih menjengkelkan ketika Anda berpikir bahwa lapisan yang sama diberikan "dengan benar" oleh geoserver dan bahkan udig. Sayangnya saya tidak bisa menoleh ke mereka, saya perlu kemampuan sql canggih qgis untuk menguji beberapa pertanyaan geo
orieeel
1
@orieeel geoserver dan udig dilakukan di Jawa dan menggunakan teknik render yang berbeda
Nathan W
Di Master Anda bisa mencoba Pengaturan -> Opsi ... -> Rendering dan centang "Aktifkan kembali buffer". Tidak yakin apakah ini mungkin di 1.8. N.
nhopton

Jawaban:

6

Bagi siapa pun yang masih mengalami masalah ini, di QGIS 2.10 Anda dapat pergi ke Pengaturan> Opsi> Rendering , dan mengubah interval pembaruan Peta menjadi lebih besar. Jika QGIS dapat membuat semua lapisan dalam waktu kurang dari jumlah ini, itu akan memperbarui seluruh kanvas sekaligus, yang menghilangkan kedipan. Jika itu tidak dapat memperbarui semua lapisan sebelum interval ini berlalu, itu akan menunjukkan pembaruan parsial, yang menyebabkan berkedip. Anda dapat melihat berapa lama pembaruan kanvas dengan mengaktifkan bendera debugging di pengaturan rendering.

Mat
sumber
Saya menggali poligon berdasarkan gambar UAV (gambar raster RGB 1GB) dan setelah memperbarui poligon, gambar dimuat ulang setiap kali. yang memakan waktu sekitar 5 detik untuk setiap poligon! Dalam kasus saya "gunakan render caching" dalam opsi yang sama menyelesaikan masalah saya! QGIS 2.10.
Jens
5

Saya khawatir jawabannya adalah: Anda dapat menghentikan QGIS agar tidak berkedip dengan mendanai pengembang untuk mengimplementasikan versi yang tidak berkedip.

underdark
sumber
1
Untuk menjelaskan alasannya: Saat ini diturunkan ke bagaimana lapisan dan fitur ditampilkan di mesin rendering. Ada beberapa perkembangan di masa depan, terutama multi-threading, dan caching, yang seharusnya membantu mengurangi hal ini tetapi tidak sepenuhnya.
Nathan W
1
Underdark: LOL
QgisTn
@underdark berharap saya bisa, tetapi itu tidak akan terjadi dari anggaran siswa saya.
orieeel
@ nathan-w baru saja menguji landcover raster dari set data demo qgis dan tidak ada masalah panning SO saya cukup yakin masalah muncul terutama ketika lapisan-lapisan tersebut tidak ada di localhost
orieeel
mungkin masalah ini dapat diselesaikan dengan menggunakan server di localhost untuk caching? ... hanya luar biasa data wms / wfs yang sudah diunduh tidak digunakan kembali ..
orieeel
3

Ada "perbaikan" yang mudah jika Anda cukup berani untuk mengubah sumber kode QGIS:

Buka 'qgsmaptoolpan.cpp', dan ke anggota 'canvasMoveEvent' yang sesuai, tambahkan kalimat "mCanvas-> refresh ();" sebagai berikut:

void QgsMapToolPan::canvasMoveEvent( QMouseEvent * e )
{
  if (( e->buttons() & Qt::LeftButton ) )
  {
    mDragging = true;
    // move map and other canvas items
    mCanvas->panAction( e );
    mCanvas->refresh();
  }
}

(QGIS versi 1.8 Lisboa)

Ini akan memaksa penyegaran berkelanjutan pada peta saat Anda menggeser dengan mouse. Bisa jadi sedikit lebih lambat, tapi itu berfungsi dengan baik, ya, santai untuk mataku.

pengguna15765
sumber
dimana file itu ..? Saya tidak dapat menemukannya di OpenSuse 12.x Terima kasih
tomsik
Mengapa harus memodifikasi kode sumber ketika bisa menimpa metode ini?
sean