[Qgis-user] Wrong retrieving of wms legend

Richard Duivenvoorde rdmailings at duif.net
Sat Sep 3 11:03:25 PDT 2016


Ok, at first the problem seemed the dot in the layernames:

This is the GetMap request QGIS fires off:

http://www502.regione.toscana.it/wmsraster/com.rt.wms.RTmap/wms?map=wmsofc&map_resolution=91&language=ita&&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=1063072.194008157123,5185232.179659257643,1388677.251798849553,5543677.86921980232&CRS=EPSG:3857&WIDTH=518&HEIGHT=569&LAYERS=rt_ofc.10k54&STYLES=&FORMAT=image/png&DPI=96&MAP_RESOLUTION=96&FORMAT_OPTIONS=dpi:96&TRANSPARENT=TRUE

as you see: LAYERS=rt_ofc.10k54

This is the GetLegendGraphic url created by QGIS:

http://www502.regione.toscana.it/wmsraster/com.rt.wms.RTmap/wms?map=wmsofc&map_resolution=91&language=ita&version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=rt_ofc&format=image/png&STYLE=default&&TRANSPARENT=true

NOTE: layer=rt_ofc

(all seen in the debug info on QGIS on Linux (Debug)):

Which SHOULD be:

http://www502.regione.toscana.it/wmsraster/com.rt.wms.RTmap/wms?map=wmsofc&map_resolution=91&language=ita&version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=rt_ofc.10k54&format=image/png&STYLE=default&&TRANSPARENT=true

NOTE, I edited: layer=rt_ofc.10k54

Mmm, not much of an legend, but as least NOT an image of all (vector)
layer legends...

So crux is: IF a layer parameter has a dot in it's name, only the first
part is used as parameter....

BUT: what is the GetLegendGraphic url advertised by the server:

http://www502.regione.toscana.it/wmsraster/com.rt.wms.RTmap/wms?map=wmsofc&request=GetCapabilities&service=WMS

Mmm, actually no style/LegendURL advertised :-(

https://github.com/qgis/QGIS/blob/master/src/providers/wms/qgswmsprovider.cpp#L249

points to pickLegend:

https://github.com/qgis/QGIS/blob/master/src/providers/wms/qgswmsprovider.cpp#L227

which looks ok:

BUT apparently it picks the style of the PARENT-NODE of the layer: THAT
one has

<OnlineResource xlink:type="simple"
xlink:href="http://www502.regione.toscana.it/wmsraster/com.rt.wms.RTmap/wms?map=wmsofc&map_resolution=91&language=ita&version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=rt_ofc&format=image/png&STYLE=default"/>

Bingo: that is the one we are actually retrieving, the parent node's
style and legend.

So: not sure if that is desired behaviour... at least not for a legend..

I think what QGIS does is 'inheriting' default styles from parent nodes.
In this case that is plain wrong.

Copy/paste this in an QGIS issue?

Maybe for the getLegend url, the style should not be inherited?
Anybody other ideas?

Regards,

Richard Duivenvoorde


On 03-09-16 16:08, Andrea Peri wrote:
> Hi Richard.
> Effectivelly I tested your wms and using it the legend is correctly
> retrieved only for the layer choose.
> I use qgis 2.16.1.
> After I re-test my original url:
> (this)
> http://www502.regione.toscana.it/wmsraster/com.rt.wms.RTmap/wms?map=wmsofc
> 
> And again I see the qgis retrieve ALL the legend of all the layers.
> I tested other wms of our set of wms service and seem only this has
> that problem.
> 
> So I do some more proof tested.
> 
> And found where is the ISSUE.
> QGIS wrong to get the legend when the layer wms requested HAS NOT A LEGEND.
> Infact the issu happened when I ask any layer of our wms that is a
> RASTER LAYER with no legend defined.
> Instead not happened when the layer wms is of a vector dataset (where
> the legend happened).
> 
> SO If you whould test and see the issue you should use our wms service:
> http://www502.regione.toscana.it/wmsraster/com.rt.wms.RTmap/wms?map=wmsofc
> 
> and choose the layer
> rt_ofc.1954
> 
> that return the orthophoto imagery of the year 1954.
> With this layer the qgis will retrieve ALL the legends of the wms service.
> 
> Instead if you choose the layer
> rt_ofc.1954.qu
> that is a vector dataset (quadre of union)
> qgis correctly retrieve only its own legend.
> 
> Please can you confirm this ?
> 
> Thx
> 
> A.
> 
> 
> 
> 
> 2016-09-03 9:51 GMT+02:00 Richard Duivenvoorde <rdmailings at duif.net>:
>> On 31-08-16 21:10, Andrea Peri wrote:
>>> Hi,
>>> I notive that in the qgis 2.14.5 and in the qgis 2.16.1
>>> when adding a layer wms choosing from a list of layers available in
>>> the wms service connected,
>>> qgis retrieve as legend of the layer ALL the legends of all the wms
>>> layer available in the wms service.
>>> Using the 2.8 QGIS version, the legend is retrieve correctly (only the
>>> layer choosed).
>>>
>>> Someone can confirm this as an issue ?
>>
>> Hi Andrea,
>>
>> nope, I have 2.16.1 here, and for example this wms:
>>
>> https://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/ows?SERVICE=WMS&
>>
>> I can choose either provincies or landsgrenzen (provinces or country
>> borders), from that same server and both have their own legend.
>>
>> Do you have a WMS url for which this happens for you?
>>
>> What if you look at the capabilities of that service and do the
>> getLegendGrapicRequest by hand. Is it also wrong?
>>
>> Else: create a good issue, with url's screendumps etc etc
>>
>> Regards,
>>
>> Richard Duivenvoorde
>>
> 
> 
> 




More information about the Qgis-user mailing list