[Qgis-developer] FOSS4G code sprint idea: improving SLD export and GeoServer compatibility

Andrea Aime andrea.aime at geo-solutions.it
Thu Sep 1 12:41:07 PDT 2016


Hi Anita,
sorry for the late reply, busy times, and I knew the response would be long.

The update is ... complicated :-)
So, around the sprint a few issues were fixed and have code merged in
master (QGis 3.x):

   - Export of ogc:Filter in places where an expression is required, used
   to happen for any non zero rotation and any non fully opaque alpha, making
   the SLD invalid/unreadable. Pull request here, merged on master:
   https://github.com/qgis/QGIS/pull/3366
   - The styling works by default in "on screen mm", but SLD does not have
   such notion (has on screen pixel, on ground meter, on ground feet), and
   QGis did not rescale the values, making for very thin lines and tiny
   symbols. Fixed in this pull request, merged on master:
   https://github.com/qgis/QGIS/pull/3414
   - Scale based visibility declared at the layer level was not exported in
   SLD, making for layers that would show up at all zoom levels. Pull request
   here, merged as well: https://github.com/qgis/QGIS/pull/3436
   - GeoServer/GeoTools could not handle the way font based marks were
   exported. The syntax was actually valid, so I decided to build support for
   QGis own convention in GeoTools. This is the only bit already available in
   all supported GT/GS branches (develop, stable, maintenance):
   https://osgeo-org.atlassian.net/browse/GEOT-5496
   - QGis exports as "well known mark" names values that are not actually
   "well known", this one in being solved in GeoTools/GeoServer by adding
   support for the same names. Pull request pending, still haven't had the
   time to check it out: https://github.com/geotools/geotools/pull/1288
   - Labels are not exported at all as TextSymbolizer, during the
   spring Raymond Nijssen started working on that, he's got a promising work
   in progress, not yet turned into a pull request

Kudos to the QGis developers that helped me with discussion, suggestions,
and pull request reviews :-)

Yet, there is still quite a lot of work to be done. Off the top of my head:

   - Backporting some/all of the above to QGis 2.16 and maybe 2.14
   - QGis has a nice support for "parametric" SVG based on a draft SVG
   extension that never became "official", basically, it allows to have SVG
   with parameters for stroke color, width and opacity, fill color and
   opacity. GeoTools does not recognize such extension and always renders SVG
   symbols full black. I intend to add this support to GT/GS, see
   http://osgeo-org.1560.x6.nabble.com/Adding-support-for-parametric-SVGs-td5282722.html
   , and then enrich the QGis export to add said params in the SLD. Mind,
   right now the export QGis is doing is also invalid, it's adding tags trying
   to support the stroke related params that are not part of the SLD standard.
   I hope to be able to build this on the GeoTools side before September 18th,
   the feature freeze date for the next GT/GS release, but no promises.
   - Alignment (top/bottom/left/right) is well supported in SLD, but the
   current QGis exported does not write the appropriate tags. Should not be
   too hard to fix, but there might be several places in the code to change.
   - There is no support to export symbology where values are gathered from
   a property, or an expression based on properties. SLD supports this from
   day 0, but the SLD export code has no ability to support that. It would be
   nice to have basic support for property names, arithmetic, maybe some
   mapping between QGis own functions and GT/GS functions usable in SLD (full
   list here, can be easily extended:
   http://docs.geoserver.org/stable/en/user/filter/function_reference.html
   ). This would be a massive undertaking, I'm afraid it won't be feasible
   without funding, but we'll see (note, all the work I did so far was
   unfunded).
   - There is no support for exporting raster symbology, colormaps,
   contrast stretch and the like. GeoServer also does not understand SLD 1.1
   raster symbology (it's quite different from the SLD 1.0 one), so work will
   have to be done on both sides. Seems another large undertaking.
   - x/y translation/offset for lines and polygons is not implemented in
   GeoServer (only for points and labels instead), that would require some
   work, but not too much
   - Compositing/blending is supported in GeoServer as a SLD extension,
   could be thus exported (cannot promise all single compositing/blending
   modes are a match on the two sides)
   - Pseudo 3D buildings are supported as an extension in GeoServer SLD, so
   this kind of layer is probably exportable. Might need some work on the
   GeoServer side to render the same way as QGis though (as far as I know QGis
   is doing some sorting). Example style for GeoServer and map here:
   https://github.com/charleyglynn/Extruded-buildings-SLD
   - z-stacked symbols like "highway" roads (paint all roads orange thick,
   go back, paint all roads white thin) are supported on both sides, but the
   export does not support it, and some change in the overall export logic
   would be required to actually support it, as SLD requires multiple
   FeatureTypeStyle elements, one per z level, to be generated in order to get
   the same effect. Right one there is just one FTS with many rules and
   symbolizers in it.
   - Geometry generators can probably be partially translated as "geometry
   transformations" in SLD, except in our case they do work in real world
   coordinates, not on screen:
   http://docs.geoserver.org/stable/en/user/styling/sld-extensions/geometry-transformations.html
   - Some types of symbology like shapeburst and inverted polygons are
   simply not available in SLD, nor in GeoServer own extensions, so one would
   have to first implement those in GeoServer, create appropriate SLD
   extensions, and then have QGis implement them in the output

I'm probably forgetting something, and likely unaware of other QGis mapping
capabilities I did not mention above :-)

