Як вирішити проблему з панеллю повідомлень журналу в QGIS: "Не входить більше 100 помилок запиту".


9

Я використовую наступний код у pyqgis для лову помилок / попередження з WMS-рівня, щоб викликати перефарбування, як тільки виявлено помилку / попередження (на основі попереднього питання: Як зловити повідомлення про помилку WMS з панелі повідомлень журналу в QGIS з python? )

Але очевидно, що постачальник "WMS", схоже, має обмеження не надсилати більше 100 запитів про помилки в журнал повідомлень, тобто після 100-ї помилки / попередження я більше не в змозі вловлювати жоден сигнал, навіть якщо рівень WMS є все ще не відповідає правильно. Тим не менш, якщо я надсилаю власні повідомлення на панель журналів, можливо, це не буде обмеженням (див. Код нижче).

Чи є можливість зрозуміти помилку / попередження безпосередньо від відповідального примірника (я думаю, що це WMS-провайдер) замість того, щоб використовувати панель журналу повідомлень? Чи, можливо, просто очистити / скинути панель повідомлень журналу під час запущеного процесу або зняти обмеження?

Я використовую QGIS 2.18.2 в Windows 10.

Ось код python:

# 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/isissue/16168 )


1
Здається, що в C ++-коді обмеження є провідним для класу qgswmsprovider . Чи компіляція QGIS з джерела є для вас варіантом?
Стівен Кей

@Steven Kay ах добре, я бачу, в коді є розділ згідно ... На жаль, у мене немає досвіду збирання з джерела. Як тільки мій код працює, мені потрібно встановити QGIS на декількох машинах. але якщо немає іншого варіанту, я думаю, у мене немає вибору ... все одно THX для підказки!
ADorsch

Відповіді:


3

Наразі обмеження 100 жорстко кодується у постачальника послуг WMS. Але QGIS - чудовий проект з відкритим кодом, і ви можете надіслати запит на функцію, щоб перетворити цю межу в налаштований параметр.

Будь-який розробник може прийняти цей запит на функцію та подати новий запит на тягу до QGIS . Якщо рішення буде прийнято, розробники основних програм із задоволенням застосують зміни як для майбутньої версії 3, так і для поточної версії 2.14.x та 2.18.x.

Отже, відповідь на ваше запитання - подання нового запиту на функцію QGIS.


Гаразд за цю пораду. Хоча я сподівався отримати якісь ідеї для вирішення, я думаю, що це стільки ж відповіді, скільки я, мабуть, отримаю. Тому мені доведеться або розглянути можливість компіляції з джерела, маніпулюючи вихідним кодом, або надіслати запит на функцію та сподіватися, що можливо, в майбутньому
знайдеться

Якщо ви готуєте та подаєте запит на функцію, ви надалі допомагаєте іншим, хто зіткнеться з тим же обмеженням. Ви повертаєте щось спільне в громаду. Хоча ви можете виправити обмеження 100, змінивши його на 5000 або 10000, розробники намагатимуться відвідувати ваш запит таким чином, який підходить для всіх, а не лише для вас, зберігаючи код узгодженим та оновленою документацією. Надіславши запит на функцію, ви сприяєте покращенню QGIS. Після того, як запит на функцію буде прийнято, а запит на вилучення об'єднано, ви можете встановити та використовувати нічні версії.
jgrocha

Я абсолютно з вами тут! Думаю, у вашій заяві, вказуючи, що такий успішний інструмент з відкритим кодом, як QGIS, заснований на активному співтоваристві, що робить його таким надзвичайно динамічним, і як усі можуть сприяти цьому розвитку.
ADorsch

Я до речі підготую запит на функцію!
ADorsch
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.