<dataset_uri>/features[.<format>]
features 资源表示一个数据集中所有要素(feature)的集合。通过对 features 资源执行 GET 请求可以获取数据集中的要素列表,当数据集为点、线、面数据集、文本数据集、复合数据集或纯属性表数据集时,对 features 资源执行 POST 请求可以完成对数据集中的要素进行添加、删除或修改。
关于本资源的使用方法,可参考开发指南:要素的添加。
支持的方法:
支持的表述格式:RJSON、JSON、HTML、XML、KML、GeoRSS、GeoJSON。
注:当要素类型为点、线、面时,GeoJSON表述可用。
对如下 URI 执行 HTTP 请求,以 rjson 输出格式为例加以说明,其中,supermapiserver 是服务器名。
http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries/features.rjson
获取要素(feature)信息集合。包括数据集中要素的个数、要素对应的几何对象的类型、各个要素的 URI 等信息。
对 features 资源执行 GET 请求,获取数据集中的要素信息集合,可以在 URI 中包含如下参数:
名称 | 类型 | 含义 |
fromIndex | int | 要素信息集合的起始索引号,默认值是0 |
toIndex | int | 要素信息集合的终止索引号,默认值是19 |
当然,也可以不传任何参数,默认地,对 features 资源执行 GET 请求,将返回索引号范围为 0-19 的要素信息集合。
对 features 资源执行 GET 请求,返回的资源表述的结构如下(资源表述在响应消息的实体主体里):
字段 | 类型 | 说明 |
featureCount | int | 数据集中要素的总数量。 |
geometryType | GeometryType | 要素的类型。 |
childUriList | List<String> | 要素(feature 资源)的 URI 列表。 |
startIndex | int | 要素集合中要素的起始位置,其值与请求时设置的 fromIndex 相等。 |
对示例 features 资源:http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries/features.rjson 执行 GET 请求,在 URI 中传入 fromIndex 和 toIndex 参数如下:
http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries/features.rjson?fromIndex=50&toIndex=55
则返回 rjson 格式的资源表述如下:
{
"childUriList": [
"http://supermapiserver:8090/iserver/services/data-world/rest/data/feature/0-13-50",
"http://supermapiserver:8090/iserver/services/data-world/rest/data/feature/0-13-51",
"http://supermapiserver:8090/iserver/services/data-world/rest/data/feature/0-13-52",
"http://supermapiserver:8090/iserver/services/data-world/rest/data/feature/0-13-53",
"http://supermapiserver:8090/iserver/services/data-world/rest/data/feature/0-13-54",
"http://supermapiserver:8090/iserver/services/data-world/rest/data/feature/0-13-55"
],
"featureCount": 247,
"geometryType": "REGION"
}
对示例 features 资源:http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Capitals/features.kml 执行 GET 请求,返回 kml 格式表述。在 GoogleEarth 中访问此 kml 服务,默认显示效果如下图:
对要素集中的要素进行添加、删除(_method=DELETE)、修改(_method=PUT)操作(当所在数据集为点/线/面数据集、文本数据集、复合数据集或纯属性表数据集时)。iServer支持采用异步提交的方式处理要素编辑操作,可不用阻塞当前线程来等待操作完成,而是允许后续操作。可在服务配置文件中设置异步提交。
features 资源表示的是数据集中的要素集合。默认地,对 features 资源执行 POST 请求,是在创建新的要素。但可以在 features 资源的 URI 中包含如下参数来控制 POST 请求的预期是删除要素还是修改要素。
注:三维模型数据集不支持创建要素。
URI 中的参数如下:
名称 | 类型 | 含义 |
isUseBatch | boolean | 【可选参数】
是否使用批量添加要素功能,要素添加时有效。 批量添加能够提高要素编辑效率。 true 表示批量添加;false 表示不使用批量添加。默认不传时为 false。 |
returnContent | boolean | 【可选参数】
要素添加时,isUseBatch 不传或传为 false 的情况下有效。 true 表示直接返回新创建的要素的 ID 数组;false 表示返回创建的 featureResult 资源的 URI。默认不传时为 false。 |
_method | String | POST 请求应实现的功能。 可能的值有:GET、PUT、POST、DELETE、HEAD,分别表示实现对应 HTTP
请求的功能。
这里,_method 可取 DELETE 或 PUT,分别表示删除要素或修改要素。 |
对 features 资源执行 POST 请求,对要素进行添加(无 _method 参数)或修改(_method=PUT)时,需要在请求体中包含添加/修改的要素信息集合,其中单个要素信息的结构如下:
名称 | 类型 | 含义 |
fieldNames | String[] | 要素的属性字段名集合。其中,系统字段是创建数据集和要素时系统默认生成的字段,用户不能进行编辑,字段内容除了 SMUSERID 外都是不能修改的,关于不同数据集系统字段的介绍,请参考fields资源。 |
fieldValues | String[] | 要素的属性字段值集合。 |
geometry | Geometry | 要素对应的几何对象。 |
对要素进行删除时(_method=DELETE),需要在请求体中包含欲删除要素的 ID 数组或SQL查询条件,这时,请求体结构如下:
名称 | 类型 | 含义 |
IDs | int[] | 以ID 数组方式删除要素时,需传入要素的 ID 数组。 |
attributeFilter | String | 以SQL条件方式删除要素时,需传入 SQL查询条件。 |
对 features 资源执行 POST 请求,对要素集中的要素进行添加、修改或删除,返回操作结果的表述结构如下:
字段 | 类型 | 说明 |
succeed | boolean | 操作是否成功。 |
newResourceID | String | 创建的 featureResult 资源的 ID。 |
newResourceLocation | String | 创建的 featureResult 资源的 URI。
isUseBatch 为 true 时无效。 |
error | HttpError | 出错信息,如果操作成功,则没有本字段。 |
对示例 features 资源,即 World 数据源的 Countries 数据集中的要素集合,执行 POST 请求。
对 URI:http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries/features.rjson?isUseBatch=true 执行 POST 请求,在请求体中包含如下参数:
[
{
"fieldNames": [
"SMID",
"SMSDRIW",
"SMSDRIN",
"SMSDRIE",
"SMSDRIS",
"SMUSERID",
"SMAREA",
"SMPERIMETER",
"SMGEOMETRYSIZE",
"SQKM",
"SQMI",
"COLOR_MAP",
"CAPITAL",
"COUNTRY",
"POP_1994",
"CONTINENT"
],
"fieldValues": [
"22",
"-7.433472633361816",
"62.35749816894531",
"-6.38972282409668",
"61.388328552246094",
"6",
"0.25430895154659083",
"5.743731026651685",
"4500",
"1474.69",
"569.38",
"5",
"示例首都 a",
"示例国家 a",
"47067.0",
"亚洲"
],
"geometry": {
"id": 22,
"parts": [
3
],
"points": [
{
"x": -40,
"y": 60
},
{
"x": -45,
"y": 62
},
{
"x": -40,
"y": 55
},
{
"x": -40,
"y": 60
}
],
"style": null,
"type": "REGION"
}
}
],
[
{
"fieldNames": [
"SMID",
"SMSDRIW",
"SMSDRIN",
"SMSDRIE",
"SMSDRIS",
"SMUSERID",
"SMAREA",
"SMPERIMETER",
"SMGEOMETRYSIZE",
"SQKM",
"SQMI",
"COLOR_MAP",
"CAPITAL",
"COUNTRY",
"POP_1994",
"CONTINENT"
],
"fieldValues": [
"23",
"-7.433472633361816",
"62.35749816894531",
"-6.38972282409668",
"61.388328552246094",
"6",
"0.25430895154659083",
"5.743731026651685",
"4500",
"1474.69",
"569.38",
"5",
"示例首都 b",
"示例国家 b",
"47067.0",
"亚洲"
],
"geometry": {
"id": 23,
"parts": [
3
],
"points": [
{
"x": -40,
"y": 60
},
{
"x": -45,
"y": 62
},
{
"x": -40,
"y": 55
},
{
"x": -40,
"y": 60
}
],
"style": null,
"type": "REGION",
"prjCoordSys":null
}
}
]
创建成功的情况下,得到 rjson 格式的操作结果表述如下:
{
"newResourceLocation": "null.rjson",
"postResultType": "CreateChild",
"succeed": true
}
对 URI:http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries/features.rjson 执行 POST 请求,在请求体中包含如下参数:
[
{
"fieldNames": [
"SMID",
"SMSDRIW",
"SMSDRIN",
"SMSDRIE",
"SMSDRIS",
"SMUSERID",
"SMAREA",
"SMPERIMETER",
"SMGEOMETRYSIZE",
"SQKM",
"SQMI",
"COLOR_MAP",
"CAPITAL",
"COUNTRY",
"POP_1994",
"CONTINENT"
],
"fieldValues": [
"22",
"-7.433472633361816",
"62.35749816894531",
"-6.38972282409668",
"61.388328552246094",
"6",
"0.25430895154659083",
"5.743731026651685",
"4500",
"1474.69",
"569.38",
"5",
"示例首都",
"示例国家",
"47067.0",
"亚洲"
],
"geometry": {
"id": 22,
"parts": [
3
],
"points": [
{
"x": -40,
"y": 60
},
{
"x": -45,
"y": 62
},
{
"x": -40,
"y": 55
},
{
"x": -40,
"y": 60
}
],
"style": null,
"type": "REGION",
"prjCoordSys":null
}
}
]
创建成功的情况下,得到 rjson 格式的操作结果表述如下:
{
"newResourceID": "1",
"newResourceLocation": "http://supermapiserver:8090/iserver/services/data-world/rest/data/featureResults/1.rjson",
"succeed": true
}
当数据集为EPS类型,对features要素执行POST请求时,需要为每个点添加属性信息,包括"name"和“type”。例如:对示例 features 资源执行 POST 请求:http://supermapiserver:8090/iserver/services/data-China400/rest/data/datasources/EPS_all/datasets/PointEPS/features.rjson。在请求体中包含如下参数:
[
{
"ID": 1,
"fieldNames": [
"SMID",
"SMSDRIW",
"SMSDRIN",
"SMSDRIE",
"SMSDRIS",
"SMUSERID",
"SMGEOMETRYSIZE",
"SMGEOPOSITION"
],
"fieldValues": [
"1",
"525.26154",
"460.002",
"525.26154",
"460.002",
"0",
"0",
"0"
],
"geometry": {
"center": null,
"id": 1,
"parts": [1],
"points": [{
"name": "point1",
"type": "None",
"x": 525.261530541407,
"y": 460.00202477444,
"z": 0
}],
"prjCoordSys": null,
"style": null,
"type": "POINTEPS"
}
}
]
注:当创建点要素时,可不填入“type"的值。当创建线要素和面要素时,则需要填入每个点的“type”值。详细请参考:PointEPSType
创建成功的情况下,得到 rjson 格式的操作结果表述如下:
{
"newResourceID": "1",
"newResourceLocation": "http://supermapiserver:8090/iserver/services/data-China400/rest/data/featureResults/1.rjson",
"succeed": true
}
对 URI:http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name//datasets/name/Countries/features.rjson?_method=PUT 执行POST 请求,修改几何对象,在请求体中包含如下参数:
[
{
"fieldNames": [
"SMID",
"SMSDRIW",
"SMSDRIN",
"SMSDRIE",
"SMSDRIS",
"SMUSERID",
"SMAREA",
"SMPERIMETER",
"SMGEOMETRYSIZE",
"SQKM",
"SQMI",
"COLOR_MAP",
"CAPITAL",
"COUNTRY",
"POP_1994",
"CONTINENT"
],
"fieldValues": [
"22",
"-7.433472633361816",
"62.35749816894531",
"-6.38972282409668",
"61.388328552246094",
"6",
"0.25430895154659083",
"5.743731026651685",
"4500",
"1474.69",
"569.38",
"5",
"示例首都",
"示例国家",
"47067.0",
"欧洲"
],
"geometry": {
"id": 22,
"parts": [
3
],
"points": [
{
"x": -40,
"y": 60
},
{
"x": -45,
"y": 70
},
{
"x": -40,
"y": 55
},
{
"x": -40,
"y": 60
}
],
"style": null,
"type": "REGION",
"prjCoordSys":null
}
}
]
修改成功的情况下,得到 rjson 格式的操作结果表述如下:
{"succeed": true}
对于EPS类型的数据集,也可通过PUT请求修改几何对象。对URI:http://supermapiserver:8090/iserver/services/data-China400/rest/data/datasources/EPS_all/datasets/PointEPS/features.rjson?_method=PUT。在请求体中包含如下参数:
[
{
"ID": 1,
"fieldNames": [
"SMID",
"SMSDRIW",
"SMSDRIN",
"SMSDRIE",
"SMSDRIS",
"SMUSERID",
"SMGEOMETRYSIZE",
"SMGEOPOSITION"
],
"fieldValues": [
"1",
"525.26154",
"460.002",
"525.26154",
"460.002",
"0",
"0",
"0"
],
"geometry": {
"center": null,
"id": 1,
"parts": [1],
"points": [{
"name": "point1",
"type": "None",
"x": 515.261530541407,
"y": 436.00202477444,
"z": 0
}],
"prjCoordSys": null,
"style": null,
"type": "POINTEPS"
}
}
]
修改成功的情况下,得到 rjson 格式的操作结果表述如下:
{"succeed": true}
对 URI:http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries/features.rjson?_method=DELETE &deleteMode=IDS执行 POST 请求,在请求体中包含如下参数,删除 ID 为51、52的参数:
[51,52]
删除成功,返回 rjson 格式的操作结果表述如下:
{"succeed": true}
此时,对 ID 为51或52的 feature 资源执行 GET 请求(参见 feature 资源),可以发现 ID 为51和52的 feature 资源都已经不存在。
对 URI:http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries/features.rjson?_method=DELETE &deleteMode=SQL执行 POST 请求,在请求体中包含如下参数,删除 SmID<10 的参数:
{"attributeFilter":"SmID %26lt; 10"}
删除成功,得到 rjson 格式的操作结果表述如下:
{"succeed": true}
返回跟 GET 请求一样的 HTTP 响应头,但是没有响应实体。可以在不必传输整个响应内容的情况下,获取包含在响应消息头中的元数据信息。元数据信息包括媒体类型,字符编码,压缩编码,实体内容长度等。
HEAD 请求可以用来判断 features 资源是否存在,或者客户端是否有权限访问 features 资源。通过对加.<format>的 URI 执行 HEAD 请求,还可以快速判断 features 资源是否支持<format>格式的表述。