Symbology Encoding

Symbology Encoding (SE) é um padrão OpenGIS® que surgiu devido a necessidade dos usuários e softwares de controlar os estilos utilizados para representação de dados geográficos. Até a versão 1.0.0 da especificação Styled Layer Descriptor (SLD), o SE era parte desta. Com o lançamento da versão 1.1.0, houve uma divisão, sendo que:

  • O SE é uma linguagem para definição de estilos;
  • O SLD um padrão que estende o padrão WMSpara permitir o controle do visual

dos mapas gerados por este serviço. Basicamente, um documento SLD associa, para cada camada, elementos definidos na especifiação SE.

O padrão SE é independente de qualquer descrição OGC Web Service. Consequentemente, pode também ser utilizado para descrever a forma de apresentacao dos dados geográficos em sistemas desktop. Um padrão complementar ao SE é o Filter, responsável pela codificação de expressões de restrições. Estas restrições podem ser utilizadas para definir que um determinado estilo deve ser aplicado a um determinado conjunto de objetos que atendem determinada restrição.

Especificação

FeatureTypeStyle

Este elemento define qual o estilo a ser aplicado em uma determinada feição. Um FeatureTypeStyle possui uma ou mais regras.

Rules

As regras são utilizadas para definir de que forma as feições serão apresentadas, dado uma propriedade ou então diferentes escalas do mapa. Um elemento Rule pode ou não possuir uma restrição, neste caso, representada por um elemento Filter. No caso da regra não possuir restrição, a interpretação é que todos os objetos sejam representados utilizando o mesmo estilo.

Segue abaixo o exemplo de uma regra com restrição (número de pistas >= 4) codificada utilizando o padrão Filter.

<se:FeatureTypeStyle>
  <se:Rule>
   <ogc:Filter>
    <ogc:PropertyIsGreaterThanOrEqualTo>
     <ogc:PropertyName>num_lanes<ogc:PropertyName>
     <ogc:Literal>4</ogc:Literal>
    </ogc:PropertyIsGreaterThanOrEqualTo>
   </ogc:Filter>
   Symbolizers goes here...
  </se:Rule>
</se:FeatureTypeStyle>

Cada regra também possui um ou mais elementos do tipo Symbolizer.

Symbolizers

Um symbolizer descreve de que forma uma determinada feição irá aparecer no mapa. Basicamente, este elemento encapsula os parâmetros gráficos de desenho. Cinco tipos são definidos:

  • LineSymbolizer
  • PolygonSymbolizer
  • PointSymbolizer
  • TextSymbolizer
  • RasterSymbolizer

A seguir, é apresentado de forma resumida os parâmetros de cada elemento acima.

Nota: É importante dizer que alguns desses parâmetros (ex.: Graphic) são complexos e devem ser analisados a partir da especificação para maiores detalhes.


LineSymbolizer

Define o estilo de uma linha e encapsula os parâmetros gráficos associados a este tipo de geometria.

Parâmetros:

  • stroke: define a cor da linha;
  • stroke-width: define a expessura;
  • stroke-linecap: define como os pontos finais da linha são desenhados (butt | round | square);
  • stroke-linejoin: define como a junção entre as linhas é desenhada (mitre | round | bevel);
  • stroke-opacity: opacidade da linha [0,1];
  • stroke-dasharray: define o tipo de traço da linha (ex.: traço, traço-ponto, traço-traço-ponto, etc.).
  • Graphic-stroke: define um símbolo que é desenhado sobre a linha;
  • Graphic-fill: define um símbolo que é utilizado para preeencher a linha.

Graphic-fill e Graphic-stroke possuem um elemento Graphic. Basicamente, um Graphic pode ser uma imagem (.png, .gif, etc) - elemento ExternalGraphic - ou uma marca conhecida (square, star, circle) vetorial - elemento Mark. Para maiores detalhes, consultar a especificação.

:!: Para exemplos de LineSymbolizers, clique aqui!


PolygonSymbolizer

Define o estilo de um polígono e encapsula os parâmetros gráficos associados a este tipo de geometria.

Nota: Para o estilo do contorno do polígono, os parâmetros são os mesmo apresentados acima para a linha.

Para o preenchimento, os parâmetros são:

  • fill: define a cor de preenchimento;
  • fill-opacity: define a opacidade do preenchimento [0,1];
  • Graphic-fill: define um símbolo que é utilizado para realizar o preenchimento.

:!: Exemplos de PolygonSymbolizers aqui.


PointSymbolizer

Define o estilo de um ponto e encapsula os parâmetros gráficos associados a este tipo de geometria.

O elemento PointSymbolizer possui um Graphic. Basicamente, os parâmetros são:

  • rotation: indica a rotação do símbolo;
  • size : indica o tamanho do símbolo. Pela especificação, este tamanho corresponde a altura e a largura deve ser calculada de modo a manter a relação de aspecto;
  • opacity: opacitdade do símbolo;
  • Para o tipo ExternalGraphic:
    • format: indica o formato do símbolo (.png, .svg, .gif, etc);
    • onlineResource: caminho para o símbolo (ex.: C:/images/airport.png, www.mysite.br/images/terralib.png);
  • Para o tipo Mark:
    • wellKnownName: um novo bem conhecido para uma marca. Segundo a especificação, deve-se incluir pelo menos square, circle, triangle, star, cross e x.
    • O elemento Mark possui ainda elementos para definição do preenchimento e também do contorno.

:!: Exemplos aqui!


TextSymbolizer

Define o estilo para exibição de textos.

RasterSymbolizer

Renderer

// Something like that...
Renderer::draw(AbstractLayer* layer, Canvas* canvas)
{
  // Gets the style and rules
  Style* style = layer->getStyle();
  std::vector<Rule*> rules = style->getRules();
  for(unsigned int i = 0; i < rules.size(); i++) // for each rule
  {
    Rule* r = rules[i];  
 
    /* Gets the objects that obey the rule's restriction. 
       Case there isn't restriction, gets all objects! */
 
    // Gets the symbolizers
    std::vector<Symbolizer*> symbs = r->getSymbolizers();
    for(unsigned int i = 0; i < symbs.size(); i++) // for each symbolizer
    {
      /* Sets the graphics parameters on canvas
         and for each geometry, let´s draw! */
    }
  }
}

Symbol and Style Libraries


QR Code
QR Code wiki:designimplementation:ogc:se (generated for current page)