Veri kaynağı değiştiğinde katmanları otomatik olarak güncellemeye çalışıyorum. Bir özniteliği olan bir şekil dosyası yazmak ve QGIS'deki bu özniteliğe göre renklendirmek için R kullanıyorum.
Farklı öznitelik değerlerine sahip yeni bir şekil dosyası yazmak ve Qgis eşleme renklerinin güncellenmesini istiyorum. Adım 1 bu işlemi tetikliyor, adım 2 katmanı değiştirilmiş şekil dosyasından yeniden yüklüyor. Adım 2 Burada endişeleniyorum.
triggerRepaint
Katmanda kullanılan diğer sorular / posta listesi sohbeti - işe yaramaz. Diğer öneriler arasında setCacheImage(None)
ve yine işe yaramaz. Katman sonunda güncellenir, ama gerçekten mantığı göremiyorum ve bazen hiçbir şey yapmadıktan sonra sürpriz oluyor. Ya da belki iki dakika önce bir şey yaptım.
Güncellemenin tekrarlanabilir bir yolu, katmanı açıklama menüsünden çoğaltmaktır - kopya her zaman verilerini geçerli şekil dosyasından alır ve orijinal katman da kendisini günceller! Yani bunu yapmanın bir yolu olmalı.
Ben 2.8 daha iyi çalıştığını düşünüyorum, ama bu 2.10 yani belki bir yerde yeni bir hata var.
İlgili, ama 2.10 benim için çalışmıyor:
QGIS'te kaynak değiştirilirse raster katmanları otomatik olarak nasıl yeniden yüklenir?
Denediğim diğer şeyler:
layer.dataProvider().dataChanged.emit()
- bir kez çalıştı, sonra tekrar aynı katmanda değil
Sanırım katmanı çoğaltmanın neden işe yaradığını izledim - güncellenmiş katmana dayalı yeni bir ayrılabilir katman oluşturup güncellenen katmanı çağırırsam .triggerRepaint()
, harita tuvalinde güncellenir:
QgsVectorLayer( layer.source(), "layer copy", layer.providerType() )
layer.triggerRepaint()
Farklı bir katman kaynağı kullanırsam işe yaramaz, bu nedenle aynı katman kaynağına dayalı bir katman nesnesi oluşturursanız ...
Şu anda raster katmanı (GeoTIFF'den) ile yapılan hızlı bir test ve sadece arama rlayer.triggerRepaint()
, harita tuvalindeki raster görünümünü güvenilir bir şekilde güncelliyor gibi görünüyor.
layer.setCacheImage(None)
ve layer.triggerRepaint()
?
triggerRepaint()
. v 2.10.1-Pisa