GeoServer API设置WMS服务图层的缓存信息
  ltERVYe6WHLK 2023年12月04日 54 0
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)

GeoServer API设置WMS服务图层的缓存信息_json

点击查看全部代码

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()

GeoServer API设置WMS服务图层的缓存信息_xml_02

GeoServer API设置WMS服务图层的缓存信息_json_03

https://www.osgeo.cn/geoserver-user-manual/rest/index.html#rest



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月04日 0

暂无评论

推荐阅读
ltERVYe6WHLK