QGIS में लॉग संदेश पैनल के साथ समस्या को कैसे हल करें: "100 से अधिक अनुरोध त्रुटियों को लॉग नहीं कर रहे हैं।"


9

मैं एक WMS-लेयर से त्रुटियों / चेतावनी को पकड़ने के लिए pyqgis में निम्नलिखित कोड का उपयोग कर रहा हूं, जैसे ही एक त्रुटि / चेतावनी का पता लगाने के लिए एक पुनरावर्ती को ट्रिगर किया जाता है (पिछले प्रश्न के आधार पर: लॉग संदेश पैनल से WMS त्रुटि संदेश कैसे पकड़ा जाए अजगर के साथ QGIS में? )

लेकिन स्पष्ट रूप से "WMS" प्रदाता को लगता है कि संदेश लॉग में 100 से अधिक त्रुटि अनुरोध नहीं भेजने का प्रतिबंध है, जिसका अर्थ है कि 100 वीं त्रुटि / चेतावनी के बाद भी मैं कोई संकेत नहीं पकड़ पा रहा हूं, भले ही WMS- लेयर हो अभी भी सही ढंग से जवाब नहीं दे रहा है। फिर भी, अगर मैं लॉग पैनल में अपने संदेश भेजता हूं, तो कोई प्रतिबंध नहीं लगता है (नीचे कोड देखें)।

क्या संदेश लॉग पैनल का उपयोग करने के बजाय, उस उदाहरण से सीधे त्रुटि / चेतावनी को पकड़ने की संभावना है जो यहां जिम्मेदार है (मुझे लगता है कि यह डब्ल्यूएमएस-प्रदाता है)? या शायद चल रही प्रक्रिया में लॉग संदेश पैनल को केवल स्पष्ट / रीसेट करें या सीमा हटा दें?

मैं विंडोज 10 पर QGIS 2.18.2 का उपयोग कर रहा हूं।

यहाँ अजगर कोड है:

# 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)

यहाँ छवि विवरण दर्ज करें

अद्यतन: मैंने एक सुविधा अनुरोध प्रस्तुत किया (देखें: https://hub.qgis.org/issues/16168 )


1
C ++ कोड में qgswmsprovider वर्ग में सीमा हार्ड-वायर्ड लगती है । क्या स्रोत से QGIS का संकलन आपके लिए एक विकल्प है?
स्टीवन के

@Steven Kay आह ठीक है, मैं देख रहा हूं कि कोड में अनुभाग है ... दुर्भाग्य से मुझे स्रोत से संकलन करने का कोई अनुभव नहीं है। जैसे ही मेरा कोड चल रहा है, मुझे कई मशीनों पर QGIS स्थापित करने की आवश्यकता है। लेकिन अगर कोई अन्य विकल्प नहीं है, तो मुझे लगता है कि मेरे पास कोई विकल्प नहीं है ... वैसे भी संकेत के लिए thx!
ADorsch

जवाबों:


3

अभी, WMS प्रदाता में 100 सीमा हार्ड कोडित है। लेकिन QGIS एक अद्भुत ओपन सोर्स प्रोजेक्ट है और आप इस सीमा को एक विन्यास योग्य पैरामीटर में बदलने के लिए एक सुविधा अनुरोध प्रस्तुत कर सकते हैं ।

कोई भी डेवलपर इस सुविधा का अनुरोध ले सकता है और QGIS के लिए एक नया पुल अनुरोध सबमिट कर सकता है । यदि समाधान स्वीकार किया जाता है, तो कोर डेवलपर्स को आगामी संस्करण 3 और वर्तमान 2.14.x और 2.18.x संस्करणों के लिए दोनों परिवर्तनों को लागू करने में खुशी होगी।

तो, आपके प्रश्न का उत्तर QGIS के लिए एक नया फीचर अनुरोध है।


ठीक है कि सलाह के लिए thx यद्यपि मैं किसी प्रकार के वर्कअराउंड विचारों को प्राप्त करने की उम्मीद कर रहा था, मुझे लगता है कि यह एक उत्तर के रूप में ज्यादा है जैसा कि मुझे शायद मिलेगा। इसलिए मुझे या तो स्रोत कोड में हेरफेर करके स्रोत से संकलन पर विचार करना होगा या एक सुविधा अनुरोध सबमिट करना होगा और आशा है कि भविष्य में एक समाधान लागू हो सकता है ...
एडोर्स्च

यदि आप एक सुविधा अनुरोध तैयार करते हैं और सबमिट करते हैं, तो आप भविष्य में दूसरों की मदद कर रहे हैं जो समान सीमा का सामना करेंगे। आप समुदाय के लिए कुछ उपयोगी वापस लौटा रहे हैं। जब आप 100 सीमा को 5000 या 10000 में बदलकर ठीक कर सकते हैं, तो डेवलपर्स आपके अनुरोध को इस तरह से प्रस्तुत करने का प्रयास करेंगे, जो सभी के लिए उपयुक्त हो, न केवल आपके लिए, कोड को सुसंगत और प्रलेखन को अद्यतन रखते हुए। एक सुविधा अनुरोध सबमिट करके, आप QGIS को बेहतर बनाने में योगदान दे रहे हैं। सुविधा के अनुरोध को स्वीकार करने और पुल अनुरोध को मर्ज करने के बाद, आप रात के बिल्ड को स्थापित और उपयोग कर सकते हैं।
jgrocha

बिल्कुल, मैं यहाँ तुम्हारे साथ हूँ! आपके कथन के लिए Thx, यह इंगित करता है, कि QGIS जैसे एक सफल ओपन सोर्स टूल एक सक्रिय समुदाय पर आधारित है जो इसे इतना गतिशील बनाता है, और हर कोई इस विकास में कैसे योगदान दे सकता है।
6

मैं एक फीचर अनुरोध तैयार करूँगा!
ADorsch
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.