Hi Andreas,
Another problem you may hit - the link below is hitting it being ~2300
chars - URL's (and thus GET requests) cannot reliably be more than about
2000 characters long. At that point you need to shift over to POST
requests (and I think GetMap is GET only...).
https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers
Cheers,
Jonathan
On 2019-04-09 16:07, Andreas Neumann wrote:
Hi Paul
Thanks - now I know that I have to use SLD_BODY for the case where the
SLD is in the URL.
Another QGIS-Server specific question:
Can I count on it that the SLD output by QGIS server with the GetStyles
request can also be consumed again by QGIS server? What about complex
styles (e.g. something with a style that can't easily be represented by
SLD). If I first consume the styles from QGIS server, then filter and
send back, would the complex styles potentially be lost/destroyed?
Again: our intent here is merely to filter categories, not to change the
styles.
Thanks,
Andreas
On 2019-04-09 16:28, pblottiere wrote:
Hi Andreas,
Can you point me to an example how to create a valid GetMap request
with an SLD submitted?
There's a basic example in unit tests:
https://github.com/qgis/QGIS/blob/master/tests/src/python/test_qgsserver_wms_getmap.py#L1309-L1325
Regards,
Paul
On 4/9/19 4:14 PM, Andreas Neumann wrote:
Hi,
I did some test:
Here is a long URL with the SLD (originally sent by QGIS server,
stripped away some RULES manually) and sending it back in a GetMap
request:
https://services.geo.zg.ch/ows-oereb/Grundwasserschutz?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=2682932,1225299,2684213,1226054&CRS=EPSG:2056&WIDTH=1615&HEIGHT=952&LAYERS=ch.zg.grundwasserschutz.gwszonen&STYLES=&FORMAT=image/png&DPI=96&MAP_RESOLUTION=96&FORMAT_OPTIONS=dpi:96&TRANSPARENT=TRUE&SLD=%3CStyledLayerDescriptor+xmlns%3D%22http%3A%2F%2Fwww.opengis.net%2Fsld%22+xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22+xmlns%3Axsi%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance%22+xsi%3AschemaLocation%3D%22http%3A%2F%2Fwww.opengis.net%2Fsld+http%3A%2F%2Fschemas.opengis.net%2Fsld%2F1.1.0%2FStyledLayerDescriptor.xsd%22+xmlns%3Ase%3D%22http%3A%2F%2Fwww.opengis.net%2Fse%22+version%3D%221.1.0%22+xmlns%3Aogc%3D%22http%3A%2F%2Fwww.opengis.net%2Fogc%22%3E%0D%0A+%3CNamedLayer%3E%0D%0A++%3Cse%3AName%3Ech.zg.grundwasserschutz.gwszonen%3C%2Fse%3AName%3E%0D%0A++%3CUserStyle%3E%0D%0A+++%3Cse%3AName%3Edefault%3C%2Fse%3AName%3E%0D%0A+++%3Cse%3AFeatureTypeStyle%3E%0D%0A++++%3Cs
e%3ARule%3E%0D%0A+++++%3Cse%3AName%3EGrundwasserschutzzone+S1%3C%2Fse%3AName%3E%0D%0A+++++%3Cse%3ADescription%3E%0D%0A++++++%3Cse%3ATitle%3EGrundwasserschutzzone+S1%3C%2Fse%3ATitle%3E%0D%0A+++++%3C%2Fse%3ADescription%3E%0D%0A+++++%3Cogc%3AFilter+xmlns%3Aogc%3D%22http%3A%2F%2Fwww.opengis.net%2Fogc%22%3E%0D%0A++++++%3Cogc%3APropertyIsEqualTo%3E%0D%0A+++++++%3Cogc%3APropertyName%3Etyp_code%3C%2Fogc%3APropertyName%3E%0D%0A+++++++%3Cogc%3ALiteral%3ES1%3C%2Fogc%3ALiteral%3E%0D%0A++++++%3C%2Fogc%3APropertyIsEqualTo%3E%0D%0A+++++%3C%2Fogc%3AFilter%3E%0D%0A+++++%3Cse%3APolygonSymbolizer%3E%0D%0A++++++%3Cse%3AFill%3E%0D%0A+++++++%3Cse%3ASvgParameter+name%3D%22fill%22%3E%23003bb3%3C%2Fse%3ASvgParameter%3E%0D%0A++++++%3C%2Fse%3AFill%3E%0D%0A++++++%3Cse%3AStroke%3E%0D%0A+++++++%3Cse%3ASvgParameter+name%3D%22stroke%22%3E%23000080%3C%2Fse%3ASvgParameter%3E%0D%0A+++++++%3Cse%3ASvgParameter+name%3D%22stroke-width%22%3E1%3C%2Fse%3ASvgParameter%3E%0D%0A+++++++%3Cse%3ASvgParameter+name%3D%22stroke-linej
oin%22%3Ebevel%3C%2Fse%3ASvgParameter%3E%0D%0A++++++%3C%2Fse%3AStroke%3E%0D%0A+++++%3C%2Fse%3APolygonSymbolizer%3E%0D%0A++++%3C%2Fse%3ARule%3E%0D%0A+++%3C%2Fse%3AFeatureTypeStyle%3E%0D%0A++%3C%2FUserStyle%3E%0D%0A+%3C%2FNamedLayer%3E%0D%0A%3C%2FStyledLayerDescriptor%3E
The response is:
<ServiceExceptionReport xmlns="http://www.opengis.net/ogc"
version="1.3.0">
<ServiceException code="Invalid Parameter"> SLD
('<StyledLayerDescriptor xmlns="http://www.opengis.net/sld" [1]
xmlns:xlink="http://www.w3.org/1999/xlink" [2]
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" [3]
xsi:schemaLocation="http://www.opengis.net/sld
http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd" [4]
xmlns:se="http://www.opengis.net/se" [5] version="1.1.0"
xmlns:ogc="http://www.opengis.net/ogc" [6]> <NamedLayer>
<se:Name>ch.zg.grundwasserschutz.gwszonen</se:Name> <UserStyle>
<se:Name>default</se:Name> <se:FeatureTypeStyle> <se:Rule>
<se:Name>Grundwasserschutzzone S1</se:Name> <se:Description>
<se:Title>Grundwasserschutzzone S1</se:Title> </se:Description>
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc" [6]>
<ogc:PropertyIsEqualTo> <ogc:PropertyName>typ_code</ogc:PropertyName>
<ogc:Literal>S1</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter>
<se:PolygonSymbolizer> <se:Fill> <se:SvgParameter
name="fill">#003bb3</se:SvgParameter> </se:Fill> <se:Stroke>
<se:SvgParameter
name="stroke">#000080</se:SvgParameter> <se:SvgParameter
name="stroke-width">1</se:SvgParameter> <se:SvgParameter
name="stroke-linejoin">bevel</se:SvgParameter> </se:Stroke>
</se:PolygonSymbolizer> </se:Rule> </se:FeatureTypeStyle> </UserStyle>
</NamedLayer> </StyledLayerDescriptor>') cannot be converted into QString
</ServiceException> </ServiceExceptionReport>
So apparently the SLD cannot be converted to a QString. Is my
encoding in the URL above wrong or am I missing a required additional
parameter?
Can you point me to an example how to create a valid GetMap request
with an SLD submitted?
Thanks a lot, Andreas
On 2019-04-09 15:38, Andreas Neumann wrote:
Hi,
Does QGIS-Server support SLD styles to filter away RULEs in a GetMap
Request?
I would assume, yes, but in what encoding would I submit such an SLD
in a GET request? I know that one should rather use POST reqests for
such long parameters, but for experimenting, it would be ok to use GET.
The idea would be to allow users to enable/disable categories within
a given layer.
The WMS client would first request the available rules with a
GetStyles command (that part works fine) and would then filter the
RULE (strip away the unwanted RULEs) and resubmit the GetMap with an
SLD. Does that work with QGIS server?
I know that one can also use the FILTER parameter, but we want to do
it in an OGC compatible way, since the client being developed should
work with any OGC compatible WMS server.
Thanks for your reply,
Andreas _______________________________________________
QGIS-Developer mailing list
QGIS-Developer@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
_______________________________________________
QGIS-Developer mailing list
QGIS-Developer@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
_______________________________________________
QGIS-Developer mailing list
QGIS-Developer@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Links:
------
[1] http://www.opengis.net/sld
[2] http://www.w3.org/1999/xlink
[3] http://www.w3.org/2001/XMLSchema-instance
[4]
http://www.opengis.net/sldhttp://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd
[5] http://www.opengis.net/se
[6] http://www.opengis.net/ogc
_______________________________________________
QGIS-Developer mailing list
QGIS-Developer@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
_______________________________________________
QGIS-Developer mailing list
QGIS-Developer@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer