featureResults


URI

/featureResults[.<format>]

支持的方法

GETPOSTHEAD

父资源

data

子资源

featureResult

介绍

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

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

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

进行数据查询,获取要素集合的方式有多种: ID 模式、几何对象的缓冲区模式、缓冲区加属性过滤器模式、空间查询模式、空间查询加属性过滤器的模式、SQL 模式等。若数据来源为ElasticSearch 服务,则获取要素的方式还包括:聚合查询模式。

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

支持的方法:

支持的表述格式: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。
Elasticsearch数据查询支持的数据类型:Geo_Point、Geo_Shape。
对于Elasticsearch数据,当数据为字符串类型,需加引号。
bounds Rectangle2D 进行范围查询时,需要设置的矩形坐标范围。
当 getFeatureMode(查询模式)为如下值时必选:BOUNDS、BOUNDS_ATTRIBUTEFILT。
Elasticsearch数据查询支持的数据类型:Geo_Point、Geo_Shape。
geometry Geometry 几何对象。
当 getFeatureMode(查询模式)为如下值时必选:BUFFER、BUFFER_ATTRIBUTEFILTER、SPATIAL、SPATIAL_ATTRIBUTEFILTER。
bufferDistance double 缓冲区半径,单位和数据集坐标单位一致。
当 getFeatureMode(查询模式)为如下值时必选:BUFFER、BUFFER_ATTRIBUTEFILTER。
不支持Elasticsearch数据来源。
attributeFilter String 属性查询过滤器。
当 getFeatureMode(查询模式)为如下值时必选:BUFFER_ATTRIBUTEFILTER、SPATIAL_ATTRIBUTEFILTER、BOUNDS_ATTRIBUTEFILTER。
当 getFeatureMode(查询模式)为 SQL 时,如果在系统配置文件(参见:iServer 配置文件说明)中设置了 SQL 查询表达式中需要屏蔽掉的字符串,那么在属性查询过滤器中一旦发现输入了已经设置的字符串,系统会认为该条查询表达式非法并返回400参数异常,防止 SQL 注入。如果在系统配置文件中没有设置 SQL 查询表达式中需要屏蔽掉的字符串,那么在属性查询过滤器中会默认屏蔽掉分号。
spatialQueryMode SpatialQueryMode 空间查询模式。
当 getFeatureMode(查询模式)为如下值时必选:SPATIAL、SPATIAL_ATTRIBUTEFILTER。
Elasticsearch数据查询支持的数据类型:Geo_Point、Geo_Shape
当数据类型为Geo_Point时,支持的空间查询模式仅为CONTAIN。
当数据类型为Geo_Shape时,支持的空间查询模式CONTAIN、WITHIN、INTERSECT、DISJOINT。
maxFeatures int 进行 SQL 查询时,用于设置服务端返回查询结果条目的数量,默认为1000。
queryParameter QueryParameter 查询参数。
这里已包含设置获取的结果字段名。
当 getFeatureMode(查询模式)为如下值时必选:SQL。
Elasticsearch数据查询支持的数据类型:Geo_Point、Geo_Shape。
对于Elasticsearch数据,当字段值包含大写时,查询条件不加引号。
Elasticsearch数据,查询条件暂不支持区分大小写。例如:当查询条件为 NAME=G12时 ,NAME=G12或NAME=g12符合条件的结果均会查询。
targetPrj PrjCoordSys 动态投影的目标坐标系。
当此参数设置的坐标系统不同于数据的原有坐标系统时, 系统会进行动态投影,并返回动态投影后的查询结果。 参数使用时,需按照PrjCoordSys中的字段结构来构建,同时也支持通过只传递 epsgCode 的方式传入坐标参考系。
建议当目标投坐标系无对应的EpsgCode时,使用此参数。
使用时,需在请求url中添加returnContent参数,并设值为true
targetEpsgCode int 动态投影的目标坐标系对应的EPSG Code。 使用时,需在请求url中添加returnContent参数,并设值为true
targetEpsgCode和targetPrj均可设置动态投影的目标坐标系,当两者都设置时,以targetEpsgCode为准。

aggregations

AggregationParameter 聚合查询参数(仅支持Elasticsearch数据源)。
目前支持FilterAggParameter过滤聚合查询和GeoHashGridAggParameter格网聚合查询。
Elasticsearch数据查询支持的数据类型:Geo_Point、Geo_Shape。

hasGeometry

boolean 是否返回空间几何对象信息。默认为true。当 getFeatureMode 不为 ID 时,且 URL 参数 returnContent=true 时,hasGeometry 有效。

响应结构

