要素的添加 |
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 表述。