opengeospatial / styles-and-symbology

OGC Styles & Symbology Standards
Other
11 stars 6 forks source link

Proportional colored text #25

Open ebocher opened 1 year ago

ebocher commented 1 year ago

Existing conformance classes required for this use case:

Example stylesheet:

Proportional label map uses the same technique than proportional symbols, expected that the size of the font is scaled proportionately. Here we describe a CSS file that represents the Local Climate Zone types with a text and a color according a climate aleas.

*{
     stroke: grey;
     stroke-width: 0.26;
     label: [LCZ_PRIMARY];
     font-family: Arial;
     font-size: [Interpolate(
                           area(geometry)/10000,
                           0, 10,
                           5, 20,
                           10, 32,
                           'numeric',
                           'linear')];
      font-style: normal;
      font-weight: bold;
      font-fill: black;
      label-anchor: 0.5 0.5;
      label-auto-wrap: 60;
      label-max-displacement: 150;

       /* @title high  */
          [LCZ_PRIMARY <= 4],
          [LCZ_PRIMARY = 8],
          [LCZ_PRIMARY = 10],
          [LCZ_PRIMARY = 105] {
              font-fill: red;
          };
          /* @title mid */
          [LCZ_PRIMARY >= 5]
          [LCZ_PRIMARY <= 7],
          [LCZ_PRIMARY = 9],
          [LCZ_PRIMARY = 10] {
           font-fill :orange;
          };
          /* @title low */
          [LCZ_PRIMARY >= 101]
          [LCZ_PRIMARY <= 104],
          [LCZ_PRIMARY = 107]{
            font-fill:  green;
          }
}

Describe any capability not already addressed by existing conformance classes:

Example image illustrating the portrayal use case:

proportional_label_lcz_area

maxcollombin commented 1 year ago

Mapbox JSON encoding:

{
  "version": 8,
  "name": "Default Styler",
  "layers": [
    {
      "filter": [
        "==",
        "LCZ_PRIMARY",
        10
      ],
      "id": "high, mid",
      "type": "line"
    },
    {
      "filter": [
        "==",
        "LCZ_PRIMARY",
        10
      ],
      "id": "high, mid",
      "type": "symbol",
      "paint": {
        "text-opacity": 1,
        "text-color": "#000000"
      },
      "layout": {
        "text-field": "{LCZ_PRIMARY}"
      }
    },
    {
      "filter": [
        "any",
        [
          "<=",
          "LCZ_PRIMARY",
          4
        ],
        [
          "==",
          "LCZ_PRIMARY",
          8
        ],
        [
          "==",
          "LCZ_PRIMARY",
          105
        ]
      ],
      "id": "high",
      "type": "line"
    },
    {
      "filter": [
        "any",
        [
          "<=",
          "LCZ_PRIMARY",
          4
        ],
        [
          "==",
          "LCZ_PRIMARY",
          8
        ],
        [
          "==",
          "LCZ_PRIMARY",
          105
        ]
      ],
      "id": "high",
      "type": "symbol",
      "paint": {
        "text-opacity": 1,
        "text-color": "#000000"
      },
      "layout": {
        "text-field": "{LCZ_PRIMARY}"
      }
    },
    {
      "filter": [
        "any",
        [
          "<=x<=",
          "LCZ_PRIMARY",
          5,
          7
        ],
        [
          "==",
          "LCZ_PRIMARY",
          9
        ]
      ],
      "id": "mid",
      "type": "line"
    },
    {
      "filter": [
        "any",
        [
          "<=x<=",
          "LCZ_PRIMARY",
          5,
          7
        ],
        [
          "==",
          "LCZ_PRIMARY",
          9
        ]
      ],
      "id": "mid",
      "type": "symbol",
      "paint": {
        "text-opacity": 1,
        "text-color": "#000000"
      },
      "layout": {
        "text-field": "{LCZ_PRIMARY}"
      }
    },
    {
      "filter": [
        "all",
        [
          "||",
          [
            "==",
            "LCZ_PRIMARY",
            null
          ],
          [
            "<",
            "LCZ_PRIMARY",
            5
          ],
          [
            ">",
            "LCZ_PRIMARY",
            7
          ]
        ],
        [
          "any",
          [
            "<=x<=",
            "LCZ_PRIMARY",
            101,
            104
          ],
          [
            "==",
            "LCZ_PRIMARY",
            107
          ]
        ]
      ],
      "id": "low",
      "type": "line"
    },
    {
      "filter": [
        "all",
        [
          "||",
          [
            "==",
            "LCZ_PRIMARY",
            null
          ],
          [
            "<",
            "LCZ_PRIMARY",
            5
          ],
          [
            ">",
            "LCZ_PRIMARY",
            7
          ]
        ],
        [
          "any",
          [
            "<=x<=",
            "LCZ_PRIMARY",
            101,
            104
          ],
          [
            "==",
            "LCZ_PRIMARY",
            107
          ]
        ]
      ],
      "id": "low",
      "type": "symbol",
      "paint": {
        "text-opacity": 1,
        "text-color": "#000000"
      },
      "layout": {
        "text-field": "{LCZ_PRIMARY}"
      }
    },
    {
      "filter": [
        "all",
        [
          "||",
          [
            "==",
            "LCZ_PRIMARY",
            null
          ],
          [
            "<",
            "LCZ_PRIMARY",
            5
          ],
          [
            ">",
            "LCZ_PRIMARY",
            7
          ]
        ],
        [
          "any",
          [
            "==",
            "LCZ_PRIMARY",
            null
          ],
          [
            "<",
            "LCZ_PRIMARY",
            101
          ],
          [
            ">",
            "LCZ_PRIMARY",
            104
          ]
        ],
        [
          ">",
          "LCZ_PRIMARY",
          4
        ],
        [
          "!=",
          "LCZ_PRIMARY",
          8
        ],
        [
          "!=",
          "LCZ_PRIMARY",
          9
        ],
        [
          "!=",
          "LCZ_PRIMARY",
          10
        ],
        [
          "!=",
          "LCZ_PRIMARY",
          105
        ],
        [
          "!=",
          "LCZ_PRIMARY",
          107
        ]
      ],
      "id": "",
      "type": "line"
    },
    {
      "filter": [
        "all",
        [
          "||",
          [
            "==",
            "LCZ_PRIMARY",
            null
          ],
          [
            "<",
            "LCZ_PRIMARY",
            5
          ],
          [
            ">",
            "LCZ_PRIMARY",
            7
          ]
        ],
        [
          "any",
          [
            "==",
            "LCZ_PRIMARY",
            null
          ],
          [
            "<",
            "LCZ_PRIMARY",
            101
          ],
          [
            ">",
            "LCZ_PRIMARY",
            104
          ]
        ],
        [
          ">",
          "LCZ_PRIMARY",
          4
        ],
        [
          "!=",
          "LCZ_PRIMARY",
          8
        ],
        [
          "!=",
          "LCZ_PRIMARY",
          9
        ],
        [
          "!=",
          "LCZ_PRIMARY",
          10
        ],
        [
          "!=",
          "LCZ_PRIMARY",
          105
        ],
        [
          "!=",
          "LCZ_PRIMARY",
          107
        ]
      ],
      "id": "",
      "type": "symbol",
      "paint": {
        "text-opacity": 1,
        "text-color": "#000000"
      },
      "layout": {
        "text-field": "{LCZ_PRIMARY}"
      }
    }
  ]
}
maxcollombin commented 1 year ago

SLD encoding:

