QGIS의 로그 메시지 패널 문제를 해결하는 방법 :“100 개 이상의 요청 오류를 기록하지 않습니다.”


9

pyqgis에서 다음 코드를 사용하여 오류 / 경고가 감지되는 즉시 다시 그리기를 트리거하기 위해 WMS 계층에서 오류 / 경고를 포착하고 있습니다 (이전 질문 : 로그 메시지 패널에서 WMS 오류 메시지를 잡는 방법) 파이썬으로 QGIS에서? )

그러나 분명히 "WMS"제공 업체는 메시지 로그에 100 개 이상의 오류 요청을 보내지 않는 제한이있는 것 같습니다. 즉, 100 번째 오류 / 경고 후에는 WMS 계층이 더 이상 신호를 포착 할 수 없습니다. 여전히 올바르게 응답하지 않습니다. 그럼에도 불구하고 로그 패널에 자체 메시지를 보내면 아무런 제한이없는 것 같습니다 (아래 코드 참조).

메시지 로그 패널을 사용하는 대신 여기에서 담당하는 인스턴스 (WMS 제공 업체 인 것 같습니다)에서 직접 오류 / 경고를 포착 할 가능성이 있습니까? 아니면 실행중인 프로세스에서 로그 메시지 패널을 지우거나 재설정하거나 제한을 제거합니까?

Windows 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

@Steven Kay ah ok 코드에 해당 섹션이 있습니다 ... 불행히도 소스에서 컴파일 한 경험이 없습니다. 코드가 실행 되 자마자 여러 컴퓨터에 QGIS를 설치해야합니다. 그러나 다른 옵션이 없다면 나는 선택의 여지가 없다고 생각합니다 ... 어쨌든 힌트를 위해 thx!
— ADorsch

답변:


3

현재 100 개의 제한이 WMS 공급자에 하드 코딩되어 있습니다. 그러나 QGIS는 훌륭한 오픈 소스 프로젝트이며이 제한을 구성 가능한 매개 변수로 바꾸는 기능 요청 을 제출할 수 있습니다 .

모든 개발자는이 기능 요청을 받아 새로운 풀 요청을 QGIS에 제출할 수 있습니다 . 솔루션이 승인되면 핵심 개발자는 향후 버전 3과 현재 2.14.x 및 2.18.x 버전 모두에 변경 사항을 적용 할 수 있습니다.

따라서 귀하의 질문에 대한 답변은 QGIS에 새로운 기능 요청 제출입니다.


그 조언을 위해 thx를 확인하십시오. 나는 일종의 해결 방법 아이디어를 원했지만 이것이 아마도 내가 얻을 수있는 것만 큼 많은 대답이라고 생각합니다. 따라서 소스 코드를 조작하여 소스에서 컴파일하거나 기능 요청을 제출하고 향후에 솔루션이 구현 될 수 있기를 희망해야합니다.
— ADorsch

기능 요청을 준비하고 제출하면 나중에 동일한 제한에 직면 할 다른 사람들을 돕고 있습니다. 유용한 정보를 다시 커뮤니티에 반환하고 있습니다. 100 제한을 5000 또는 10000으로 변경하여 100 제한을 해결할 수는 있지만 개발자는 코드 일관성 및 문서를 업데이트 된 상태로 유지하면서 사용자뿐만 아니라 모든 사람에게 적합한 방식으로 요청에 참여하려고합니다. 기능 요청을 제출하면 QGIS 개선에 기여하게됩니다. 기능 요청이 승인되고 풀 요청이 병합 된 후 야간 빌드를 설치하고 사용할 수 있습니다.
— jgrocha

물론, 나는 당신과 함께 있습니다! QGIS와 같은 성공적인 오픈 소스 도구는 활발한 커뮤니티를 기반으로하며, 매우 역동적이고 모든 사람이이 개발에 기여할 수있는 방법을 제시합니다.
— ADorsch

그런데 기능 요청을 준비하겠습니다!
— ADorsch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.