featureResults


URI

/featureResults[.<format>]

支持的方法

GETPOSTHEAD

父资源

data

子资源

featureResult

介绍

featureResults 资源表示数据查询结果的集合,通过对该资源执行 POST 请求,可以对数据源中的数据进行查询(可跨数据源),获取符合条件的要素集合,对数据进行查询的的步骤如下:

  1. 对 featureResults 执行 POST 请求,在请求体中包含必要的参数,返回一个确定的结果资源(featureResult 资源)的 URI;

  2. 对返回的 URI 进行 GET 操作,得到需要的结果。

进行数据查询,获取要素集合的方式有多种: ID 模式、几何对象的缓冲区模式、缓冲区加属性过滤器模式、空间查询模式、空间查询加属性过滤器的模式、SQL 模式等。

关于本资源的使用方法,可参考开发指南:数据要素的缓冲区查询

支持的方法:

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

资源层次

根资源 data featureResults.htm

HTTP 请求方法

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

http://supermapiserver:8090/iserver/services/data-China400/rest/data/featureResults.rjson

GET 请求

对 featureResults 资源执行 GET 请求,可以获取数据查询结果资源的集合。

请求参数

无。

响应结构

对 featureResults 资源执行 GET 请求,得到的是 featureResult 资源信息的集合,其中单个 featureResult 资源信息的结构如下:

字段 类型 说明
name String featureResult 资源的名称。
path String featureResult 资源的访问路径。
resourceConfigID String 资源配置项 ID。
resourceType String 资源类型。
supportedMediaTypes String[] 数据源资源支持的表述的媒体类型。

示例

在一次成功的数据查询(即对 featureResults 成功执行 POST 请求)后,featureResults 资源里保存了查询结果的信息,对 featureResults 资源执行 GET 请求,返回 rjson 格式的资源描述如下:

[

   {

        "name": "c97763682c0f4eebb392a704ab8273b2_8fe12768e9244972bd4c051fde8b53ee",

        "path": "http://supermapiserver:8090/iserver/services/data-China400/rest/data/featureResults/c97763682c0f4eebb392a704ab8273b2_8fe12768e9244972bd4c051fde8b53ee.rjson",

        "resourceConfigID": null,

        "resourceType": "ArithResultResource",

        "supportedMediaTypes": [

            "application/xml",

            "text/xml",

            "application/json",

            "application/fastjson",

            "application/rjson",

            "text/html",

            "application/jsonp",

            "application/x-java-serialized-object"

        ]

    }

]

POST 请求

根据给定条件,创建一个数据查询结果资源。

请求参数

对 featureResults 资源执行 POST 请求,对数据进行查询(即创建一个 featureResult 资源),需传递参数如下:

URI 中的参数

名称 类型 含义
returnContent boolean true 表示直接返回查询结果,即元素类型为 Feature 的数组;false 表示返回创建的 featureResult 资源的 URI。默认不传时为 false。
fromIndex int 查询结果的最小索引号。
默认值是0,如果该值大于查询结果的最大索引号,则查询结果为空。
toIndex int 查询结果的最大索引号。
如果该值大于查询结果的最大索引号,则以查询结果的最大索引号为终止索引号。

 

请求体参数

在请求体中包含查询参数,如下所示。其中,getFeatureMode 标识了数据查询的模式,数据查询模式不同,所需要的参数也不同。

名称 类型 含义
getFeatureMode GetFeatureMode 【必选参数】
数据查询的模式。有 ID、SQL、BOUNDS、BOUNDS_ATTRIBUTEFILTER、BUFFER、BUFFER_ATTRIBUTEFILTER、SPATIAL、SPATIAL_ATTRIBUTEFILTER 等。
如果对三维点、线、面、模型数据集进行查询,则目前支持的查询模式有 ID、SQL、BOUNDS、BOUNDS_ATTRIBUTEFILTER。
datasetNames String[] 【必选参数】
数据集名称数组(datasourceName:datasetName)。
数据集名称由数据源名和数据集名构成,例如 World 数据源下的 Ocean 数据集,这里的数据集名称就是“World:Ocean”。
ids int[] 要获取的资源的 ID 数组。
当 getFeatureMode(查询模式)为如下值时必选:ID。
bounds Rectangle2D 进行范围查询时,需要设置的矩形坐标范围。
当 getFeatureMode(查询模式)为如下值时必选:BOUNDS、BOUNDS_ATTRIBUTEFILT。
geometry Geometry 几何对象。
当 getFeatureMode(查询模式)为如下值时必选:BUFFER、BUFFER_ATTRIBUTEFILTER、SPATIAL、SPATIAL_ATTRIBUTEFILTER。
bufferDistance double 缓冲区半径,单位和数据集坐标单位一致。
当 getFeatureMode(查询模式)为如下值时必选:BUFFER、BUFFER_ATTRIBUTEFILTER。
attributeFilter String 属性查询过滤器。
当 getFeatureMode(查询模式)为如下值时必选:BUFFER_ATTRIBUTEFILTER、SPATIAL_ATTRIBUTEFILTER、BOUNDS_ATTRIBUTEFILTER。
当 getFeatureMode(查询模式)为 SQL 时,如果在系统配置文件(参见:iServer 配置文件说明)中设置了 SQL 查询表达式中需要屏蔽掉的字符串,那么在属性查询过滤器中一旦发现输入了已经设置的字符串,系统会认为该条查询表达式非法并返回400参数异常,防止 SQL 注入。如果在系统配置文件中没有设置 SQL 查询表达式中需要屏蔽掉的字符串,那么在属性查询过滤器中会默认屏蔽掉分号。
spatialQueryMode SpatialQueryMode 空间查询模式。
当 getFeatureMode(查询模式)为如下值时必选:SPATIAL、SPATIAL_ATTRIBUTEFILTER。
maxFeatures int 进行 SQL 查询时,用于设置服务端返回查询结果条目的数量,默认为1000。
queryParameter QueryParameter 查询参数。
这里已包含设置获取的结果字段名。
当 getFeatureMode(查询模式)为如下值时必选:SQL。
targetPrj PrjCoordSys 动态投影的目标坐标系。
当此参数设置的坐标系统不同于数据的原有坐标系统时, 系统会进行动态投影,并返回动态投影后的查询结果。 参数使用时,需按照PrjCoordSys中的字段结构来构建,同时也支持通过只传递 epsgCode 的方式传入坐标参考系。
建议当目标投坐标系无对应的EpsgCode时,使用此参数。
使用时,需在请求url中添加returnContent参数,并设值为true
targetEpsgCode int 动态投影的目标坐标系对应的EPSG Code。 使用时,需在请求url中添加returnContent参数,并设值为true
targetEpsgCode和targetPrj均可设置动态投影的目标坐标系,当两者都设置时,以targetEpsgCode为准。

