GeoServer API设置WMS服务图层的缓存信息
import requests
import json
# 设置缓存时间
data = json.dumps({
"coverage": {
"metadata": {
"entry": [
{
"@key": "cacheAgeMax",
"$": "1800"
},
{
"@key": "cachingEnabled",
"$": "true"
}
]
}
}
})
resp = requests.put(
f"http://localhost:1231/geoserver/rest/workspaces/seaice/coveragestores/{name}/coverages/{name}.json",
data, headers={'Content-Type': 'application/json'}, auth=('admin', 'geoserver'))
print(resp)
点击查看全部代码
from geoserver.catalog import Catalog
import os
import glob
import requests
import json
def AutoPublicWMSLayer():
"""
Python批量发布WMS服务
"""
server_url = 'http://localhost:9090/geoserver'
workspace = 'seaice'
username = "admin"
password = "geoserver"
for tifFile in glob.glob(f'{tif_out_dir}/*.tif'):
# 示例 ./data/date/Tif/ice_thickness_1020.tif
name = os.path.splitext(os.path.basename(tifFile))[0]
# 这里提前在geoserver设置了ice_thickness等样式,这里是根据图层名称取对于样式
style = '_'.join(name.split('_')[:-1])
print(name)
cat = Catalog(f"{server_url}/rest/", username=username, password=password)
cat.create_coveragestore_external_geotiff(name, tifFile, workspace=cat.get_workspace(workspace),
overwrite=True)
# 设置默认样式
response = requests.put(f'{server_url}/rest/layers/{workspace}:{name}',
headers={'Content-Type': 'application/xml'},
data=f"<layer><defaultStyle><name>{workspace}:{style}</name></defaultStyle><queryable>false"
f"</queryable></layer>",
auth=(username, password))
print(response)
# 设置缓存时间
data = json.dumps({
"coverage": {
"metadata": {
"entry": [
{
"@key": "cacheAgeMax",
"$": "1800"
},
{
"@key": "cachingEnabled",
"$": "true"
}
]
}
}
})
resp = requests.put(
f"{server_url}/rest/workspaces/{workspace}/coveragestores/{name}/coverages/{name}.json",
data, headers={'Content-Type': 'application/json'}, auth=(username, password))
print(resp)
def AutoDeleteWMSLayer():
"""
Python批量删除WMS服务
"""
server_url = 'http://localhost:9090/geoserver'
workspace = 'seaice'
username = "admin"
password = "geoserver"
for tifFile in glob.glob(f'{tif_out_dir}/*.tif'):
name = os.path.splitext(os.path.basename(tifFile))[0]
try:
url = f"{server_url}/rest/workspaces/{workspace}/coveragestores/{name}.xml?recurse=true"
response = requests.delete(url, auth=(username, password))
if response.status_code != requests.codes.ok:
raise Exception(response.status_code)
except Exception as e:
print(f"ERROR:{name}>>{e}")
if __name__ == '__main__':
tif_out_dir = '../data/date/Tif'
AutoPublicWMSLayer()
# AutoDeleteWMSLayer()
https://www.osgeo.cn/geoserver-user-manual/rest/index.html#rest
分类:
Python学习
, GIS / geoserver
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!