geostyler / geostyler-sld-parser

GeoStyler-Style-Parser implementation for SLD
BSD 2-Clause "Simplified" License
48 stars 29 forks source link

Svg Base64 Icon Image Format in SLD files is not read #693

Open pragmaeuge opened 1 year ago

pragmaeuge commented 1 year ago

Bug

Describe the bug Svg Base64 Icon Image Format in SLD files is not parsed (version 4.0.1)

To Reproduce

QGIS generates the following SLD v1.1.0 code piece:

<se:PointSymbolizer>
            <se:Graphic>
              <!--Parametric SVG-->
              <se:ExternalGraphic>
                <se:OnlineResource xlink:type="simple" xlink:href="base64:PHN2ZyBoZWlnaHQ9IjEwOS41cHQiIHZpZXdCb3g9IjAgMCAxMDkuNSAxMDkuNSIgd2lkdGg9IjEwOS41cHQiPjxnIGZpbGw9IiMwMDA0MDAiIHN0cm9rZT0iIzAwMCI+PHBhdGggZD0ibTc0LjA2MyA1NC43NWMwLTEwLjg3My04LjgxNC0xOS42ODgtMTkuNjg4LTE5LjY4OHMtMTkuNjg3IDguODE1LTE5LjY4NyAxOS42ODggOC44MTQgMTkuNjg4IDE5LjY4OCAxOS42ODggMTkuNjg4LTguODE0IDE5LjY4OC0xOS42ODh6IiBmaWxsPSIjMDA3ZjBhIiBzdHJva2U9IiMwMDdhMGEiLz48cGF0aCBkPSJtMTA5IDU5LjVoLTEwOC41di05aDEwOC41eiIvPjxwYXRoIGQ9Im01OSAxMDloLTkuMjV2LTEwOC41aDkuMjV6Ii8+PC9nPjwvc3ZnPg==?fill=%23232323&amp;fill-opacity=1&amp;outline=%23232323&amp;outline-opacity=1&amp;outline-width=1"/>
                <se:Format>image/svg+xml</se:Format>
              </se:ExternalGraphic>
              <!--Plain SVG fallback, no parameters-->
              <se:ExternalGraphic>
                <se:OnlineResource xlink:type="simple" xlink:href="base64:PHN2ZyBoZWlnaHQ9IjEwOS41cHQiIHZpZXdCb3g9IjAgMCAxMDkuNSAxMDkuNSIgd2lkdGg9IjEwOS41cHQiPjxnIGZpbGw9IiMwMDA0MDAiIHN0cm9rZT0iIzAwMCI+PHBhdGggZD0ibTc0LjA2MyA1NC43NWMwLTEwLjg3My04LjgxNC0xOS42ODgtMTkuNjg4LTE5LjY4OHMtMTkuNjg3IDguODE1LTE5LjY4NyAxOS42ODggOC44MTQgMTkuNjg4IDE5LjY4OCAxOS42ODggMTkuNjg4LTguODE0IDE5LjY4OC0xOS42ODh6IiBmaWxsPSIjMDA3ZjBhIiBzdHJva2U9IiMwMDdhMGEiLz48cGF0aCBkPSJtMTA5IDU5LjVoLTEwOC41di05aDEwOC41eiIvPjxwYXRoIGQ9Im01OSAxMDloLTkuMjV2LTEwOC41aDkuMjV6Ii8+PC9nPjwvc3ZnPg=="/>
                <se:Format>image/svg+xml</se:Format>
              </se:ExternalGraphic>
              <!--Well known marker fallback-->
              <se:Mark>
                <se:WellKnownName>square</se:WellKnownName>
                <se:Fill>
                  <se:SvgParameter name="fill">#232323</se:SvgParameter>
                </se:Fill>
                <se:Stroke>
                  <se:SvgParameter name="stroke">#232323</se:SvgParameter>
                  <se:SvgParameter name="stroke-width">1</se:SvgParameter>
                </se:Stroke>
              </se:Mark>
              <se:Size>32</se:Size>
            </se:Graphic>
          </se:PointSymbolizer>

When I inspect the SLD parser output I obtain this symbolizers object:

[
    {
        "kind": "Icon",
        "image": "base64:PHN2ZyBoZWlnaHQ9IjEwOS41cHQiIHZpZXdCb3g9IjAgMCAxMDkuNSAxMDkuNSIgd2lkdGg9IjEwOS41cHQiPjxnIGZpbGw9IiMwMDA0MDAiIHN0cm9rZT0iIzAwMCI+PHBhdGggZD0ibTc0LjA2MyA1NC43NWMwLTEwLjg3My04LjgxNC0xOS42ODgtMTkuNjg4LTE5LjY4OHMtMTkuNjg3IDguODE1LTE5LjY4NyAxOS42ODggOC44MTQgMTkuNjg4IDE5LjY4OCAxOS42ODggMTkuNjg4LTguODE0IDE5LjY4OC0xOS42ODh6IiBmaWxsPSIjMDA3ZjBhIiBzdHJva2U9IiMwMDdhMGEiLz48cGF0aCBkPSJtMTA5IDU5LjVoLTEwOC41di05aDEwOC41eiIvPjxwYXRoIGQ9Im01OSAxMDloLTkuMjV2LTEwOC41aDkuMjV6Ii8+PC9nPjwvc3ZnPg==?fill=%23232323&fill-opacity=1&outline=%23232323&outline-opacity=1&outline-width=1",
        "size": 32
    }
]

Where the "format" property is missing.

Expected behavior

[
    {
        "kind": "Icon",
        "image": "base64:PHN2ZyBoZWlnaHQ9IjEwOS41cHQiIHZpZXdCb3g9IjAgMCAxMDkuNSAxMDkuNSIgd2lkdGg9IjEwOS41cHQiPjxnIGZpbGw9IiMwMDA0MDAiIHN0cm9rZT0iIzAwMCI+PHBhdGggZD0ibTc0LjA2MyA1NC43NWMwLTEwLjg3My04LjgxNC0xOS42ODgtMTkuNjg4LTE5LjY4OHMtMTkuNjg3IDguODE1LTE5LjY4NyAxOS42ODggOC44MTQgMTkuNjg4IDE5LjY4OCAxOS42ODggMTkuNjg4LTguODE0IDE5LjY4OC0xOS42ODh6IiBmaWxsPSIjMDA3ZjBhIiBzdHJva2U9IiMwMDdhMGEiLz48cGF0aCBkPSJtMTA5IDU5LjVoLTEwOC41di05aDEwOC41eiIvPjxwYXRoIGQ9Im01OSAxMDloLTkuMjV2LTEwOC41aDkuMjV6Ii8+PC9nPjwvc3ZnPg==?fill=%23232323&fill-opacity=1&outline=%23232323&outline-opacity=1&outline-width=1",
        "size": 32,
        "format":"image/svg+xml"
    }
]
jansule commented 1 year ago

Thanks for the info @pragmaeuge. The current version of the geostyler-sld-parser does not support the format property yet. Are you planning on providing a PR for that?