GeoSanWebEstilos Page History


Os estilos na Web são representados a partir de arquivos .sld.

Onde ficam os estilos

Caso você possua ícones de estilos especiais estes ficam no diretório definido pela variável de ambiente GEOSERVER_DATA_DIR. Geralmente em C:\data\geoserver.

Em nosso caso no GeoServer estão no diretório C:\ProgramData\Boundless\OpenGeo\geoserver\styles. Veja que existe um arquivo .xml que chama o respectivo .sld

Outro diretório que possuem outras configurações é o C:\ProgramData\Boundless\OpenGeo\geoserver\workspaces\espacodae.

Apontamento de um estilo

Um estilo pode ser apontado a um arquivo com a imagem do símbolo, este pode vir a ser definido da seguinte forma:

#!xml
<se:ExternalGraphic>
    <se:OnlineResource xlink:type="simple" xlink:href="pecas_agua/BLO.SVG"/>
    <se:Format>image/svg+xml</se:Format>
</se:ExternalGraphic>

Desta forma o símbolo de boca de lobo, por exemplo, está localizado no diretório C:\data\geoserver\pecas_agua

Comparação LIKE

Para criar um estilo baseando-se em uma comparação LIKE de forma a limitar a condição em que as features geográficas devem aparecer deve-se tomar cuidado com a sintaxe. No QGIS quando quero comparar uma string contida dentro da outra utilizo o símbolo % no início e/ou final da string que procuro e no GeoExplorer utiliza-se o *.

Desta forma no exemplo abaixo:

#!xml
<sld:Rule>
          <sld:Title>teste</sld:Title>
          <ogc:Filter>
            <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
              <ogc:PropertyName>nodecat_id</ogc:PropertyName>
              <ogc:Literal>*TE*</ogc:Literal>
            </ogc:PropertyIsLike>
          </ogc:Filter>
          <sld:PointSymbolizer>
            <sld:Graphic>
              <sld:Mark>
                <sld:WellKnownName>circle</sld:WellKnownName>
                <sld:Fill>
                  <sld:CssParameter name="fill">#0099cc</sld:CssParameter>
                </sld:Fill>
              </sld:Mark>
              <sld:Size>20</sld:Size>
            </sld:Graphic>
          </sld:PointSymbolizer>
        </sld:Rule>

Ele está procurando na coluna nodecat_id onde a palavra TE se encontra.

#!xml
            <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
              <ogc:PropertyName>nodecat_id</ogc:PropertyName>
              <ogc:Literal>*TE*</ogc:Literal>
            </ogc:PropertyIsLike>

Exemplo de mapa temático com LIKE

A seguir apresenta-se um exemplo em que o mapa temático é apresentado, mostrando o símbolo da NEXUS para os Ts e o símbolo + nome da NEXUS para as curvas com 90 graus.

A tabela utilizada para isso é a seguir:

tema1.PNG

Desta forma foi gerado o seguinte SLD para a realização do temático:

#!xml
<?xml version="1.0" encoding="UTF-8"?><sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" version="1.0.0">
  <sld:NamedLayer>
    <sld:Name>Nos</sld:Name>
    <sld:UserStyle>
      <sld:Name>Nos PNG</sld:Name>
      <sld:Title>simbolos</sld:Title>
      <sld:IsDefault>1</sld:IsDefault>
      <sld:FeatureTypeStyle>
        <sld:Name>tiposNos</sld:Name>
        <sld:Rule>
          <sld:Title>TE</sld:Title>
          <ogc:Filter>
            <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
              <ogc:PropertyName>nodecat_id</ogc:PropertyName>
              <ogc:Literal>*TE*</ogc:Literal>
            </ogc:PropertyIsLike>
          </ogc:Filter>
          <sld:PointSymbolizer>
            <sld:Graphic>
              <sld:ExternalGraphic>
                <sld:OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="file:C:/ProgramData/Boundless/OpenGeo/geoserver/workspaces/WSDAE/styles/pecas_agua/n.png"/>
                <sld:Format>image/png</sld:Format>
              </sld:ExternalGraphic>
              <sld:Size>15</sld:Size>
            </sld:Graphic>
          </sld:PointSymbolizer>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Curva 90</sld:Title>
          <ogc:Filter>
            <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
              <ogc:PropertyName>nodecat_id</ogc:PropertyName>
              <ogc:Literal>*C90*</ogc:Literal>
            </ogc:PropertyIsLike>
          </ogc:Filter>
          <sld:PointSymbolizer>
            <sld:Graphic>
              <sld:ExternalGraphic>
                <sld:OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="file:C:/ProgramData/Boundless/OpenGeo/geoserver/workspaces/WSDAE/styles/pecas_agua/logo.png"/>
                <sld:Format>image/png</sld:Format>
              </sld:ExternalGraphic>
              <sld:Size>15</sld:Size>
            </sld:Graphic>
          </sld:PointSymbolizer>
        </sld:Rule>
      </sld:FeatureTypeStyle>
    </sld:UserStyle>
  </sld:NamedLayer>
</sld:StyledLayerDescriptor>

