วิธีแก้ปัญหาด้วยพาเนลข้อความบันทึกใน QGIS:“ ไม่บันทึกข้อผิดพลาดคำขอเกิน 100 ข้อ”


9

ฉันใช้รหัสต่อไปนี้ใน pyqgis เพื่อตรวจจับข้อผิดพลาด / คำเตือนจาก WMS- เลเยอร์เพื่อที่จะทริกเกอร์ทาสีทันทีที่ตรวจพบข้อผิดพลาด / คำเตือน (ตามคำถามก่อนหน้า: วิธีการจับข้อผิดพลาด WMS จากแผงข้อความบันทึก ใน QGIS กับ python หรือไม่? )

แต่เห็นได้ชัดว่าผู้ให้บริการ "WMS" ดูเหมือนจะมีข้อ จำกัด ว่าจะไม่ส่งคำขอข้อผิดพลาดมากกว่า 100 รายการไปยังบันทึกข้อความซึ่งหมายถึงหลังจากข้อผิดพลาด / คำเตือนครบ 100 ครั้งแล้วฉันไม่สามารถรับสัญญาณใด ๆ ได้อีกต่อไป ยังไม่ตอบสนองอย่างถูกต้อง อย่างไรก็ตามหากฉันส่งข้อความของตัวเองไปที่แผงควบคุมดูเหมือนจะไม่มีข้อ จำกัด ใด ๆ (ดูรหัสด้านล่าง)

มีความเป็นไปได้ที่จะตรวจจับข้อผิดพลาด / คำเตือนโดยตรงจากอินสแตนซ์ที่รับผิดชอบที่นี่ (ฉันเดาว่าเป็นผู้ให้บริการ WMS) แทนที่จะใช้แผงบันทึกข้อความ หรืออาจแค่ล้าง / รีเซ็ตพาเนลข้อความบันทึกในกระบวนการที่กำลังรันอยู่หรือลบข้อ จำกัด ออกไป

ฉันใช้ QGIS 2.18.2 บน Windows 10

นี่คือรหัสหลาม:

# 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
การ จำกัด ดูเหมือนว่าจะใช้สายแบบแข็งในคลาสqgswmsproviderในรหัส C ++ การรวบรวม QGIS จากแหล่งข้อมูลเป็นตัวเลือกสำหรับคุณหรือไม่?
Steven Kay

@Steven Kay เข้าใจแล้วฉันเห็นว่ามีส่วนอ้างอิงในรหัส ... น่าเสียดายที่ฉันไม่มีประสบการณ์ในการรวบรวมจากแหล่งที่มา ทันทีที่รหัสของฉันทำงานฉันต้องติดตั้ง QGIS บนเครื่องหลายเครื่อง แต่ถ้าไม่มีตัวเลือกอื่นฉันเดาว่าฉันไม่มีทางเลือก ... ขอบคุณขอบคุณสำหรับคำแนะนำ!
Adorsch

คำตอบ:


3

ในตอนนี้ขีด จำกัด 100 ข้อได้รับการเข้ารหัสอย่างหนักในผู้ให้บริการ WMS แต่ QGIS เป็นโครงการโอเพ่นซอร์สที่ยอดเยี่ยมและคุณสามารถส่งคำขอคุณสมบัติเพื่อเปลี่ยนข้อ จำกัด นี้เป็นพารามิเตอร์ที่กำหนดค่าได้

พัฒนาใด ๆ สามารถใช้คำขอคุณลักษณะนี้และส่งคำขอใหม่เพื่อดึงQGIS หากโซลูชันได้รับการยอมรับผู้พัฒนาหลักยินดีที่จะใช้การเปลี่ยนแปลงทั้งสำหรับเวอร์ชัน 3 ที่กำลังจะมาถึงและสำหรับรุ่น 2.14.x และ 2.18.x ปัจจุบัน

ดังนั้นคำตอบของคำถามของคุณคือการส่งคำขอคุณสมบัติใหม่ไปที่ QGIS


ตกลงขอบคุณสำหรับคำแนะนำนั้น แม้ว่าฉันหวังว่าจะได้รับความคิดวิธีแก้ปัญหาบางอย่าง แต่ฉันคิดว่านี่เป็นคำตอบที่มากเท่าที่ฉันจะได้รับ ดังนั้นฉันจะต้องพิจารณารวบรวมจากแหล่งโดยการจัดการซอร์สโค้ดหรือส่งคำขอคุณสมบัติและหวังว่าอาจจะมีวิธีการแก้ไขในอนาคต ...
ADORCHCH

หากคุณเตรียมและส่งคำขอคุณสมบัติคุณกำลังช่วยเหลือผู้อื่นในอนาคตที่จะเผชิญกับข้อ จำกัด เดียวกัน คุณกำลังส่งคืนสิ่งที่มีประโยชน์กลับสู่ชุมชน แม้ว่าคุณจะสามารถแก้ไขข้อ จำกัด 100 ข้อได้ด้วยการเปลี่ยนเป็น 5,000 หรือ 10,000 แต่นักพัฒนาจะพยายามเข้าร่วมคำขอของคุณในแบบที่เหมาะสมกับทุกคนไม่ใช่แค่สำหรับคุณเท่านั้นทำให้รหัสสอดคล้องและอัปเดตเอกสาร โดยการส่งคำขอคุณสมบัติคุณมีส่วนร่วมในการปรับปรุง QGIS หลังจากยอมรับคำขอคุณลักษณะแล้วและคำขอดึงถูกรวมเข้าด้วยกันคุณสามารถติดตั้งและใช้งานบิลด์ตอนกลางคืน
jgrocha

แน่นอนฉันอยู่กับคุณที่นี่! ขอบคุณสำหรับคำแถลงของคุณชี้ให้เห็นว่าเครื่องมือโอเพนซอร์สที่ประสบความสำเร็จเช่น QGIS นั้นตั้งอยู่บนชุมชนแอคทีฟที่ทำให้มันมีความเคลื่อนไหวสูงและทุกคนสามารถมีส่วนร่วมในการพัฒนานี้ได้
Adorsch

ฉันจะเตรียมคำขอคุณลักษณะตามวิธี!
Adorsch
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.