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 "" \ $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 " $layername " \ $restapi/layers/$workspace:$layername done true $layername $workspace
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.
Este post é uma tradução e adaptação livre do post “Publishing an OpenStreetMap” publicado no site da Boundless.
Fonte: Boundless