要素的添加

发送反馈


data 及其子资源提供了对数据的查询和操作的功能,本文的例子将介绍往数据集里添加一个要素(Feature)的过程。

查 REST API 可知,往数据集里添加要素要对 features 资源执行 POST 请求。往 China_Capital_P 数据集里添加要素,要对 URI:http://localhost:8090/iserver/services/components-rest/rest/data/datasources/name/World/datasets/name/Capitals/features.json  执行 POST 请求,请求体中要包含要素信息集合,单个要素的结构如下:

名称 类型 含义
ID int 要素的 ID。
fieldNames String[] 要素的属性字段名集合。
fieldValues String[] 要素的属性字段值集合。
geometry Geometry 要素对应的几何对象。

通过 Capitals 数据集资源的表述可知,Capitals 数据集类型为 POINT,所以添加的要素对应的几何对象(geometry)类型也应该为 POINT。

通过 Capitals 资源的 fields 子资源可知,Capitals 数据集中的字段名有:SMID、SMX、SMY、SMLIBTILEID、SMUSERID、CAPITAL、COUNTRY、CAP_POP。

添加要素的 SMUSERID 定为 5000,构建 json 格式的单个要素信息如下(需要说明的是,其中的 ID、SMID、geometry.id 一致,传入的值无效,服务器会在原有数据集 ID 的基础上往后加;SMLIBTILEID 的值是固定的,传入的值也无效):

[{

    "ID": 5000,

    "fieldNames": [

        "SMID",

        "SMX",

        "SMY",

        "SMLIBTILEID",

        "SMUSERID",

        "CAPITAL",

        "COUNTRY",

        "CAP_POP"

    ],

    "fieldValues": [

        "5000",

        "100.56",

        "100.55",

        "5001",

        "5014",

        "示例首都",

        "示例国家",

        "582000.0"

    ],

    "geometry": {

        "id": 5000,

        "parts": null,

        "points": [{

            "x": 100.56,

            "y": 100.55

        }],

        "style": null,

        "type": "POINT"

    }

}]

对 URI:http://localhost:8090/iserver/services/components-rest/rest/data/datasources/name/World/datasets/name/Capitals/features.json?returnContent=true 执行 POST 请求,returnContent=true 表示直接返回创建要素的 ID,请求体中包含以上述要素信息作为一个元素的要素信息集,创建要素如下:

//往 Capitals 数据集中添加要素

function AddFeature()

{

    var commit=getcommit();

    var uri="http://localhost:8090/iserver/services/components-rest/rest/data/datasources/name/World/datasets/name/Capitals/features.rjson";

    //欲增加的要素信息。

    var NewFeature={

    "ID": 5000,

    "fieldNames": [

        "SMID",

        "SMX",

        "SMY",

        "SMLIBTILEID",

        "SMUSERID",

        "CAPITAL",

        "COUNTRY",

        "CAP_POP"

        ],

    "fieldValues": [

        "5000",

        "100.56",

        "100.55",

        "5001",

        "5014",

        "示例首都",

        "示例国家",

        "582000.0"

        ],

    "geometry": {

        "id": 5000,

        "parts": null,

        "points": [{

            "x": 100.56,

            "y": 100.55

        }],

        "style": null,

        "type": "POINT"

        }

    }

    //欲增加的要素信息集合(包含1个要素)

    var entity=[NewFeature];

    commit.open("POST",encodeURI(uri)+"?returnContent=true",false,"","");

    commit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

    commit.send(toJSON(entity));

    

    //解析从服务器端返回的 json 字符串,解析为一个 JavaScript 对象。

    var response = json_parse(commit.responseText, null);       

    //获取用作显示的 Div 容器。

    var container = document.getElementById('container');

    //输出结果

    container.innerHTML="";

    if (response.length>0)

    {

        container.innerHTML+='<p>创建要素成功。</p>';

        container.innerHTML+='<p>添加的要素资源的 ID 为:'+response[0]+'</p>';

    }else{

        container.innerHTML+='<p>创建要素失败。</p>';

    }

}

结果如下:

访问创建的要素资源的 URI:http://localhost:8090/iserver/services/components-rest/rest/data/datasources/name/World/datasets/name/Capitals/features/169.rjson,即可得到新创建的要素资源的 rjson 表述。