<?xml version="1.0" encoding="UTF-8"?>
<sld:StyledLayerDescriptor
    xmlns="http://www.opengis.net/sld"
    xmlns:sld="http://www.opengis.net/sld"
    xmlns:gml="http://www.opengis.net/gml"
    xmlns:ogc="http://www.opengis.net/ogc" version="1.0.0">
    <sld:NamedLayer>
        <sld:Name>Default Styler</sld:Name>
        <sld:UserStyle>
            <sld:Name>Default Styler</sld:Name>
            <sld:FeatureTypeStyle>
                <sld:Name>name</sld:Name>
                <sld:Rule>
                    <sld:Title>high, mid</sld:Title>
                    <ogc:Filter>
                        <ogc:PropertyIsEqualTo>
                            <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                            <ogc:Literal>10</ogc:Literal>
                        </ogc:PropertyIsEqualTo>
                    </ogc:Filter>
                    <sld:LineSymbolizer>
                        <sld:Stroke>
                            <sld:CssParameter name="stroke">#808080</sld:CssParameter>
                            <sld:CssParameter name="stroke-width">0.26</sld:CssParameter>
                        </sld:Stroke>
                    </sld:LineSymbolizer>
                    <sld:TextSymbolizer>
                        <sld:Label>
                            <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                        </sld:Label>
                        <sld:Font>
                            <sld:CssParameter name="font-family">Arial</sld:CssParameter>
                            <sld:CssParameter name="font-size">
                                <ogc:Function name="Interpolate">
                                    <ogc:Div>
                                        <ogc:Function name="Area">
                                            <ogc:PropertyName>geometry</ogc:PropertyName>
                                        </ogc:Function>
                                        <ogc:Literal>10000</ogc:Literal>
                                    </ogc:Div>
                                    <ogc:Literal>0</ogc:Literal>
                                    <ogc:Literal>10</ogc:Literal>
                                    <ogc:Literal>5</ogc:Literal>
                                    <ogc:Literal>20</ogc:Literal>
                                    <ogc:Literal>10</ogc:Literal>
                                    <ogc:Literal>32</ogc:Literal>
                                    <ogc:Literal>numeric</ogc:Literal>
                                    <ogc:Literal>linear</ogc:Literal>
                                </ogc:Function>
                            </sld:CssParameter>
                            <sld:CssParameter name="font-style">normal</sld:CssParameter>
                            <sld:CssParameter name="font-weight">bold</sld:CssParameter>
                        </sld:Font>
                        <sld:LabelPlacement>
                            <sld:PointPlacement>
                                <sld:AnchorPoint>
                                    <sld:AnchorPointX>0.5</sld:AnchorPointX>
                                    <sld:AnchorPointY>0.5</sld:AnchorPointY>
                                </sld:AnchorPoint>
                            </sld:PointPlacement>
                        </sld:LabelPlacement>
                        <sld:Fill>
                            <sld:CssParameter name="fill">#ffa500</sld:CssParameter>
                        </sld:Fill>
                        <sld:VendorOption name="autoWrap">60</sld:VendorOption>
                        <sld:VendorOption name="maxDisplacement">150</sld:VendorOption>
                    </sld:TextSymbolizer>
                </sld:Rule>
                <sld:Rule>
                    <sld:Title>high</sld:Title>
                    <ogc:Filter>
                        <ogc:Or>
                            <ogc:PropertyIsLessThanOrEqualTo>
                                <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                <ogc:Literal>4</ogc:Literal>
                            </ogc:PropertyIsLessThanOrEqualTo>
                            <ogc:PropertyIsEqualTo>
                                <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                <ogc:Literal>8</ogc:Literal>
                            </ogc:PropertyIsEqualTo>
                            <ogc:PropertyIsEqualTo>
                                <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                <ogc:Literal>105</ogc:Literal>
                            </ogc:PropertyIsEqualTo>
                        </ogc:Or>
                    </ogc:Filter>
                    <sld:LineSymbolizer>
                        <sld:Stroke>
                            <sld:CssParameter name="stroke">#808080</sld:CssParameter>
                            <sld:CssParameter name="stroke-width">0.26</sld:CssParameter>
                        </sld:Stroke>
                    </sld:LineSymbolizer>
                    <sld:TextSymbolizer>
                        <sld:Label>
                            <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                        </sld:Label>
                        <sld:Font>
                            <sld:CssParameter name="font-family">Arial</sld:CssParameter>
                            <sld:CssParameter name="font-size">
                                <ogc:Function name="Interpolate">
                                    <ogc:Div>
                                        <ogc:Function name="Area">
                                            <ogc:PropertyName>geometry</ogc:PropertyName>
                                        </ogc:Function>
                                        <ogc:Literal>10000</ogc:Literal>
                                    </ogc:Div>
                                    <ogc:Literal>0</ogc:Literal>
                                    <ogc:Literal>10</ogc:Literal>
                                    <ogc:Literal>5</ogc:Literal>
                                    <ogc:Literal>20</ogc:Literal>
                                    <ogc:Literal>10</ogc:Literal>
                                    <ogc:Literal>32</ogc:Literal>
                                    <ogc:Literal>numeric</ogc:Literal>
                                    <ogc:Literal>linear</ogc:Literal>
                                </ogc:Function>
                            </sld:CssParameter>
                            <sld:CssParameter name="font-style">normal</sld:CssParameter>
                            <sld:CssParameter name="font-weight">bold</sld:CssParameter>
                        </sld:Font>
                        <sld:LabelPlacement>
                            <sld:PointPlacement>
                                <sld:AnchorPoint>
                                    <sld:AnchorPointX>0.5</sld:AnchorPointX>
                                    <sld:AnchorPointY>0.5</sld:AnchorPointY>
                                </sld:AnchorPoint>
                            </sld:PointPlacement>
                        </sld:LabelPlacement>
                        <sld:Fill>
                            <sld:CssParameter name="fill">#ff0000</sld:CssParameter>
                        </sld:Fill>
                        <sld:VendorOption name="autoWrap">60</sld:VendorOption>
                        <sld:VendorOption name="maxDisplacement">150</sld:VendorOption>
                    </sld:TextSymbolizer>
                </sld:Rule>
                <sld:Rule>
                    <sld:Title>mid</sld:Title>
                    <ogc:Filter>
                        <ogc:Or>
                            <ogc:PropertyIsBetween>
                                <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                <ogc:LowerBoundary>
                                    <ogc:Literal>5</ogc:Literal>
                                </ogc:LowerBoundary>
                                <ogc:UpperBoundary>
                                    <ogc:Literal>7</ogc:Literal>
                                </ogc:UpperBoundary>
                            </ogc:PropertyIsBetween>
                            <ogc:PropertyIsEqualTo>
                                <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                <ogc:Literal>9</ogc:Literal>
                            </ogc:PropertyIsEqualTo>
                        </ogc:Or>
                    </ogc:Filter>
                    <sld:LineSymbolizer>
                        <sld:Stroke>
                            <sld:CssParameter name="stroke">#808080</sld:CssParameter>
                            <sld:CssParameter name="stroke-width">0.26</sld:CssParameter>
                        </sld:Stroke>
                    </sld:LineSymbolizer>
                    <sld:TextSymbolizer>
                        <sld:Label>
                            <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                        </sld:Label>
                        <sld:Font>
                            <sld:CssParameter name="font-family">Arial</sld:CssParameter>
                            <sld:CssParameter name="font-size">
                                <ogc:Function name="Interpolate">
                                    <ogc:Div>
                                        <ogc:Function name="Area">
                                            <ogc:PropertyName>geometry</ogc:PropertyName>
                                        </ogc:Function>
                                        <ogc:Literal>10000</ogc:Literal>
                                    </ogc:Div>
                                    <ogc:Literal>0</ogc:Literal>
                                    <ogc:Literal>10</ogc:Literal>
                                    <ogc:Literal>5</ogc:Literal>
                                    <ogc:Literal>20</ogc:Literal>
                                    <ogc:Literal>10</ogc:Literal>
                                    <ogc:Literal>32</ogc:Literal>
                                    <ogc:Literal>numeric</ogc:Literal>
                                    <ogc:Literal>linear</ogc:Literal>
                                </ogc:Function>
                            </sld:CssParameter>
                            <sld:CssParameter name="font-style">normal</sld:CssParameter>
                            <sld:CssParameter name="font-weight">bold</sld:CssParameter>
                        </sld:Font>
                        <sld:LabelPlacement>
                            <sld:PointPlacement>
                                <sld:AnchorPoint>
                                    <sld:AnchorPointX>0.5</sld:AnchorPointX>
                                    <sld:AnchorPointY>0.5</sld:AnchorPointY>
                                </sld:AnchorPoint>
                            </sld:PointPlacement>
                        </sld:LabelPlacement>
                        <sld:Fill>
                            <sld:CssParameter name="fill">#ffa500</sld:CssParameter>
                        </sld:Fill>
                        <sld:VendorOption name="autoWrap">60</sld:VendorOption>
                        <sld:VendorOption name="maxDisplacement">150</sld:VendorOption>
                    </sld:TextSymbolizer>
                </sld:Rule>
                <sld:Rule>
                    <sld:Title>low</sld:Title>
                    <ogc:Filter>
                        <ogc:And>
                            <ogc:Or>
                                <ogc:PropertyIsNull>
                                    <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                </ogc:PropertyIsNull>
                                <ogc:PropertyIsLessThan>
                                    <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                    <ogc:Literal>5</ogc:Literal>
                                </ogc:PropertyIsLessThan>
                                <ogc:PropertyIsGreaterThan>
                                    <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                    <ogc:Literal>7</ogc:Literal>
                                </ogc:PropertyIsGreaterThan>
                            </ogc:Or>
                            <ogc:Or>
                                <ogc:PropertyIsBetween>
                                    <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                    <ogc:LowerBoundary>
                                        <ogc:Literal>101</ogc:Literal>
                                    </ogc:LowerBoundary>
                                    <ogc:UpperBoundary>
                                        <ogc:Literal>104</ogc:Literal>
                                    </ogc:UpperBoundary>
                                </ogc:PropertyIsBetween>
                                <ogc:PropertyIsEqualTo>
                                    <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                    <ogc:Literal>107</ogc:Literal>
                                </ogc:PropertyIsEqualTo>
                            </ogc:Or>
                        </ogc:And>
                    </ogc:Filter>
                    <sld:LineSymbolizer>
                        <sld:Stroke>
                            <sld:CssParameter name="stroke">#808080</sld:CssParameter>
                            <sld:CssParameter name="stroke-width">0.26</sld:CssParameter>
                        </sld:Stroke>
                    </sld:LineSymbolizer>
                    <sld:TextSymbolizer>
                        <sld:Label>
                            <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                        </sld:Label>
                        <sld:Font>
                            <sld:CssParameter name="font-family">Arial</sld:CssParameter>
                            <sld:CssParameter name="font-size">
                                <ogc:Function name="Interpolate">
                                    <ogc:Div>
                                        <ogc:Function name="Area">
                                            <ogc:PropertyName>geometry</ogc:PropertyName>
                                        </ogc:Function>
                                        <ogc:Literal>10000</ogc:Literal>
                                    </ogc:Div>
                                    <ogc:Literal>0</ogc:Literal>
                                    <ogc:Literal>10</ogc:Literal>
                                    <ogc:Literal>5</ogc:Literal>
                                    <ogc:Literal>20</ogc:Literal>
                                    <ogc:Literal>10</ogc:Literal>
                                    <ogc:Literal>32</ogc:Literal>
                                    <ogc:Literal>numeric</ogc:Literal>
                                    <ogc:Literal>linear</ogc:Literal>
                                </ogc:Function>
                            </sld:CssParameter>
                            <sld:CssParameter name="font-style">normal</sld:CssParameter>
                            <sld:CssParameter name="font-weight">bold</sld:CssParameter>
                        </sld:Font>
                        <sld:LabelPlacement>
                            <sld:PointPlacement>
                                <sld:AnchorPoint>
                                    <sld:AnchorPointX>0.5</sld:AnchorPointX>
                                    <sld:AnchorPointY>0.5</sld:AnchorPointY>
                                </sld:AnchorPoint>
                            </sld:PointPlacement>
                        </sld:LabelPlacement>
                        <sld:Fill>
                            <sld:CssParameter name="fill">#008000</sld:CssParameter>
                        </sld:Fill>
                        <sld:VendorOption name="autoWrap">60</sld:VendorOption>
                        <sld:VendorOption name="maxDisplacement">150</sld:VendorOption>
                    </sld:TextSymbolizer>
                </sld:Rule>
                <sld:Rule>
                    <ogc:Filter>
                        <ogc:And>
                            <ogc:Or>
                                <ogc:PropertyIsNull>
                                    <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                </ogc:PropertyIsNull>
                                <ogc:PropertyIsLessThan>
                                    <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                    <ogc:Literal>5</ogc:Literal>
                                </ogc:PropertyIsLessThan>
                                <ogc:PropertyIsGreaterThan>
                                    <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                    <ogc:Literal>7</ogc:Literal>
                                </ogc:PropertyIsGreaterThan>
                            </ogc:Or>
                            <ogc:Or>
                                <ogc:PropertyIsNull>
                                    <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                </ogc:PropertyIsNull>
                                <ogc:PropertyIsLessThan>
                                    <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                    <ogc:Literal>101</ogc:Literal>
                                </ogc:PropertyIsLessThan>
                                <ogc:PropertyIsGreaterThan>
                                    <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                    <ogc:Literal>104</ogc:Literal>
                                </ogc:PropertyIsGreaterThan>
                            </ogc:Or>
                            <ogc:PropertyIsGreaterThan>
                                <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                <ogc:Literal>4</ogc:Literal>
                            </ogc:PropertyIsGreaterThan>
                            <ogc:PropertyIsNotEqualTo>
                                <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                <ogc:Literal>8</ogc:Literal>
                            </ogc:PropertyIsNotEqualTo>
                            <ogc:PropertyIsNotEqualTo>
                                <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                <ogc:Literal>9</ogc:Literal>
                            </ogc:PropertyIsNotEqualTo>
                            <ogc:PropertyIsNotEqualTo>
                                <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                <ogc:Literal>10</ogc:Literal>
                            </ogc:PropertyIsNotEqualTo>
                            <ogc:PropertyIsNotEqualTo>
                                <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                <ogc:Literal>105</ogc:Literal>
                            </ogc:PropertyIsNotEqualTo>
                            <ogc:PropertyIsNotEqualTo>
                                <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                                <ogc:Literal>107</ogc:Literal>
                            </ogc:PropertyIsNotEqualTo>
                        </ogc:And>
                    </ogc:Filter>
                    <sld:LineSymbolizer>
                        <sld:Stroke>
                            <sld:CssParameter name="stroke">#808080</sld:CssParameter>
                            <sld:CssParameter name="stroke-width">0.26</sld:CssParameter>
                        </sld:Stroke>
                    </sld:LineSymbolizer>
                    <sld:TextSymbolizer>
                        <sld:Label>
                            <ogc:PropertyName>LCZ_PRIMARY</ogc:PropertyName>
                        </sld:Label>
                        <sld:Font>
                            <sld:CssParameter name="font-family">Arial</sld:CssParameter>
                            <sld:CssParameter name="font-size">
                                <ogc:Function name="Interpolate">
                                    <ogc:Div>
                                        <ogc:Function name="Area">
                                            <ogc:PropertyName>geometry</ogc:PropertyName>
                                        </ogc:Function>
                                        <ogc:Literal>10000</ogc:Literal>
                                    </ogc:Div>
                                    <ogc:Literal>0</ogc:Literal>
                                    <ogc:Literal>10</ogc:Literal>
                                    <ogc:Literal>5</ogc:Literal>
                                    <ogc:Literal>20</ogc:Literal>
                                    <ogc:Literal>10</ogc:Literal>
                                    <ogc:Literal>32</ogc:Literal>
                                    <ogc:Literal>numeric</ogc:Literal>
                                    <ogc:Literal>linear</ogc:Literal>
                                </ogc:Function>
                            </sld:CssParameter>
                            <sld:CssParameter name="font-style">normal</sld:CssParameter>
                            <sld:CssParameter name="font-weight">bold</sld:CssParameter>
                        </sld:Font>
                        <sld:LabelPlacement>
                            <sld:PointPlacement>
                                <sld:AnchorPoint>
                                    <sld:AnchorPointX>0.5</sld:AnchorPointX>
                                    <sld:AnchorPointY>0.5</sld:AnchorPointY>
                                </sld:AnchorPoint>
                            </sld:PointPlacement>
                        </sld:LabelPlacement>
                        <sld:Fill>
                            <sld:CssParameter name="fill">#000000</sld:CssParameter>
                        </sld:Fill>
                        <sld:VendorOption name="autoWrap">60</sld:VendorOption>
                        <sld:VendorOption name="maxDisplacement">150</sld:VendorOption>
                    </sld:TextSymbolizer>
                </sld:Rule>
                <sld:VendorOption name="ruleEvaluation">first</sld:VendorOption>
            </sld:FeatureTypeStyle>
        </sld:UserStyle>
    </sld:NamedLayer>
</sld:StyledLayerDescriptor>