[mapserver-dev] SVG symbols with modifiable parameters

Tamas Szekeres szekerest at gmail.com
Wed Sep 11 11:17:12 PDT 2019

Hi Steve,

At the moment I'd address only a simple solution to achieve the desired
result, so that the SVG symbols could replace the truetype fonts. So I'd
limit the replacement parameters to the properties of symbolStyleObj, but
looking a the code, the scale/rotation are already handled, so replacing
only color,outlinecolor and width makes any sense. This could probably
happened by replacing any occurrences of stroke=".." and fill="..." and
stroke-width="..." with the corresponding colors and width from the style

We could probably imagine a support for combined styles using the same SVG
definition like you mentioned, but that would be more complicated to

I don't see any chance to manipulate the parsed object from mapserver,
because it is not exposed, so we should re-parse the symbol for each
color/outlinecolor/width combination, while the parsed result could be
stored in the renderer cache for further use.

Best regards,


Lime, Steve D (MNIT) <steve.lime at state.mn.us> ezt írta (időpont: 2019.
szept. 11., Sze, 7:01):

> Hi Tamas: I think something like this would be super useful. Currently
> MapServer does not load (directly) or parse the SVG. It's relying on
> svg-cairo or rsvg for that. So to support parameters one would need to
> parse and then process the XML looking for parameters. To avoid doing this
> for every file I'd thinking adding something to a symbolObj to trigger the
> extra processing might be a possibility. Any chance svg-cairo or rsvg
> support this (where you'd pass a key/value store along with the filename)?
> I was wondering how you'd store the colors, etc... within the mapfile. I
> don't think that it makes sense to bind it to a styleObj as is. Not enough
> flexibility for symbols with multiple colors or whatever, plus I'd assume
> you'd want the flexibility to use SVG files that already define parameter
> names. So, I'd think we would need to use a hash within the styleObj to
> hold the configuration parameters something like:
>   SYMBOL 'some-svg-symbol'
>   SIZE 10
>     'color1' 'red'
>     'color2' 'green'
>   END
> --Steve
> ------------------------------
> *From:* mapserver-dev <mapserver-dev-bounces at lists.osgeo.org> on behalf
> of Tamas Szekeres <szekerest at gmail.com>
> *Sent:* Thursday, September 5, 2019 7:28 AM
> *To:* mapserver-dev at lists.osgeo.org <mapserver-dev at lists.osgeo.org>
> *Subject:* [mapserver-dev] SVG symbols with modifiable parameters
> Hi,
> I have a requirement to be able to modify some parameters of the SVG
> symbols according to the parameters of the corresponding style in the
> mapfile configuration. This would provide significant help to avoid
> maintaining large number of SVG definitions with the same shape, but
> different colors or line widths. Or one could also replace the truetype
> symbols with the SVG variants if needed.
> Would that be reasonable to implement something like this?
> http://blog.ch/2011/06/30/svg-symbols-in-qgis-with-modifiable-colors/
> <https://gcc01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fblog.sourcepole.ch%2F2011%2F06%2F30%2Fsvg-symbols-in-qgis-with-modifiable-colors%2F&data=02%7C01%7Csteve.lime%40state.mn.us%7Cb40a05dc806743f8ca7608d731fca1ca%7Ceb14b04624c445198f26b89c2159828c%7C0%7C1%7C637032833418334660&sdata=UXiBHDUUxJgYY%2BAdS4s51u6EltjBGhr6Ywha3z91Eio%3D&reserved=0>
> I think we could easily modify the SVG definition in msPreloadSVGSymbol,
> where the symbol definition would be loaded and modified in a local buffer
> before passing that to the renderer.
> Best regards,
> Tamas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapserver-dev/attachments/20190911/27ee3b80/attachment-0001.html>

More information about the mapserver-dev mailing list