E o resultado apresentado foi:

tema2.PNG

Veja que onde temos os TEs é mostrado o símbolo e onde temos as conexões de 90 graus C90 é mostrado o símbolo com o nome.

GridSet

No GeoServer os níveis de zoom que são apresentados quando configuramos a visualização de um mapa pelo GeoExplorer são determinados pela configuração do GridSet. Quando maior o número do nível de zoom, mais próximo será visualizado (feito zoom +) no mapa.

gridSet1.PNG

O GridSet deve estar associado a uma camada na configuração dos Tiles da mesma.

SLD

<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
  xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
  xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc"
  xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <NamedLayer>
    <Name>Nome_do_estilo</Name>
    <UserStyle>
      <Title>Título do estilo que aparecerá em Choose Style</Title>
      <FeatureTypeStyle>
        <Rule>
          <Title>título da regra que compõe o estilo, ou seja, como ele irá aparecer, por exemplo: com lable pelo dado de uma coluna, halo, preenchimento e outros detalhes de visualização</Title>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#00cc33
              </CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#000000</CssParameter>
              <CssParameter name="stroke-width">0.5</CssParameter>
            </Stroke>
          </PolygonSymbolizer>

        </Rule>

      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

Considerações

Erro ao salvar modificação no estilo

Sempre ao criar um novo estilo, não associe o mesmo a nenhuma workspace. Caso faça isso não irá conseguir, no GeoExplorer, salvar alterações neste estilo, aparecendo a mensagem: "There was an error saving the style back to the server". Mais informações sobre esta solução, selecione aqui.

Sintaxe Geral

