geoserver API设置图层样式

准备条件

  • 图层已发布完毕。存在图层名,如设置了工作区,则为“工作区:图层名”
  • 样式已创建完毕。存在样式名,如设置了工作区,则为“工作区:样式名”

使用REST API

Geoserver REST API地址:点我
使用layers图层操作API,使用PUT方法修改图层属性:

观察API参数,xml形式的参数以layer开头:

切换到application/json形式,注意此时xml中的layer却在此处消失了:

但实际调用的时候,却要将参数用layer包裹,使用postman的情况如下:

defaultStyle.name设为已经创建的样式名即可

注意geoserver的用户验证方式:

代码调用方式

/**
 * @method 更改图层属性
 * @param {string} workspace 工作区
 * @param {string} layername 图层名
 * @param {object} value 更新的属性
 */
async function modify_layer(workspace, layername, value) {
    try{
        if(!_.isObject(value))      //_ 为lodash
            throw Error('参数格式错误,value应为对象');
        await request({
            method: 'PUT',
            // config.geoserver_url为geoserver地址(如果是本机,则为http://127.0.0.1:8080/geoserver)
            uri: config.geoserver_url + `/rest/layers/${workspace}:${layername}`,
            headers: {
                'Content-Type': 'application/json',
                 // config.geoserver_auth为geoserver账号名与密码以(账号名:密码)的形式经过base64加密后的字符串
                 // 如果初始账号admin与初始密码geoserver没变,则geoserver_auth为Basic YWRtaW46Z2Vvc2VydmVy
                'Authorization': config.geoserver_auth
            },
            body: {
                "layer": value
            },
            json: true
        });
    }catch(err) {
        if(err) throw err;
    }
}
posted @ 2020-05-08 16:17  Mr_Kahn  阅读(1737)  评论(0编辑  收藏  举报