<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支持采用异步提交的方式处理要素编辑操作,可不用阻塞当前线程来等待操作完成,而是允许后续操作。可在服务配置文件中设置异步提交。
此外,iServer 还支持创建 GeoJSON 格式的几何对象,请求示例参见:创建 GeoJSON 格式的几何对象
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 | 要素对应的几何对象。
暂不支持Elasticsearch数据源中既有Geo_Point类型,又有Geo_Shape类型的数据。 |
对要素进行删除时(_method=DELETE),需要在请求体中包含欲删除要素的 ID 数组或SQL查询条件,这时,请求体结构如下:
名称 | 类型 | 含义 |
IDs | int[] | 以ID 数组方式删除要素时,需传入要素的 ID 数组。
对于字符串和数值类型的数据,是否加引号均可。 |
attributeFilter | String | 以SQL条件方式删除要素时,需传入 SQL查询条件。
对于Elasticsearch数据,当字段值包含大写时,查询条件不加引号。例如:MAPTN = G12 对于Elasticsearch数据,查询条件暂不支持区分大小写。 |
对 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":
{
"fillGradientOffsetRatioX":0,
"markerSize":2.4,
"fillForeColor":
{
"red":224,
"green":207,
"blue":226,
"alpha":255
},
"fillGradientOffsetRatioY":0,
"markerWidth":0,
"markerAngle":0,
"fillSymbolID":1,
"lineColor":
{
"red":167,
"green":170,
"blue":164,
"alpha":255
},
"markerSymbolID":0,
"lineWidth":0.1,
"markerHeight":0,
"fillOpaqueRate":100,
"fillBackOpaque":true,
"fillBackColor":
{
"red":255,
"green":255,
"blue":255,
"alpha":255
},
"fillGradientMode":"NONE",
"lineSymbolID":0,
"fillGradientAngle":0
},
"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
}
当创建 GeoJSON 格式的几何对象时,请求体中参数书写与创建 JSON 格式的几何对象有所不同,需要添加请求头 X-RequestEntity-ContentType: application/geojson,相关信息请参考:GeoJSON 请求体参数,下面给出具体示例。对示例 features 资源执行 POST 请求:http://supermapiserver:8090/iserver/services/data-World/rest/data/datasources/name/World/datasets/name/Countries/features.rjson。在请求体中包含如下参数:
[
{
"geometry": {
"coordinates": [
[
[
[
10.781665802002,
79.6502685546875
],
[
10.7558326721191,
79.6597137451172
],
[
10.7383308410645,
79.6794281005859
],
[
10.7122192382813,
79.7136077880859
],
[
10.7263870239258,
79.7177581787109
],
[
10.760555267334,
79.7188720703125
],
[
10.8866653442383,
79.7222137451172
],
[
10.9177761077881,
79.7210998535156
],
[
10.945276260376,
79.7191467285156
],
[
10.9819412231445,
79.7119293212891
],
[
11.0349979400635,
79.7008209228516
],
[
11.0716648101807,
79.6727600097656
],
[
11.0761089324951,
79.6627655029297
],
[
10.9527759552002,
79.6527709960938
],
[
10.9227752685547,
79.6510925292969
],
[
10.781665802002,
79.6502685546875
]
]
]
],
"type": "MultiPolygon"
},
"properties": {
"SQKM": "61909.1",
"SMSDRIW": "10.487914",
"SMSDRIS": "74.34305",
"POP_1994": "3148.0",
"SMSDRIN": "80.76416",
"SMID": "1",
"COUNTRY": "",
"CONTINENT": "欧洲1",
"SMAREA": "6.243427603572511E10",
"SMGEOPOSITION": "290488320",
"COLORID": "1",
"SMPERIMETER": "5196430.901327391",
"SQMI": "23903.1",
"SMGEOMETRYSIZE": "35816",
"CAPITAL": "",
"COLOR_MAP": "1",
"SMSDRIE": "33.637497",
"SMUSERID": "0"
},
"type": "Feature"
}
]
创建成功的情况下,得到 rjson 格式的操作结果表述如下:
{
"newResourceID"=669c50d3b25f4ea4a04bbd7a65ec8395_02d0affdd55547dfb5fa2cd5e43cf33e,
"newResourceLocation"=http://localhost:8090/iserver/services/data-World/rest/data/featureResults/669c50d3b25f4ea4a04bbd7a65ec8395_02d0affdd55547dfb5fa2cd5e43cf33e.rjson,
"postResultType=CreateChild,
"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}
对 URI:http://supermapiserver:8090/iserver/services/data-es/rest/data/datasources/name/location/datasets/supermap/features.json?_method=DELETE&deleteMode=SQL执行 POST 请求,在请求体中包含如下参数,删除 MAPTN = G4805200620 的参数:
{"attributeFilter":"MAPTN = G4805200620"}
删除成功,得到 rjson 格式的操作结果表述如下:
{"succeed": true}
返回跟 GET 请求一样的 HTTP 响应头,但是没有响应实体。可以在不必传输整个响应内容的情况下,获取包含在响应消息头中的元数据信息。元数据信息包括媒体类型,字符编码,压缩编码,实体内容长度等。
HEAD 请求可以用来判断 features 资源是否存在,或者客户端是否有权限访问 features 资源。通过对加.<format>的 URI 执行 HEAD 请求,还可以快速判断 features 资源是否支持<format>格式的表述。