Hi Kris,
No problem, I stumbled on your message while looking for a solution to a
different problem regarding layergroups and the REST API. Good to hear you got
the layer group copy to work.
You can copy over styles to a different workspace in two steps:
1. Get the SLD file for the style you want to copy:
GET http://<HOST>/geoserver/rest/workspaces/workspace_1/styles/my_style.sld
Response body (truncated):
<StyledLayerDescriptor 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"
xsi:schemaLocation="http://www.opengis.net/sld
http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
version="1.0.0">
<NamedLayer>
<Name>my_style</Name>
<UserStyle>
<Name>my_style</Name>
…
…
</NamedLayer>
</StyledLayerDescriptor>
2. Create a new style with the same name in the desired workspace (see also
http://docs.geoserver.org/stable/en/user/rest/api/styles.html#styles-format),
by sending POST request with the SLD in the request body (do forget to set the
correct content-type header for the request):
POST http://<HOST>/geoserver/rest/workspaces/workspace_2/styles
Content-Type: application/vnd.ogc.sld+xml
Request body:
<StyledLayerDescriptor 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"
xsi:schemaLocation="http://www.opengis.net/sld
http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
version="1.0.0">
<NamedLayer>
<Name>my_style</Name>
<UserStyle>
<Name>my_style</Name>
<Title>my_style</Title>
<FeatureTypeStyle>
<Rule>
<PolygonSymbolizer>
<Stroke>
<CssParameter
name="stroke">#6E6E6E</CssParameter>
<CssParameter
name="stroke-width">0.1</CssParameter>
</Stroke>
</PolygonSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
On successful creation the response headers will contain a Location header,
specifying the url of the newly created style. In this case
http://<HOST>/geoserver/rest/workspaces/workspace_2/styles/my_style.
If you want to change the name of the style, you will need to edit the SLD
request body before sending it. In that case change the UserStyle/Name element
in the SLD.
Cheers,
Anton
> On 1 Feb 2018, at 05:37, Kris Powell <[email protected]> wrote:
>
> Hi Anton,
>
> I really appreciate the response. I now have layerGroups copying to the new
> workspaces nicely.
>
> I retrieve all coverageStores, coverages, dataStores, featureTypes, and
> layerGroups from a workspace, modify the name and hrefs where necessary, then
> post back to the newly created workspace's endpoints.
> Everything works well, except the styles - for some reason the styles aren't
> copied over to the cloned layers. Have you had any success with layer styles?
>
> Thanks and regards,
> Kris
> From: Anton Bakker <[email protected]>
> Sent: Thursday, 1 February 2018 3:03:49 AM
> To: Kris Powell
> Cc: [email protected]
> Subject: Re: [Geoserver-users] Problem with creating LayerGroup using REST api
>
> Hi Kris,
>
> For me the following request body works to create a new layergroup (on
> GeoServer 2.12, but should work for other versions as well):
>
> <layerGroup>
> <name>group_c</name>
> <mode>CONTAINER</mode>
> <title>group_c</title>
> <abstractTxt></abstractTxt>
> <workspace>
> <name>charts</name>
> </workspace>
> <publishables>
> <published type="layer">
> <name>charts:world_cities</name>
> <atom:link xmlns:atom=“http://www.w3.org/2005/Atom
> <http://www.w3.org/2005/Atom>” rel=“alternate"
> href="http://<host>/geoserver/rest/layers/charts:world_cities.xml"
> type="application/xml" />
> </published>
> <published type="layer">
> <name>charts:usa_states</name>
> <atom:link xmlns:atom="http://www.w3.org/2005/Atom
> <http://www.w3.org/2005/Atom>" rel="alternate"
> href="http://<host>/geoserver/rest/layers/charts:usa_states.xml"
> type="application/xml" />
> </published>
> </publishables>
> <styles>
> <style />
> <style />
> </styles>
> <bounds>
> <minx>-124.731422</minx>
> <maxx>151.206955</maxx>
> <miny>-37.817532</miny>
> <maxy>59.916269143887</maxy>
> <crs class="projected">EPSG:4326</crs>
> </bounds>
> </layerGroup>
>
> So the published/name element should use the following format
> <workspace>:<layername>, the same is true for the url of that layer. Hope
> this helps!
>
> Kind regards,
> Anton Bakker
> GeoCat BV
>
>
>> On 25 Jan 2018, at 02:34, Kris Powell <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>> Hi Tam,
>>
>>
>> Did you ever find out more about this issue?
>>
>> I've been building a tool to clone existing workspaces including stores,
>> layers and layergroups, and I'm running into the same problem you mention
>> here. The response I receive from geoserver is:
>>
>> `Layer group within a workspace (testworkspace) can not contain resources
>> from other workspace: existingworkspace`
>>
>> when I POST a new layerGroup to
>> `.../rest/workspaces/testworkspace/layergroups`
>>
>>
>> Any light you or other subscribers could shed on this would be very helpful.
>>
>> Regards,
>> Kris
>>
>>
>>
>> --
>> Sent from: http://osgeo-org.1560.x6.nabble.com/GeoServer-User-f3786390.html
>> <http://osgeo-org.1560.x6.nabble.com/GeoServer-User-f3786390.html>
>>
>> ------------------------------------------------------------------------------
>> Check out the vibrant tech community on one of the world's most
>> engaging tech sites, Slashdot.org <http://slashdot.org/>!
>> http://sdm.link/slashdot <http://sdm.link/slashdot>
>> _______________________________________________
>> Geoserver-users mailing list
>>
>> Please make sure you read the following two resources before posting to this
>> list:
>> - Earning your support instead of buying it, but Ian Turton:
>> http://www.ianturton.com/talks/foss4g.html#/
>> <http://www.ianturton.com/talks/foss4g.html#/>
>> - The GeoServer user list posting guidelines:
>> http://geoserver.org/comm/userlist-guidelines.html
>> <http://geoserver.org/comm/userlist-guidelines.html>
>>
>> If you want to request a feature or an improvement, also see this:
>> https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer
>>
>> <https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer>
>>
>>
>> [email protected]
>> <mailto:[email protected]>
>> https://lists.sourceforge.net/lists/listinfo/geoserver-users
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Geoserver-users mailing list
Please make sure you read the following two resources before posting to this
list:
- Earning your support instead of buying it, but Ian Turton:
http://www.ianturton.com/talks/foss4g.html#/
- The GeoServer user list posting guidelines:
http://geoserver.org/comm/userlist-guidelines.html
If you want to request a feature or an improvement, also see this:
https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-users