响应结构

对 featureResults 资源执行 POST 请求,返回的创建结果的结构如下:

字段 类型 说明
succeed boolean 数据查询是否成功。
newResourceID String 创建的 featureResult 资源的 ID。
newResourceLocation String 创建的 featureResult 资源的 URI。

如果 URI 参数 returnContent 为 true,则返回查询结果要素集合,即 Feature 集合,其中单个元素的描述结构如下:

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

示例1

对示例 featureResults 资源:http://supermapiserver:8090/iserver/services/data-China400/rest/data/featureResults.rjson 执行 POST 请求(returnContent 默认不传,则为 false),对 supermapiserver 服务器上的数据进行查询,根据 ID 来获取要素,请求体中的参数如下:

{

"getFeatureMode":"ID",

"datasetNames":["China400:China_Capital_A_pt"],

"ids":[1, 2, 3]

}

返回 rjson 格式的操作结果表述如下:

{

    "newResourceID": "c97763682c0f4eebb392a704ab8273b2_ce47d97928c3425d895b8a26812ee009",

    "newResourceLocation": "http://localhost:8090/iserver/services/data-China400/rest/data/featureResults/c97763682c0f4eebb392a704ab8273b2_ce47d97928c3425d895b8a26812ee009.rjson",

    "postResultType": "CreateChild",

    "succeed": true

}

示例2:查询并返回动态投影后的要素

对示例 featureResults 资源:http://supermapiservert:8090/iserver/services/data-China400/rest/data/featureResults.rjson?returnContent=true 执行 POST 请求,对 supermapiserver 服务器上的数据进行查询,根据 SQL来获取要素,并转换投影坐标系。请求体中的参数如下:

{

"getFeatureMode":"SQL",

"targetEpsgCode":4326,

"datasetNames":["China400:China_Capital_A_pt"],

"maxFeatures":1000,

"queryParameter":{"sortClause":null, "ids":null, "name":"Capital", "attributeFilter":"SMID%26lt;5", "groupClause":null, "linkItems":null, "joinItems":null, "fields":null}

}

返回 rjson 格式的操作结果表述如下:

{

    "featureCount": 1,

    "featureUriList": [],

    "features": [{

        "ID": 1,

        "fieldNames": [

            "SMID",

            "SMX",

            "SMY",

            "SMLIBTILEID",

            "SMUSERID",

            "SMGEOMETRYSIZE",

            "GB",

            "RNAME",

            "PATH_1",

            "PATH_2",

            "WEATHER",

            "TEMPERATURE",

            "ANNUAL_AVE_HUM_2012",

            "ANNUAL__PRECIPITATION_2012",

            "ANNUAL__AVE_TEMP_2012",

            "MUSEUM_NUM_2012",

            "MUSEUM_LEVEL",

            "MUSEUM_ID",

            "UNIVERSITY_NUM_2012"

        ],

        "fieldValues": [

            "1",

            "1.2958366183660744E7",

            "4852332.623503302",

            "1",

            "0",

            "16",

            "31010",

            "北京",

            "907979",

            "907975",

            "雷阵雨转晴",

            "29℃/19℃",

            "51",

            "733.2",

            "12.9",

            "41",

            "2",

            "81",

            "89"

        ],

        "geometry": {

            "center": {

                "x": 116.406984,

                "y": 39.9062810145467

            },

            "id": 1,

            "parts": [1],

            "points": [{

                "x": 116.406984,

                "y": 39.9062810145467

            }],

            "prjCoordSys": null,

            "style": null,

            "type": "POINT"

        }

    }],

    "totalCount": 1

}

 

HEAD 请求

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

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

请参见