No post “Publicando mapa com dados do OpenStreetMap” citei que existiam duas maneiras de realizar a configuração dos estilos e camadas no GeoServer, e é o que vamos fazer neste post, realizar a configuração automática dos estilos e camadas a partir de um script bash.

Se você usa Linux ou OSX, você pode usar a abordagem automática (se você é bom em scripts do Windows, você provavelmente conseguirá adaptar esta abordagem). Isto requer a utilização do cURL, que está disponível por padrão para Linux, Windows e OSX.

Este script assume que você está usando por padrão um shell bash . Ele usa a API REST do GeoServer para alterar o catálogo de configuração sem a necessidade de que você precise interagir com a interface web administrativa.

1. Digite o diretório que contém os arquivos SLD.
2. Execute o SLD_create.sh conforme o roteiro abaixo. (Se você tiver alterado sua senha “admin”, ou usado nomes diferentes para a workspace ou store, pode ser necessário alterar o script.)

# script to add layer/style information
# for every SLD file in our collection
#
restapi=http://localhost:8080/geoserver/rest
login=admin:geoserver
workspace=osm
store=openstreetmap

for sldfile in *.sld; do

# strip the extension from the filename to use for layer/style names
layername=`basename $sldfile .sld`

# create a new featuretype in the store, assuming the table
# already exists in the database and is named $layername
# this step automatically creates a layer of the same name
# as a side effect
curl -v -u $login -XPOST -H "Content-type: text/xml" \
-d "$layername" \
$restapi/workspaces/$workspace/datastores/$store/featuretypes?recalculate=nativebbox,latlonbbox

# create an empty style object in the workspace, using the same name
curl -v -u $login -XPOST -H "Content-type: text/xml" \
-d "" \
$restapi/workspaces/$workspace/styles

# upload the SLD definition to the style
curl -v -u $login -XPUT -H "Content-type: application/vnd.ogc.sld+xml" \
-d @$sldfile \
$restapi/workspaces/$workspace/styles/$layername

# associate the style with the layer as the default style
curl -v -u $login -XPUT -H "Content-type: text/xml" \
-d "true$layername$workspace" \
$restapi/layers/$workspace:$layername

done

O script executa uma iteração para cada arquivo SLD, usando o nome do arquivo para criar uma camada que corresponde a tabela com mesmo nome no banco de dados, e preenche um estilo associado a ele.

Assim que estiver pronto, clique sobre os “Styles” e “Layers” no menu para ver os resultados.

layers

Este post é uma tradução e adaptação livre do post “Publishing an OpenStreetMap” publicado no site da Boundless.

Fonte: Boundless