[mapserver-users] Fwd: [Qgis-user] Wrong retrieving of wms legend
Andrea Peri
aperi2007 at gmail.com
Fri Sep 16 07:54:42 PDT 2016
The question s about the legend retrieved from qgis using a
getlegendgraphic request when add a wms to a canvas.
The trouble is issuing when the ortophoto is grouped using a
"wms_layer_group" setting and has no any style defined in it.
As example, you can you try to connect to our mapserver wms of
ortophotos using the last qgis 2.16 or 2.14.5 ?
This is the url:
http://www502.regione.toscana.it/wmsraster/com.rt.wms.RTmap/wms?map=wmsofc
and the layer to choose is the "rt_ofc.10k88"
As you can see the qgis will retrieve ALL the legends of ALL the
vector layers available in the same wms service.
I don't understand if the wrong response is from mapserver or from
qgis that wrongly require the legend to the parent layer, rretrieving
so all the legends from all the layers availables.
A.
And add to a empty canvas the
2016-09-16 16:35 GMT+02:00 Lime, Steve D (MNIT) <Steve.Lime at state.mn.us>:
> Hi Andrea: I guess I'm not sure exactly what you're asking. With latest/greatest QGIS raster WMS layers (e.g. aerial photos) show up fine in the QGIS legend if I have a KEYIMAGE set in the layer object. --Steve
>
> -----Original Message-----
> From: mapserver-users [mailto:mapserver-users-bounces at lists.osgeo.org] On Behalf Of Andrea Peri
> Sent: Thursday, September 08, 2016 8:11 AM
> To: mapserver-users at lists.osgeo.org
> Subject: [mapserver-users] Fwd: [Qgis-user] Wrong retrieving of wms legend
>
> Hi post here a response from the qgis-user list about a question on
> the GetLegendGraphics.
> With the last version of qgis, when try to add in qgis a layer wms of
> kind RASTER the qgis retrieve the legend OF ALL the layer available in
> the service.
> I guess this was a bug. But instead as the qgis guys response me seem
> to be a right action.
> The question seem that a layer wms should aALWAYS return a style. So
> the question I guess is more interesting for the mapserver list:
> A WMS LAYER of kind IMAGE (a catalogue of ortophoto as example) should
> always have a style ?
>
> (sorry for long thread repost, but I guess is better to post all the
> discussion to help understand)
>
> Thx,
>
> Andrea.
>
>
> 2016-09-08 14:45 GMT+02:00 Richard Duivenvoorde <rdmailings at duif.net>:
>>
>> 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 <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
>>>>>>
>>>>>
>>>>>
>>>
>>> _______________________________________________
>>> Qgis-user mailing list
>>> Qgis-user at 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 àèìòù
> -----------------
> _______________________________________________
> mapserver-users mailing list
> mapserver-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapserver-users
--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------
More information about the MapServer-users
mailing list