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:
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:
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.
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
Simbologia gráfica com GeoServer