I post the response of Richard.

---------- Forwarded message ----------
From: Richard Duivenvoorde <rdmaili...@duif.net>
Date: 2016-09-08 14:45 GMT+02:00
Subject: Re: [Qgis-user] Wrong retrieving of wms legend
To: aperi2007 <aperi2...@gmail.com>, rich...@duif.net
Cc: qgis-user <qgis-user@lists.osgeo.org>



Hi Andrea,

note that I also added a comment at the code which is reponsible for this:

https://github.com/qgis/QGIS/commit/69bed218373b3f93671f65bc3d02c45cbf683a48#comments

Patrick's response there on this (see comment):

"
IMHO, there is nothing to fix in QGIS, here. If a layer defines no
style, it's wanted that it inherits the parent layer's style. Have a
look at chapter 7.2.4.6.5 of the WMS implementation specification:

Style declarations are inherited by child Layers. A child shall not
redefine a Style with the same Name as one
inherited from a parent. A child may define a new Style with a new Name
that is not available for the parent Layer.

This PR is just a workaround for MapServer that is defining a style
named default for both the parent and the child layers. This was making
QGIS show 2 default styles for every child layers. Style inheritance was
already there before. Now at has just a saner behavior in regard to
non-standard compliant servers.

I'll let you forward that to the user ML. I was not subscribed to it and
therefore cannot reply directly to the thread.
"

So in short: mapserver does not define a style for the actual layer, so
qgis tries to get the style (AND it's legendgraphic) from the parent
layer/node:

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

in this case mapserver's rootnode, which has a legendgraphic with all
child symbols...

so my fix would be: define a style for the child layer 'rt_ofc.10k54',
so I do not think it has something to do with the dot in the naming?

Regards,

Richard Duivenvoorde


On 03-09-16 20:42, aperi2007 wrote:
> Hi Richard,
>
>
> I tested also the QGIS 2.8 and the QGIS 2.12 no one of them has this issue.
>
>>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..
>
> Ok, now is more clear what is happened.
>
> The "rt_ofc" is the name of all the wms service.
> So apply-ing the value "rt_ofc" to the layers parameter mean ask to the
> wms server to send the response for ALL the layers available in the
> service.
>
> So the problem more probably is that qgis is failing to parse the
> layername stopping it at the dot character.
>
> The QGIS 2.8 and 2.12 don't fail to parse these wms layersname.
> So it is due to some evolution put in the last qgis.
>
> The "rt_oc" part of the layer name is also the name of all the wms service.
>
> This will cause to receive the legend of ALL the layers.
>
> A.
>
>
>
> Il 03/09/2016 20:03, Richard Duivenvoorde ha scritto:
>> 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 <rdmaili...@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
>>>>
>>>
>>>
>
> _______________________________________________
> Qgis-user mailing list
> Qgis-user@lists.osgeo.org
> List info: http://lists.osgeo.org/mailman/listinfo/qgis-user
> Unsubscribe: http://lists.osgeo.org/mailman/listinfo/qgis-user



-- 
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------
_______________________________________________
Qgis-user mailing list
Qgis-user@lists.osgeo.org
List info: http://lists.osgeo.org/mailman/listinfo/qgis-user
Unsubscribe: http://lists.osgeo.org/mailman/listinfo/qgis-user

Reply via email to