I post the response of Richard.
---------- Forwarded message ---------- From: Richard Duivenvoorde <[email protected]> Date: 2016-09-08 14:45 GMT+02:00 Subject: Re: [Qgis-user] Wrong retrieving of wms legend To: aperi2007 <[email protected]>, [email protected] Cc: qgis-user <[email protected]> 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 <[email protected]>: >>>> 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 > [email protected] > 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 [email protected] List info: http://lists.osgeo.org/mailman/listinfo/qgis-user Unsubscribe: http://lists.osgeo.org/mailman/listinfo/qgis-user
