O suporte ao rótulo “shield” do GeoTools já permite reunir um gráfico junto com um rótulo, com o objetivo de oferecer suporte ao escudo de etiqueta rodoviária. O GeoServer 2.17.0 inclui a capacidade de organizá-los separadamente, para que a marca e os rótulos não fiquem centralizados um no outro, mas, por exemplo, um acima do outro. Isso permite configurar marcadores de ponto que aparecem apenas enquanto o rótulo também aparece, veja:

Também é possível a partir de agora configurar uma cor de fundo (os MapServer maníacos agradecem) para o mapa no nível do estilo, usando um novo elemento chamado Background na propriedade UserStyle, veja:

<?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>Sea color background</sld:Name>
    <sld:UserStyle>
      <sld:Name>Background sample</sld:Name>
      <sld:Background>
        <sld:CssParameter name="fill">#F2EFE9</sld:CssParameter>
      </sld:Background>
      <sld:FeatureTypeStyle>
        <sld:Rule>
           ...
        </sld:Rule>  
    </sld:UserStyle>
  </sld:NamedLayer>
</sld:StyledLayerDescriptor>

O resultado do código acima pode ser visto através da imagem abaixo:



Tradicionalmente, já é possível renderizar rótulos com vários scripts, especificando uma longa lista de “família de fontes”, por exemplo:

<sld:Font>
  <sld:CssParameter name="font-family">Noto Sans Regular</sld:CssParameter>
  <sld:CssParameter name="font-family">Noto Sans Adlam Regular</sld:CssParameter>
  <sld:CssParameter name="font-family">Noto Sans Adlam Unjoined Regular</sld:CssParameter>
  <sld:CssParameter name="font-family">Noto Sans Armenian Regular</sld:CssParameter>
  <sld:CssParameter name="font-family">Noto Sans Balinese Regular</sld:CssParameter>
   ...
</sld:Font>

Se todos os nomes de fontes compartilham um prefixo comum, agora é possível ser mais conciso e usar apenas uma função, especificando o nome base comum, permitindo que o GeoServer encontre todas as variantes possíveis, por exemplo:

<sld:Font>
  <sld:CssParameter name="font-family">
    <ogc:Function name="fontAlternatives">
      <ogc:Literal>Noto Sans</ogc:Literal>
    </ogc:Function>
  </sld:CssParameter>
...
</sld:Font>

Como um recurso adicional relacionado à rotulagem, agora pode-se tentar reduzir o tamanho dos rótulos em busca de um local para ajustá-los. A nova opção é chamada “fontShrinkSizeMin” e representa o tamanho mínimo a ser usado. Aqui está um exemplo, os dois polígonos compartilham a mesma definição do TextSymbolizer, em que o tamanho do rótulo foi reduzido para permitir que o rótulo se encaixe ao polígono:



Passando para os simbolizadores de linha, agora é possível fazer uma marca linear ao longo de uma linha. Antes, era apenas possível repeti-la ao longo de uma linha, mas a saída não parecia contínua, especialmente nas curvas. Agora, se você tem uma marca que começa e termina na mesma altura, ela pode literalmente ser tornada contínua ao longo da linha, por exemplo, usando este estilo:

<LineSymbolizer>
         <Stroke>
           <GraphicStroke>
             <Graphic>
               <Mark>                                  
      <WellKnownName>wkt://LINESTRING (0 0, 0 -0.5, 0.5 -0.5, 0.5 0.5, 1 0.5, 1 0)</WellKnownName>
                 <Stroke>
                   <CssParameter name="stroke">0xFF0000
                   </CssParameter>
                   <CssParameter name="stroke-width">2</CssParameter>
                   <CssParameter name="stroke-linecap">round</CssParameter>
                 </Stroke>                                           
               </Mark>            
               <Size>20</Size>                            
             </Graphic>                
           </GraphicStroke>            
         </Stroke>       
<VendorOption name="markAlongLine">true</VendorOption>             
       </LineSymbolizer>

No resultados abaixo você pode não vê-lo a princípio, mas o tamanho da marca (mark) pode ser ligeiramente alterado para se ajustar ao comprimento dos segmentos e, se não for suficiente, é cortado e reconectado)



Para finalizar este post, além das melhorias citadas acima houveram várias pequenas melhorias no desempenho da renderização, que serão especialmente visíveis ao renderizar um mapa complexo, com muitas regras, recursos a serem renderizados e rótulos (como o OpenStreetMap).