对 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 要素对应的几何对象。当hasGeometry为false时,返回的geometry的值为null。

示例1

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

{

"getFeatureMode":"ID",

"datasetNames":["World:Capitals"],

"ids":[1, 2, 3]

}

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

{

    "newResourceID": "48ba8fa1144640939a944f75e1682265_99dabf94794248c38776711d859164af",

    "newResourceLocation": "http://localhost:8080/iserver/services/data-world/rest/data/featureResults/48ba8fa1144640939a944f75e1682265_99dabf94794248c38776711d859164af.rjson",

    "postResultType": "CreateChild",

    "succeed": true

}

示例2:查询并返回动态投影后的要素(设置 targetEpsgCode 参数)

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

{

"getFeatureMode":"SQL",

"datasetNames":["World:Capitals"],

"targetEpsgCode":3857,

"maxFeatures":1000,

"queryParameter":{

     "sortClause":null,

     "ids":null, "name":"Capital",

     "attributeFilter":"SMID%26lt;5",

     "groupClause":null,

     "linkItems":null,

     "joinItems":null,

     "fields":null

  },

hasGeometry:true

 }

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

{

    "featureCount": 1,

    "featureUriList": [],

    "features": [{

        "ID": 1,

        "fieldNames": [

            "SMID",

            "SMX",

            "SMY",

            "SMLIBTILEID",

            "SMUSERID",

            "SMGEOMETRYSIZE",

            "USERID",

            "POP",

            "CAPITAL_LO",

            "CAPITAL_CH",

            "COUNTRY_CH",

            "CAPITAL_EN",

            "COUNTRY_EN",

            "COUNTRY",

            "CAP_POP",

            "CAPITAL"

        ],

        "fieldValues": [

            "1",

            "-47.8977476573595",

            "-15.792110943058866",

            "1",

            "0",

            "16",

            "0",

            "2207718.0",

            "Brasília",

            "巴西利亚",

            "巴西",

            "Brasilia",

            "Brazil",

            "巴西",

            "2207718.0",

            "巴西利亚"

        ],

        "geometry": {

            "center": {

                "x": -5331952.879361972,

                "y": -1780660.5109428319

            },

            "id": 1,

            "parts": [1],

            "points": [{

                "x": -5331952.879361972,

                "y": -1780660.5109428319

            }],

            "prjCoordSys": null,

            "style": null,

            "type": "POINT"

        }

    }],

    "totalCount": 1

}

示例3:通过 SQL 查询条件删除Elasticsearch数据要素

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

{

    "getFeatureMode": "SQL",

    "datasetNames": [

        "居民点:supermap"

    ],

    "maxFeatures": 1000,

    "queryParameter": {

        "sortClause": null,

        "ids": null,

        "name": null,

        "attributeFilter": "MAPTN = G4805200250",

        "groupClause": null,

        "linkItems": null,

        "joinItems": null,

        "fields": null

    }

}

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

{

    "features": [],

    "featureUriList": [

        {

            "stringID": "AWTJ_JNbQGqPLMwBycPm",

            "fieldNames": [

                "AREA",

                "CODE",

                "COVERAGE",

                "COVERAGE_ID",

                "GB",

                "MAPTN",

                "PERIMETER",

                "RNAME",

                "SmID",

                "TN",

                "ZValue"

            ],

            "geometry": {

                "center": {

                    "x": 102.09679,

                    "y": 26.921792

                },

                "parts": [

                    1

                ],

                "style": null,

                "prjCoordSys": null,

                "id": 0,

                "type": "POINT",

                "partTopo": null,

                "points": [

                    {

                        "x": 102.09679,

                        "y": 26.921792

                    }

                ]

            },

            "fieldValues": [

                "0.0",

                "211",

                "25",

                "25",

                "31091",

                "G4805200250",

                "0.0",

                "新林村",

                "4139",

                "200250",

                "1200.0"

            ],

            "ID": 0

        },

        {

            "stringID": "AWXNF_e10qCuSb4ZYqo-",

            "fieldNames": [

                "AREA",

                "CODE",

                "COVERAGE",

                "COVERAGE_ID",

                "GB",

                "MAPTN",

                "PERIMETER",

                "RNAME",

                "SmID",

                "TN",

                "ZValue"

            ],

            "geometry": {

                "center": {

                    "x": 102.09679,

                    "y": 26.921792

                },

                "parts": [

                    1

                ],

                "style": null,

                "prjCoordSys": null,

                "id": 0,

                "type": "POINT",

                "partTopo": null,

                "points": [

                    {

                        "x": 102.09679,

                        "y": 26.921792

                    }

                ]

            },

            "fieldValues": [

                "0.0",

                "211",

                "25",

                "25",

                "31091",

                "g4805200250",

                "0.0",

                "新林村",

                "4139",

                "200250",

                "1200.0"

            ],

            "ID": 0

        }

    ],

    "totalCount": 2,

    "featureCount": 2

}

