QGIS'deki günlük mesajları paneliyle ilgili sorunu nasıl çözersiniz: “100'den fazla istek hatası kaydedilmiyor.”?


9

Bir hata / uyarı algılanır algılanmaz (önceki soruya göre: Günlük iletileri panelinden WMS hata iletisi nasıl yakalanır) yakalamak için bir WMS katmanından hataları / uyarı yakalamak için aşağıdaki kodu pyqgis içinde ile QGIS içinde? )

Ancak "WMS" sağlayıcısı, ileti günlüğüne 100'den fazla hata isteği göndermeme konusunda bir kısıtlamaya sahip gibi görünüyor. hala doğru yanıt vermiyor. Bununla birlikte, günlük paneline kendi mesajlarını gönderirsem herhangi bir kısıtlama görünmemektedir (aşağıdaki koda bakınız).

Hata / uyarıyı, ileti günlüğü panelini kullanmak yerine, burada sorumlu olan örnekten (sanırım WMS sağlayıcısı) yakalamak için bir olasılık var mı? Ya da sadece çalışan bir işlemde günlük mesajları panelini silebilir / sıfırlayabilir veya sınırlamayı kaldırabilir misiniz?

Windows 10'da QGIS 2.18.2 kullanıyorum.

İşte python kodu:

# coding=utf-8

from qgis.core import *

wmsLayer_name="wms-dtk50_wgs"
url_with_params ='url=http://sg.geodatenzentrum.de/wms_dtk50?&crs=EPSG:25832&featureCount=10&format=image/png&layers=DTK50&styles='

wmsLayer = QgsRasterLayer(url_with_params, wmsLayer_name,'wms')
QgsMapLayerRegistry.instance().addMapLayer(wmsLayer)

def errorCatcher( msg, tag, level ):
    if tag == 'WMS' and level != 0:     #Warnings or Errors (0: Info, 1:Warning, 2:Error)
        print "WMS error detected!"
        myWMSLayer = QgsMapLayerRegistry.instance().mapLayersByName("wms-dtk50_wgs")[0]
        myWMSLayer.triggerRepaint()

# connect with messageReceived SIGNAL from QgsMessageLog to an errorCatcher custom function
# instantly reacts if error/warning occurs
QgsMessageLog.instance().messageReceived.connect( errorCatcher )

#after 100 times triggering a "wmsLayer.triggerRepaint()", 
# I get following warning in log messages panel "WMS":
# "2017-01-17T07:17:52  1   Not logging more than 100 request errors."

#this does not raise any issues and prints all 500 test messages in the log panel:
for i in range(500):
    QgsMessageLog.instance().logMessage("Message #{}".format(i),"Test",2)

resim açıklamasını buraya girin

GÜNCELLEME: Bir özellik isteği gönderdim (bkz: https://hub.qgis.org/issues/16168 )


1
Sınır , C ++ kodundaki qgswmsprovider sınıfında sabit kablolanmış gibi görünüyor . QGIS'i kaynaktan derlemek sizin için bir seçenek midir?
Steven Kay

@Steven Kay ah ok Anlıyorum, kodda ilgili bölüm var ... Ne yazık ki kaynaktan derleme konusunda deneyimim yok. Kodum çalışır çalışmaz QGIS'i birkaç makineye kurmam gerekiyor. ama başka bir seçenek yoksa sanırım başka seçeneğim yok ... yine de ipucu için thx!
ADorsch

Yanıtlar:


3

Şu anda, 100 sınırı WMS sağlayıcısında sabit olarak kodlanmıştır. Ancak QGIS harika bir açık kaynak projesidir ve bu sınırı yapılandırılabilir bir parametreye dönüştürmek için bir özellik isteği gönderebilirsiniz .

Herhangi bir geliştirici bu özellik isteğini alabilir ve QGIS'e yeni bir çekme isteği gönderebilir . Çözüm kabul edilirse, çekirdek geliştiriciler değişiklikleri hem gelecek sürüm 3 hem de mevcut 2.14.x ve 2.18.x sürümleri için uygulamaktan memnuniyet duyacaklardır.

Bu nedenle, sorunuzun cevabı QGIS'e sunulan yeni bir özellik isteği.


Tamam bu tavsiye için teşekkürler. Bir çeşit geçici çözüm fikri almayı umuyordum, sanırım bu muhtemelen alacağım kadar çok bir cevap. Bu yüzden ya kaynak kodunu manipüle ederek kaynaktan derlemeyi düşünmek ya da bir özellik isteği göndermek ve gelecekte uygulanacak bir çözüm olabileceğini
ummak zorundayım

Bir özellik isteği hazırlar ve gönderirseniz, gelecekte aynı sınırlama ile karşılaşacak başkalarına yardım edersiniz. Yararlı bir şeyi topluluğa geri gönderiyorsun. 100 sınırlamasını 5000 veya 10000 olarak değiştirerek düzeltebilirsiniz, ancak geliştiriciler isteğinizi yalnızca sizin için değil, kodun tutarlı ve belgelerin güncellenmesi için herkes için uygun bir şekilde katılmaya çalışacaktır. Bir özellik isteği göndererek QGIS'in geliştirilmesine katkıda bulunuyorsunuz. Özellik isteği kabul edildikten ve çekme isteği birleştirildikten sonra, gece yapılarını yükleyebilir ve kullanabilirsiniz.
jgrocha

Kesinlikle burada seninleyim! QGIS gibi başarılı bir açık kaynak aracının, onu bu kadar dinamik kılan ve herkesin bu gelişime nasıl katkıda bulunabileceği konusunda aktif bir topluluğa dayandığını belirten ifadeniz için teşekkürler.
ADorsch

Bu arada bir özellik isteği hazırlayacağım!
ADorsch
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.