<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
  xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
  xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc"
  xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <NamedLayer>
    <Name>redeAguaPadrao</Name>
    <UserStyle>
      <Title>Linhas de redes de agua</Title> /* este é o nome principal do estilo que aparece para o usuário selecionar no Composer
      <FeatureTypeStyle>
        <Rule>
          <Title>rede de agua</Title> /* nome da regra do estilo
          <LineSymbolizer>
            <Stroke>
               <CssParameter name="stroke">#0000FF</CssParameter> /* cor da linha azul
               <CssParameter name="stroke-width">1</CssParameter> /* largura da linha
            </Stroke>
          </LineSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

Linhas

   <FeatureTypeStyle>
     <Rule>
       <LineSymbolizer>
         <Stroke>
           <CssParameter name="stroke">#0000FF</CssParameter> /* cor da linha azul
           <CssParameter name="stroke-width">3</CssParameter> /* largura da linha
         </Stroke>
       </LineSymbolizer>
     </Rule>
   </FeatureTypeStyle>

Polígonos

   <FeatureTypeStyle>
     <Rule>
       <PolygonSymbolizer>
         <Fill>
           <CssParameter name="fill">#000080</CssParameter> /* cor de preenchimento do polígono
         </Fill>
         <Stroke>
           <CssParameter name="stroke">#FFFFFF</CssParameter> /* cor da linha de divisória do polígono
           <CssParameter name="stroke-width">2</CssParameter> /* largura da linha divisória do polígono
         </Stroke>
       </PolygonSymbolizer>
     </Rule>
   </FeatureTypeStyle>

Transparência em polígonos

<CssParameter name="fill-opacity">0.5</CssParameter>

Temas

<?xml version="1.0" encoding="UTF-8"?><sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" version="1.0.0">
  <sld:NamedLayer>
    <sld:Name>redeAgua</sld:Name>
    <sld:UserStyle>
      <sld:Name>redeAgua</sld:Name>
      <sld:Title>Tipo</sld:Title>
      <sld:FeatureTypeStyle>
        <sld:Name>name</sld:Name>
        <sld:Rule>
          <sld:Title>Primaria</sld:Title>
          <ogc:Filter>
            <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
              <ogc:PropertyName>fluid_type</ogc:PropertyName>
              <ogc:Literal>PRIMARIA</ogc:Literal>
            </ogc:PropertyIsLike>
          </ogc:Filter>
          <sld:LineSymbolizer>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#FF0000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">2</sld:CssParameter>
            </sld:Stroke>
          </sld:LineSymbolizer>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Secundaria</sld:Title>
          <ogc:Filter>
            <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
              <ogc:PropertyName>fluid_type</ogc:PropertyName>
              <ogc:Literal>SECUNDARIA</ogc:Literal>
            </ogc:PropertyIsLike>
          </ogc:Filter>
          <sld:LineSymbolizer>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#0000FF</sld:CssParameter>
            </sld:Stroke>
          </sld:LineSymbolizer>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Desconhecida</sld:Title>
          <ogc:Filter>
            <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
              <ogc:PropertyName>fluid_type</ogc:PropertyName>
              <ogc:Literal>DESCONHECIDA</ogc:Literal>
            </ogc:PropertyIsLike>
          </ogc:Filter>
          <sld:LineSymbolizer>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#00FF00</sld:CssParameter>
            </sld:Stroke>
          </sld:LineSymbolizer>
        </sld:Rule>
      </sld:FeatureTypeStyle>
    </sld:UserStyle>
  </sld:NamedLayer>
</sld:StyledLayerDescriptor>

Anotações de textos (com temas)

<?xml version="1.0" encoding="UTF-8"?><sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" version="1.0.0">
  <sld:NamedLayer>
    <sld:Name>redeAgua</sld:Name>
    <sld:UserStyle>
      <sld:Name>redeAgua</sld:Name>
      <sld:Title>Tipo</sld:Title>
      <sld:FeatureTypeStyle>
        <sld:Name>name</sld:Name>
        <sld:Rule>
          <sld:Title>Primaria</sld:Title>
          <ogc:Filter>
            <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
              <ogc:PropertyName>fluid_type</ogc:PropertyName>
              <ogc:Literal>PRIMARIA</ogc:Literal>
            </ogc:PropertyIsLike>
          </ogc:Filter>
          <sld:LineSymbolizer>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#FF0000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">2</sld:CssParameter>
            </sld:Stroke>
          </sld:LineSymbolizer>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Secundaria</sld:Title>
          <ogc:Filter>
            <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
              <ogc:PropertyName>fluid_type</ogc:PropertyName>
              <ogc:Literal>SECUNDARIA</ogc:Literal>
            </ogc:PropertyIsLike>
          </ogc:Filter>
          <sld:LineSymbolizer>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#0000FF</sld:CssParameter>
            </sld:Stroke>
          </sld:LineSymbolizer>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Desconhecida</sld:Title>
          <ogc:Filter>
            <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
              <ogc:PropertyName>fluid_type</ogc:PropertyName>
              <ogc:Literal>DESCONHECIDA</ogc:Literal>
            </ogc:PropertyIsLike>
          </ogc:Filter>
          <sld:LineSymbolizer>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#00FF00</sld:CssParameter>
            </sld:Stroke>
          </sld:LineSymbolizer>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Comprimento</sld:Title>
          <sld:MaxScaleDenominator>3000.0</sld:MaxScaleDenominator>
          <sld:LineSymbolizer>
            <sld:Stroke>
              <sld:CssParameter name="stroke-opacity">0</sld:CssParameter>
            </sld:Stroke>
          </sld:LineSymbolizer>
          <sld:TextSymbolizer>
            <sld:Label>
              <ogc:PropertyName>gis_length</ogc:PropertyName>
            </sld:Label>
            <sld:Font>
              <sld:CssParameter name="font-family">Serif</sld:CssParameter>
              <sld:CssParameter name="font-size">8</sld:CssParameter>
              <sld:CssParameter name="font-style">normal</sld:CssParameter>
              <sld:CssParameter name="font-weight">normal</sld:CssParameter>
            </sld:Font>
            <sld:LabelPlacement>
              <sld:LinePlacement>
                <sld:PerpendicularOffset>5</sld:PerpendicularOffset>
              </sld:LinePlacement>
            </sld:LabelPlacement>
            <sld:Priority>
              <ogc:PropertyName>observ</ogc:PropertyName>
            </sld:Priority>
            <sld:VendorOption name="followLine">true</sld:VendorOption>
            <sld:VendorOption name="forceLeftToRight">true</sld:VendorOption>
            <sld:VendorOption name="group">no</sld:VendorOption>
            <sld:VendorOption name="labelAllGroup">false</sld:VendorOption>
            <sld:VendorOption name="conflictResolution">false</sld:VendorOption>
            <sld:VendorOption name="spaceAround">2</sld:VendorOption>
            <sld:VendorOption name="autoWrap">10</sld:VendorOption>
          </sld:TextSymbolizer>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Material e diametro</sld:Title>
          <sld:MaxScaleDenominator>3000.0</sld:MaxScaleDenominator>
          <sld:LineSymbolizer>
            <sld:Stroke>
              <sld:CssParameter name="stroke-opacity">0</sld:CssParameter>
            </sld:Stroke>
          </sld:LineSymbolizer>
          <sld:TextSymbolizer>
            <sld:Label>
              <ogc:PropertyName>arccat_id</ogc:PropertyName>
            </sld:Label>
            <sld:Font>
              <sld:CssParameter name="font-family">Serif</sld:CssParameter>
              <sld:CssParameter name="font-size">8</sld:CssParameter>
              <sld:CssParameter name="font-style">normal</sld:CssParameter>
              <sld:CssParameter name="font-weight">normal</sld:CssParameter>
            </sld:Font>
            <sld:LabelPlacement>
              <sld:LinePlacement>
                <sld:PerpendicularOffset>-5</sld:PerpendicularOffset>
              </sld:LinePlacement>
            </sld:LabelPlacement>
          </sld:TextSymbolizer>
        </sld:Rule>
      </sld:FeatureTypeStyle>
    </sld:UserStyle>
  </sld:NamedLayer>
</sld:StyledLayerDescriptor>

Referências

GeoServer

Código de cores HTML

Simbologia gráfica com GeoServer

YSLD

Resimbolização de pontos

Simbologia gráfica com Geoserver

Padrões OSM

Documentação SLD do GeoServer


Last edited by José Maria Villac Pinheiro