示例4:查询并返回动态投影后的要素(设置 targetPrj 参数)

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

{

"getFeatureMode":"SQL",

"targetPrj": {

            "coordSystem": {

                "datum": {

                    "name": "D_Timbalai_1948",

                    "spheroid": {

                        "axis": 6377298.556,

                        "flatten": 0.003324448999999486,

                        "name": "Everest_Definition_1967",

                        "type": "SPHEROID_EVEREST_DEF_1967"

                    },

                    "type": "DATUM_TIMBALAI_1948"

                },

                "name": "GCS_Timbalai_1948",

                "primeMeridian": {

                    "longitudeValue": 0,

                    "name": "Greenwich",

                    "type": "PRIMEMERIDIAN_GREENWICH"

                },

                "spatialRefType": "SPATIALREF_EARTH_LONGITUDE_LATITUDE",

                "type": "GCS_TIMBALAI_1948",

                "unit": "DEGREE"

            },

            "coordUnit": "METER",

            "distanceUnit": "METER",

            "epsgCode": 29873,

            "name": "Timbalai_1948_RSO_Borneo_Meters",

            "projection": {

                "name": "",

                "type": "PRJ_RECTIFIED_SKEWED_ORTHOMORPHIC"

            },

            "projectionParam": {

                "azimuth": 53.31582047908623,

                "centralMeridian": 115,

                "centralParallel": 4,

                "falseEasting": 2000000,

                "falseNorthing": 5000000,

                "firstPointLongitude": 0,

                "firstStandardParallel": 0,

                "scaleFactor": 0.99984,

                "secondPointLongitude": 0,

                "secondStandardParallel": 0,

                "rectifiedAngle":53.13010235415598

            }},

"datasetNames":["World:Capitals"],

"maxFeatures":1000,

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

}

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

{

    "featureCount": 1,

    "featureUriList": [],

    "features": [{

        "ID": 1,

        "fieldNames": [

            "SMID",

            "SMX",

            "SMY",

            "SMLIBTILEID",

            "SMUSERID",

            "SMGEOMETRYSIZE",

            "USERID",

            "POP",

            "CAPITAL_LO",

            "CAPITAL_CH",

            "COUNTRY_CH",

            "CAPITAL_EN",

            "COUNTRY_EN",

            "COUNTRY",

            "CAP_POP",

            "CAPITAL"

        ],

        "fieldValues": [

            "1",

            "-47.8977476573595",

            "-15.792110943058866",

            "1",

            "0",

            "16",

            "0",

            "2207718.0",

            "Brasília",

            "巴西利亚",

            "巴西",

            "Brasilia",

            "Brazil",

            "巴西",

            "2207718.0",

            "巴西利亚"

        ],

        "geometry": {

            "center": {

                "x": 4379183.5624869745,

                "y": 6771032.568773773

            },

            "id": 1,

            "parts": [1],

            "points": [{

                "x": 4379183.5624869745,

                "y": 6771032.568773773

            }],

            "prjCoordSys": null,

            "style": null,

            "type": "POINT"

        }

    }],

    "totalCount": 1

}

示例5

对示例 featureResults 资源:http://supermapiserver:8090/iserver/services/data-es/rest/data/featureResults.rjson 执行 POST 请求,对es数据进行聚合查询来获取所查询的结果要素,请求体中的参数如下:

{

    "getFeatureMode": "SPATIAL",

    "datasetNames": [

        "index-location:location"

    ],

    "geometry": {

        "id": 0,

        "style": null,

        "parts": [

            1

        ],

        "points": [

            {

                "y": 10,

                "x": 100

            }

        ],

        "type": "POINT"

    },

    "spatialQueryMode": "CONTAIN",

    "aggregations": {

        "aggName": "aggName",

        "aggType": "geohash_grid",

        "aggFieldName": "aggFieldName",

        "precision": 4,

        "subAgg": null

    }

}

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

{

    "postResultType": "CreateChild",

    "newResourceID": "b17260e8c3c9448e90238b97aef86ca6_32c57723bd4c4e1aab165d00d58ebe1a",

    "succeed": true,

    "newResourceLocation": "http://supermapiserver:8090/iserver/services/data-es/rest/data/featureResults/b17260e8c3c9448e90238b97aef86ca6_32c57723bd4c4e1aab165d00d58ebe1a.json"

}

HEAD 请求

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

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

请参见