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;
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM