[Geoserver-users] CSS module questions

Hi Andrea,

First, the CSS extension is awesome; thank you for your hard work on it. I have a few quick questions...

1. I am trying to style GDELT data by EventCode. The first two characters of the EventCode string would be sufficient to name the file I want. I was able to make a separate rule for each code, but it'd be more convenient to do something like

    mark: url([strConcat(strSubstring(EventCode, 0, 2), '.svg')]);

If I'm reading this https://github.com/geotools/geotools/blob/master/modules/unsupported/css/src/main/java/org/geotools/styling/css/CssParser.java#L321 right, it looks like Functions may not work. The docs hint that Expressions might be ok: http://docs.geoserver.org/stable/en/user/extensions/css/properties.html.

Did I goof the syntax? If not, I'd be happy to help cook up a quick PR if expresssions/functions in url should be allowed.

2. How does the CSS extension interact with GeoServer's SLD extensions?

3. In the CSS Styles GeoServer UI, I think it'd be awesome to keep the same map extent as one switches between the tabs. If you like the idea, I might be able to play with it over the next few weeks.

Cheers,

Jim

On Thu, Apr 23, 2015 at 10:29 PM, Jim Hughes <jnh5y@anonymised.com> wrote:

Hi Andrea,

First, the CSS extension is awesome; thank you for your hard work on it.
I have a few quick questions...

1. I am trying to style GDELT data by EventCode. The first two
characters of the EventCode string would be sufficient to name the file I
want. I was able to make a separate rule for each code, but it'd be more
convenient to do something like

   mark: url([strConcat(strSubstring(EventCode, 0, 2), '.svg')]);

If I'm reading this
https://github.com/geotools/geotools/blob/master/modules/unsupported/css/src/main/java/org/geotools/styling/css/CssParser.java#L321
right, it looks like Functions may not work. The docs hint that
Expressions might be ok:
http://docs.geoserver.org/stable/en/user/extensions/css/properties.html.

Did I goof the syntax? If not, I'd be happy to help cook up a quick PR if
expresssions/functions in url should be allowed.

You should check the generated SLD, that's the important one.
Also, which version of GeoServer you're using? 2.7 onwards is very much
recommended for CSS, I cannot help with 2.6 and older.

2. How does the CSS extension interact with GeoServer's SLD extensions?

It's a translator to SLD, GeoServer and the rendering subsytem really only
handle the latter.
If you are about to ask about working off the CSS directly, It's been
discussed already, having the renderer work directly off the CSS would
require major API changes, and a heavy refactor
or the renderer itself (we'd end up with two renderers to maintain).

3. In the CSS Styles GeoServer UI, I think it'd be awesome to keep the
same map extent as one switches between the tabs. If you like the idea, I
might be able to play with it over the next few weeks.

Sure

Cheers
Andrea

--

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

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
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.

-------------------------------------------------------

The generated SLD doesn’t update. There is an error reported in the UI: " I’m trying this out on GeoServer 2.8-SNAPSHOT. I suppose I’m asking how new GeoServer SLD extensions will be added to the CSS extension. It makes sense that the CSS module may lag behind. Thanks, Jim

···

On 04/24/2015 02:19 AM, Andrea Aime wrote:

On Thu, Apr 23, 2015 at 10:29 PM, Jim Hughes <jnh5y@anonymised.com> wrote:

Hi Andrea,

First, the CSS extension is awesome; thank you for your hard work on it. I have a few quick questions…

  1. I am trying to style GDELT data by EventCode. The first two characters of the EventCode string would be sufficient to name the file I want. I was able to make a separate rule for each code, but it’d be more convenient to do something like

mark: url([strConcat(strSubstring(EventCode, 0, 2), ‘.svg’)]);

If I’m reading this https://github.com/geotools/geotools/blob/master/modules/unsupported/css/src/main/java/org/geotools/styling/css/CssParser.java#L321 right, it looks like Functions may not work. The docs hint that Expressions might be ok: http://docs.geoserver.org/stable/en/user/extensions/css/properties.html.

Did I goof the syntax? If not, I’d be happy to help cook up a quick PR if expresssions/functions in url should be allowed.

You should check the generated SLD, that’s the important one.
Also, which version of GeoServer you’re using? 2.7 onwards is very much recommended for CSS, I cannot help with 2.6 and older.

Cannot turn this value into a literal: Expression [expression=strConcat([strSubstring([EventCode], [0], [2])], [.svg])]"

  1. How does the CSS extension interact with GeoServer’s SLD extensions?

It’s a translator to SLD, GeoServer and the rendering subsytem really only handle the latter.
If you are about to ask about working off the CSS directly, It’s been discussed already, having the renderer work directly off the CSS would require major API changes, and a heavy refactor
or the renderer itself (we’d end up with two renderers to maintain).

  1. In the CSS Styles GeoServer UI, I think it’d be awesome to keep the same map extent as one switches between the tabs. If you like the idea, I might be able to play with it over the next few weeks.

Sure

Cheers
Andrea

==

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

==

Ing. Andrea Aime

@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
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.


On Fri, Apr 24, 2015 at 8:20 PM, Jim Hughes <jnh5y@anonymised.com> wrote:

2. How does the CSS extension interact with GeoServer's SLD extensions?

It's a translator to SLD, GeoServer and the rendering subsytem really
only handle the latter.
If you are about to ask about working off the CSS directly, It's been
discussed already, having the renderer work directly off the CSS would
require major API changes, and a heavy refactor
or the renderer itself (we'd end up with two renderers to maintain).

I suppose I'm asking how new GeoServer SLD extensions will be added to the
CSS extension. It makes sense that the CSS module may lag behind.

Yes, one has to update the CSSParser and CSSTranslator classes in the
GeoTools gt-css module:
https://github.com/geotools/geotools/tree/master/modules/unsupported/css/src/main/java/org/geotools/styling/css

That said, I believe you're using the wrong syntax, external graphics
locations can only be strings, and the expressions
inside them are parsed at runtime. E.g.:

<ExternalGraphic>
                <OnlineResource xlink:type="simple"

xlink:href="http://www.usautoparts.net/bmw/images/states/tn_$\{strToLowerCase\(STATE\_ABBR\)\}\.jpg&quot;
/>
                <Format>image/gif</Format>
              </ExternalGraphic>

This is because we cannot put a Expression in there (would require an API
change in GeoTools).

So, in CSS the above would look like:

mark: url(
http://www.usautoparts.net/bmw/images/states/tn_$\{strToLowerCase\(STATE\_ABBR\)\}\.jpg
);

and your example would become:

mark: url(${strConcat(strSubstring(EventCode, 0, 2), '.svg')});

Haven't tried it out, but hopefully it will work.... not completely sure
though, I remember at some point we had issues with urls
that were pure expressions (e.g., not starting with a static string portion
like my former example).

Cheers
Andrea

--

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

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
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.

-------------------------------------------------------