features


URI

<dataset_uri>/features[.<format>]

支持的方法

GETPOSTHEAD

父资源

dataset

子资源

feature

介绍

features 资源表示一个数据集中所有要素(feature)的集合。通过对 features 资源执行 GET 请求可以获取数据集中的要素列表,当数据集为点、线、面数据集、文本数据集、复合数据集或纯属性表数据集时,对 features 资源执行 POST 请求可以完成对数据集中的要素进行添加、删除或修改。

关于本资源的使用方法,可参考开发指南:要素的添加

支持的方法:

支持的表述格式:RJSON、JSON、HTML、XML、KML、GeoRSS、GeoJSON。

注:当要素类型为点、线、面时,GeoJSON表述可用。

资源层次

根资源 data datasources.htm datasource.htm datasets.htm features.htm dataset.htm

HTTP 请求方法

对如下 URI 执行 HTTP 请求,以 rjson 输出格式为例加以说明,其中,supermapiserver 是服务器名。

http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries/features.rjson

GET 请求

获取要素(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 服务,默认显示效果如下图:

POST 请求

对要素集中的要素进行添加、删除(_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 请求。

  1. 创建新的要素

对 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

}

  1. 修改要素

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

  1. 通过ID数组删除要素

对 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 资源都已经不存在。

  1. 通过 SQL 查询条件删除要素

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

HEAD 请求

返回跟 GET 请求一样的 HTTP 响应头,但是没有响应实体。可以在不必传输整个响应内容的情况下,获取包含在响应消息头中的元数据信息。元数据信息包括媒体类型,字符编码,压缩编码,实体内容长度等。

HEAD 请求可以用来判断 features 资源是否存在,或者客户端是否有权限访问 features 资源。通过对加.<format>的 URI 执行 HEAD 请求,还可以快速判断 features 资源是否支持<format>格式的表述。

请参见