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

Reply via email to