Hey Andrea,

that looks great.

Here's an idea, instead of two vendor options, use a single one with enum
values, like in:

<VendorOption name="inclusion">normal|legend_only|map_only</VendorOption>

with "normal" being the default -included both for legend and map
rendering- (call it "default" or "both").



On Wed, 24 Mar 2021 at 07:16, Andrea Aime <andrea.a...@geo-solutions.it>
wrote:

> Hi,
> I'm writing this mail to discuss an option to improve styles usage in map
> rendering and legend generation.
> Since it involves changes in both GeoTools and GeoServer, I'm cross
> posting the two devel lists (sorry!).
>
> It all starts with being able to control the appearance of a legend in
> GeoServer, while retaining dynamic
> abilities that a static image legend does not offer, in particular:
>
>    - A static legend cannot be configured for layer groups
>    - A static legend cannot be content dependent, that is, based on the
>    current bounding box contents (match counting and rule elimination)
>    - A static legend does not offer any support for multi-linguism
>    (multiple legends would have to be created and associated by language)
>    - A style can be used to generate a JSON representation of a legend,
>    to be rendered client side.
>
> Now, some systems, like CARTO, offer a separate language to setup legends:
> https://carto.com/help/tutorials/builder-legends-overview/
>
> Without having to get there, a simpler approach would be to mark feature
> type styles and rules in a style, as targets
> for map rendering or map generation:
>
>    - Some bits of the SLD can be shared among map rendering and legend
>    generation (the common case, no new vendor options for it, it's what we are
>    already doing)
>    - Some bits should be used for map rendering, but turned off for
>    legend generation, as they only cause visual noise in the legend (symbol
>    too small, too big, road casing via FTS generating separate legend entries
>    while visually the symbol is one)
>    - Some bits should be used for legend generation, as they provide
>    better symbol in the context of a legend (e.g. a single fixed width circle,
>    or multiple rules with examples using different circle sizes), but not be
>    used in the map generation (where the width is picked by an attribute value
>    on the fly)
>
> To handle the last two cases, two new vendor options would be added to
> feature type style, rule and symbolizer (as usual, open to better names):
>
>    - <VendorOption name="renderingLegend">false</VendorOption>
>    - <VendorOption name="renderingMap">false</VendorOption>
>
> Elimination of the bits that are not meant for a particular target can be
> implemented using a DuplicatingStyleVisitor subclass
> that would pre-process the style before it's being used.
>
> While this approach makes styles longer, it also allows to keep everything
> in one place, making the life of who's editing
> the styles easier (map and legend rules for the same symbol can be kept
> back to back, hopping from one to the other while editing).
>
> Now, implementation is easy, but there is a catch: Rule today does not
> have an option map.
> Hence, I wrote a proposal for that one API change, see separate mail for
> it (this one, available only on geotools-devel).
>
> 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
> ------------------------------------------------------- *Con riferimento
> alla normativa sul trattamento dei dati personali (Reg. UE 2016/679 -
> Regolamento generale sulla protezione dei dati “GDPR”), si precisa che ogni
> circostanza inerente alla presente email (il suo contenuto, gli eventuali
> allegati, etc.) è un dato la cui conoscenza è riservata al/i solo/i
> destinatario/i indicati dallo scrivente. Se il messaggio Le è giunto per
> errore, è tenuta/o a cancellarlo, ogni altra operazione è illecita. Le
> sarei comunque grato se potesse darmene notizia. This email is intended
> only for the person or entity to which it is addressed and may contain
> information that is privileged, confidential or otherwise protected from
> disclosure. We remind that - as provided by European Regulation 2016/679
> “GDPR” - copying, dissemination or use of this e-mail or the information
> herein by anyone other than the intended recipient is prohibited. If you
> have received this email by mistake, please notify us immediately by
> telephone or e-mail.*
> _______________________________________________
> GeoTools-Devel mailing list
> GeoTools-Devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/geotools-devel
>


-- 
Gabriel Roldán
_______________________________________________
GeoTools-Devel mailing list
GeoTools-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to