1、why?
当geoserver上传了多个数据生成多个图层时,想要在发布时将所有相关图层合并为图层组时,通过web界面一个一个选择图层就异常痛苦了。
2、How?
geoserver提供了API可以通过代码实现批量上传,本文采用python来实现。
本文测试环境:
geoserver 2.13.2
python 3.7
首先,安装python第三方库gsconfg-py3(对应python3版本)
安装以后,python代码如下,实现了将所有dem的图层(接《geoserver批量上传数据》创建的图层)创建为一个图层组。运行完成后可在web界面再做调整。
from geoserver.catalog import Catalog
geourl = "http://192.168.1.200:5433/geoserver/rest/" # the url of geoserver
geocat = Catalog(geourl) # create a Catalog object
workspace = geocat.get_workspace("Global") # workspace name
layers = geocat.get_layers()
sytle = "dem"
syls = []
lys = []
for layer in layers:
if layer.name.endswith('_dem.tif'):
lys.append(layer.name)
syls.append(sytle)
layersgroup = geocat.create_layergroup('test', lys, syls, None, workspace.name)
geocat.save(layersgroup, content_type="application/xml")