In any case, my target for the sprint was to show that exporting _basic_
styling is feasible, and does not require months of work. To some extent
that was achieved (especially when we get the text symbolizer support).
Hopefully it will make more people interested, maybe some devs will pitch
in, and some sponsoring organizations can fill in the blanks.... an open
source developer can dream, right? :-p

Cheers
Andrea


On Tue, Aug 30, 2016 at 8:42 PM, Anita Graser <anitagraser at gmx.at> wrote:

> Hi everyone!
>
> Hope you made it back home safe after Bonn. Could you give a short update
> on this topic, what was discussed / decided / worked on in Bonn?
>
> Thank you and best wishes,
> Anita
>
>
>
>
> On Sat, Jul 9, 2016 at 10:56 AM, Andrea Aime <andrea.aime at geo-solutions.it
> > wrote:
>
>> On Tue, Jun 28, 2016 at 7:42 PM, Andrea Aime <
>> andrea.aime at geo-solutions.it> wrote:
>>
>>> I'll be at the code sprint after the conference, Saturday and Sunday.
>>>
>>
>> Change of plans, I'll be there the Sunday before the conference, and due
>> to flight
>> arrangements, also most of Saturday (in case anyone's interested we can
>> find
>> a place to start hacking)
>>
>> Cheers
>> Andrea
>>
>>
>> --
>> ==
>> GeoServer Professional Services from the experts! Visit
>> http://goo.gl/it488V for more information.
>> ==
>>
>> Ing. Andrea Aime
>> @geowolf
>> Technical Lead
>>
>> GeoSolutions S.A.S.
>> Via di Montramito 3/A
>> 55054  Massarosa (LU)
>> phone: +39 0584 962313
>> fax: +39 0584 1660272
>> mob: +39  339 8844549
>>
>> http://www.geo-solutions.it
>> http://twitter.com/geosolutions_it
>>
>> *AVVERTENZE AI SENSI DEL D.Lgs. 196/2003*
>>
>> Le informazioni contenute in questo messaggio di posta elettronica e/o
>> nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il
>> loro utilizzo è consentito esclusivamente al destinatario del messaggio,
>> per le finalità indicate nel messaggio stesso. Qualora riceviate questo
>> messaggio senza esserne il destinatario, Vi preghiamo cortesemente di
>> darcene notizia via e-mail e di procedere alla distruzione del messaggio
>> stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso,
>> divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od
>> utilizzarlo per finalità diverse, costituisce comportamento contrario ai
>> principi dettati dal D.Lgs. 196/2003.
>>
>>
>>
>> The information in this message and/or attachments, is intended solely
>> for the attention and use of the named addressee(s) and may be confidential
>> or proprietary in nature or covered by the provisions of privacy act
>> (Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection
>> Code).Any use not in accord with its purpose, any disclosure, reproduction,
>> copying, distribution, or either dissemination, either whole or partial, is
>> strictly forbidden except previous formal approval of the named
>> addressee(s). If you are not the intended recipient, please contact
>> immediately the sender by telephone, fax or e-mail and delete the
>> information in this message that has been received in error. The sender
>> does not give any warranty or accept liability as the content, accuracy or
>> completeness of sent messages and accepts no responsibility  for changes
>> made after they were sent or for other risks which arise as a result of
>> e-mail transmission, viruses, etc.
>>
>> -------------------------------------------------------
>>
>> _______________________________________________
>> Qgis-developer mailing list
>> Qgis-developer at lists.osgeo.org
>> List info: http://lists.osgeo.org/mailman/listinfo/qgis-developer
>> Unsubscribe: http://lists.osgeo.org/mailman/listinfo/qgis-developer
>>
>
>


-- 
==
GeoServer Professional Services from the experts! Visit
http://goo.gl/it488V for more information.
==

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via di Montramito 3/A
55054  Massarosa (LU)
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39  339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

*AVVERTENZE AI SENSI DEL D.Lgs. 196/2003*

Le informazioni contenute in questo messaggio di posta elettronica e/o
nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il
loro utilizzo è consentito esclusivamente al destinatario del messaggio,
per le finalità indicate nel messaggio stesso. Qualora riceviate questo
messaggio senza esserne il destinatario, Vi preghiamo cortesemente di
darcene notizia via e-mail e di procedere alla distruzione del messaggio
stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso,
divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od
utilizzarlo per finalità diverse, costituisce comportamento contrario ai
principi dettati dal D.Lgs. 196/2003.



The information in this message and/or attachments, is intended solely for
the attention and use of the named addressee(s) and may be confidential or
proprietary in nature or covered by the provisions of privacy act
(Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection
Code).Any use not in accord with its purpose, any disclosure, reproduction,
copying, distribution, or either dissemination, either whole or partial, is
strictly forbidden except previous formal approval of the named
addressee(s). If you are not the intended recipient, please contact
immediately the sender by telephone, fax or e-mail and delete the
information in this message that has been received in error. The sender
does not give any warranty or accept liability as the content, accuracy or
completeness of sent messages and accepts no responsibility  for changes
made after they were sent or for other risks which arise as a result of
e-mail transmission, viruses, etc.

-------------------------------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20160901/1a670650/attachment-0001.html>


More information about the Qgis-developer mailing list