URI

/featureResults[.<format>]

支持的方法

GETPOSTHEAD

父资源

data

子资源

featureResult

介绍

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

  1. 对 featureResults 执行 POST 请求,在请求体中包含必要的参数,返回一个确定的结果资源(featureResult 资源)的 URI;
  2. 对返回的 URI 进行 GET 操作,得到需要的结果。

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

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

支持的方法:

  • GET:获取子资源(数据查询结果资源)集合。
  • POST:根据给定条件,创建一个数据查询结果资源。
  • HEAD:检查 featureResults 资源是否存在,或权限是否可以访问 featureResults 资源。

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

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

资源层次

根资源 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 请求

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

若查询性能较低,建议:1) 给数据集创建空间索引或字段索引;2)查询时设置参数 returnFeaturesOnly=true。

请求参数

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

URI 中的参数

 

名称 类型 含义
returnContent boolean true 表示直接返回查询结果,即元素类型为 Feature 的数组;false 表示返回创建的 featureResult 资源的 URI。默认不传时为 false。
fromIndex int 查询结果的最小索引号。
默认值是0,如果该值大于查询结果的最大索引号,则查询结果为空。
toIndex int 查询结果的最大索引号。
如果该值大于查询结果的最大索引号,则以查询结果的最大索引号为终止索引号。
returnDatasetInfoOnly boolean 表示是否仅返回要素的数据集信息,默认为false。
returnFeaturesOnly boolean 表示是否仅返回要素信息,默认为false。当 returnContent 为 true 时生效。
returnCountOnly boolean 表示是否仅返回查询结果的要素数量,默认为false。
withIndex boolean 当使用 FlatGeobuf 表述时该参数可选。表示返回的表述为 FlatGeobuf 的结果是否包含空间索引,默认为true。

注:其中参数优先级:returnCountOnly > returnFeaturesOnly > returnDatasetInfoOnly。

 

请求体参数

在请求体中包含查询参数,如下所示。其中,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_ATTRIBUTEFILTER时,此参数必选。
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 查询表达式中需要屏蔽掉的字符串,那么在属性查询过滤器中会默认屏蔽掉分号。
此外,若您查询的数据量较大,且存储在 PostGIS、PostgreSQL、MySQL 等空间数据库中时,如果该数据库支持空间几何函数查询,您还可以将数据库几何函数作为查询条件,利用空间数据库进行计算,从而缓解 iServer 计算压力,提高返回结果的速度。请求体示例参见 示例8: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。
当该值大于fromIndex与toIndex区间内查询结果的个数,则返回索引区间内所有结果
当该值小于等于fromIndex与toIndex区间内查询结果的个数,则返回索引区间内从fromIndex起,指定数量的结果
当该值等于-1, 将返回全部结果(不受默认1000的限制),但优先级低于fromIndex和toIndex
queryParameter QueryParameter 查询参数。
这里已包含设置获取的结果字段名。
当 getFeatureMode(查询模式)为SQL时,此参数必选。 注意:当使用分组条件(groupBy)查询参数时,只支持属性查询,针对非 udb 或 udbx 的数据库型数据源需设置查询字段为分组字段或其他统计字段,具体请参见FAQ,并且不支持在 iServer 前端 REST API页面进行分组条件(groupBy)查询,可以通过调用 REST API接口方式(例如:Fiddler、Postman)进行分组条件(groupBy)查询。
Elasticsearch数据查询支持的数据类型:Geo_Point、Geo_Shape。
对于Elasticsearch数据,当字段值包含大写时,查询条件不加引号。
对于Elasticsearch数据,查询条件暂不支持区分大小写。例如:当查询条件为NAME=G12时 ,NAME=G12或NAME=g12符合条件的结果均会查询。
对于Elasticsearch数据,SQL查询仅支持常见操作符,如“>”、“< ”、“=” 等,其中“=”匹配内容仅支持数字;一些函数运算如:max(),min(),以及like操作符等尚不支持。
targetPrj PrjCoordSys 动态投影的目标坐标系。
当此参数设置的坐标系统不同于数据的原有坐标系统时, 系统会进行动态投影,并返回动态投影后的查询结果。 参数使用时,需按照PrjCoordSys中的字段结构来构建,同时也支持通过只传递 epsgCode 的方式传入坐标参考系。
建议当目标投坐标系无对应的EpsgCode时,使用此参数。
使用时,需在请求url中添加returnContent参数,并设值为true
targetEpsgCode int 动态投影的目标坐标系对应的EPSG Code。 使用时,需在请求url中添加returnContent参数,并设值为true
targetEpsgCode和targetPrj均可设置动态投影的目标坐标系,当两者都设置时,以targetEpsgCode为准。

aggregations

AggregationParameter 聚合查询参数(仅支持Elasticsearch数据源)。
使用聚合查询时,首先需要通过数据查询获得需要进行聚合查询的点数据集。目前支持的数据查询模式有BOUNDS、BOUNDS_ATTRIBUTEFILTER、SPATIAL、SPATIAL_ATTRIBUTEFILTER、ID、SQL等六种,您可根据需求进行选择。 请注意,在聚合查询中使用BOUNDS查询时,需将bounds参数中的坐标设置在x=[-180,180],y=[-90,90]的范围内。
目前聚合查询支持以下两种聚合模式:
  • 格网聚合查询(GeoHashGridAggParameter),是实现基于格网划分对点要素数量count进行统计的聚合查询模式。具体指通过格网对地图要素进行划分,然后计算每个网格内点要素的数量count,最后返回包含count字段的点集合。格网聚合查询字段结构中包含精度precision,参数范围为1-12,默认为5。其中12代表最高精度,此时一个网格仅可覆盖小于1平方米的面积。
  • 指标聚合查询(MetricsAggParameter),是实现对点要素的指定字段进行最大、最小、平均或求和统计的聚合查询模式。具体指根据最大(max)、最小(min)、平均(avg)、求和(sum)几种统计类型,对点要素的指定属性字段进行统计,最后返回包括统计值字段的点。通常情况下使用指标聚合查询时,建议您与网格聚合查询结合,从而实现返回包括 统计值字段的聚合结果点数据集。如果您仅使用使用指标聚合查询,则将返回包含统计值的单个点。
请注意,在使用聚合查询参数时,需在请求url中添加returnContent参数,并设值为true。例如:http://supermapiserver:8090/iserver/services/data-es/rest/data/featureResults.rjson?returnContent=true

hasGeometry

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

响应结构

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

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

如果 URI 参数 returnContent 为 true,则返回查询结果,其结构如下:

字段 类型 含义
featureCount int 返回的要素个数。
features String[] 返回的要素列表。
totalCount int 要素总个数。
featureUriList String[] 返回的要素子资源地址。

datasetInfos

datasetInfos

返回的数据集信息,包括数据集名称、数据集字段信息(字段名、字段别名和字段类型)以及数据集查询出的要素在 features 字段中的索引范围

其中要素集合,即 features 字段中单个元素的描述结构如下:

名称 类型 含义
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

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

{

"getFeatureMode":"ID",

"datasetNames":["World:capital"],

"ids":[1]

}

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

{

"features":[

{

"geometry":{

"coordinates":[-47.8977476573595,-15.792110943058866],

"type":"Point"

},

"id":"1",

"type":"Feature",

"properties":{

"SMLIBTILEID":"1",

"COUNTRY_CH":"巴西",

"CAPITAL_EN":"Brasilia",

"POP":"2207718.0",

"CAPITAL_CH":"巴西利亚",

"SMID":"1",

"CAPITAL_LO":"Brasília",

"COUNTRY_EN":"Brazil",

"USERID":"0",

"SMGEOPOSITION":"266502144",

"SMGEOMETRYSIZE":"20",

"SMY":"-15.792110943058866",

"SMX":"-47.8977476573595",

"SMUSERID":"0"

}

}],

"type":"FeatureCollection"

}

示例3:查询并返回动态投影后的要素(设置 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

}

示例4:通过 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

}

示例5:查询并返回动态投影后的要素(设置 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

}

示例6:基于格网的最大值聚合查询(设置 aggregations 参数)

对示例 featureResults 资源:http://supermapiserver:8090/iserver/services/data-es/rest/data/featureResults.rjson?returnContent=true 执行 POST 请求,对 ES 数据进行基于 BOUNDS 查询的格网-最大值聚合查询,首先通过设置 bounds 参数对 ES 数据进行 BOUNDS 查询获取数据集,然后设置 aggregations 参数实现对获取到的数据集进行格网划分并对 fee 字段进行最大值指标聚合查询,请求体中的参数如下:

{

"getFeatureMode": "BOUNDS",

"datasetNames": [

"test1100:_doc"

],

"bounds": {

"leftBottom": {

"x":-136.38671875,

"y":-54.345703125

},

"rightTop": {

"x":116.38671875,

"y":84.345703125

}

},

"spatialQueryMode": "CONTAIN",

"maxFeatures":10000,

"aggregations": {

"aggName": "test",

"aggType": "geohash_grid",

"aggFieldName": "location",

"precision": 3,

"subAggs": [{

"aggName":"test2",

"aggType":"max",

"aggFieldName":"fee",

"subAgg":null

}]

}

}

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

{

"featureCount": 215,

"featureUriList": [],

"features": [{

"ID": 0,

"fieldNames":[

"test",

"test2"

],

"fieldValues":[

"1996.52",

"1408"

],

"geometry": {

"center": {

"x": 115.3125,

"y": 39.375

},

"id": 0,

"parts": [1],

"partTopo": null,

"points": [{

"x": 115.3125,

"y": 39.375

}],

"prjCoordSys": null,

"style": null,

"type": "POINT"

}

}

......

],

"totalCount": 215

}

示例7

对示例 featureResults 资源:http://supermapiserver:8090/iserver/services/data- testdatahbase /rest/data/featureResults.rjson?returnContent=true 执行 POST 请求,对分布式数据使用 ECQL 语言进行查询,获取要素,请求体中的参数示例如下:

{

"getFeatureMode": "SQL",

"datasetNames": ["testdatahbase:Muifa_4326"],

"maxFeatures": 1000,

"queryParameter": {

"sortClause": null,

"ids": null,

"name": null,

"attributeFilter": "BBOX(the_geom,131.03,23.35,132.87,24.97)",

"groupClause": null,

"linkItems": null,

"joinItems": null,

"fields": null

}

}

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

{

"features": [],

" featureUriList ": [

{

"stringID": "00a3e328-9ac0-4765-9ad7-d3b19f00fcda",

"fieldNames": [

"SmID",

"TIME",

"STRENGTH",

"LAT",

"LON",

"PRES",

"WND",

"NAME",

"RTime"

],

"geometry": {

"center": {

"x": 132.8,

"y": 24.1

},

"parts": [1],

"style": null,

"prjCoordSys": null,

"id": 0,

"type": "POINT",

"partTopo": null,

"points": [{

"x": 132.8,

"y": 24.1

}]

},

"fieldValues": [

"29",

"2011080300",

"5.0",

"24.1",

"132.8",

"940.0",

"50.0",

"梅花",

"2011-08-02T16:00:00.000Z"

],

"ID": 0

}

{

"stringID": "70a3e328-9a8a-43fc-85b8-9301195874d0",

……

}

{

"stringID": "30a3e328-9a8b-436e-bda5-9142b3826a6a",

……

}

],

"totalCount": 3

"featureCount": 3

}

示例8:SQL查询—以空间几何函数为查询条件

对示例 featureResults 资源:http://supermapiserver:8090/iserver/services/data-postgisMap/rest/data/featureResults.rjson?returnContent=true 执行 POST 请求,对 supermapiserver 服务器上的数据进行查询,根据以空间几何函数为条件的 SQL 查询来获取要素。请求体中的参数如下:

{

"getFeatureMode":"SQL",

"datasetNames":["postgisMap:basemap_p"],

"maxFeatures":2,

"queryParameter":{

"sortClause":null,

"ids":null,

"name":null,

"attributeFilter":"ST_Intersects(basemap_p.smgeometry,st_geomfromgeojson('{\"type\":\"Line\",\"coordinates\":[[[117.39993002089760,40.0590434404580],[117.39993002089765,40.0590434404588]]]}'))",

"groupClause":null,

"linkItems":null,

"joinItems":null,

"fields":null

},

hasGeometry:false

}

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

{

"featureCount": 1,

"featureUriList": [],

"features": [{

"ID": 1,

"fieldNames": [

"smuserid",

"userid",

"name",

"code",

"adclass",

"adclass_1"

],

"fieldValues": [

"0",

"21",

"蓟县",

"120225",

"4",

"0.0"

],

}],

"totalCount": 1

}

示例9:对多个数据集进行查询并按组返回数据集信息(设置 returnDatasetInfoOnly 参数)

对示例 featureResults 资源: http://supermapiserver:8090/iserver/services/data-World/rest/data/featureResults.rjson?returnDatasetInfoOnly=true&returnContent=true 执行 POST 请求,对 supermapiserver 服务器上的数据集进行查询,请求体中的参数如下:

{

"getFeatureMode":"ID",

"datasetNames":["China:Airport_pt", "China:China_Island"],

"ids":[1,2,3]

}

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

[{

    "fieldInfos": [

        {

            "name":"SmID",

            "caption":"SmID",

           "type":"INT32"

        },

        {

            "name":"SmUserID",

            "caption":"SmUserID",

            "type":"INT32"

        },

        {

            "name":"GB",

            "caption":"GB",

            "type":"DOUBLE"

        },

        {

           "name":"RN",

           "caption":"RN",

            "type":"WTEXT"

        },

        {

            "name":"NAME",

            "caption":"NAME",

            "type":"WTEXT"

        },

        {

           "name":"PERIOD",

           "caption":"PERIOD",

            "type": "WTEXT"

        },

        {

            "name":"BRGLEV",

            "caption":"BRGLEV",

            "type":"DOUBLE"

        },

        {

            "name":"ANGLE",

            "caption":"ANGLE",

            "type":"DOUBLE"

        }

    ],

    "featureRange": {

        "start": 0,

        "end": 2

    },

   "datasetName":"China:Airport_pt"

},

{

    "fieldInfos": [

        {

            "name":"SmID",

            "caption":"SmID",

           "type":"INT32"

        },

        {

            "name":"SmUserID",

            "caption":"SmUserID",

            "type":"INT32"

        },

        {

            "name":"SmArea",

            "caption":"SmArea",

            "type":"DOUBLE"

        },

        {

           "name":"SmPerimeter",

           "caption":"SmPerimeter",

            "type":"DOUBLE"

        },

        {

            "name":"GB",

            "caption":"GB",

            "type":"DOUBLE"

        },

        {

            "name":"NAME",

            "caption":"NAME",

            "type":"WTEXT"

        },

        {

           "name":"SHAPE_Leng",

           "caption":"SHAPE_Leng",

            "type": "DOUBLE"

        },

        {

            "name":"SHAPE_Area",

            "caption":"SHAPE_Area",

            "type":"DOUBLE"

        },

        {

            "name":"PAC",

            "caption":"PAC",

            "type":"DOUBLE"

        },

        {

            "name":"CODE",

            "caption":"CODE",

            "type":"WTEXT"

        },

        {

            "name":"PINYIN",

            "caption":"PINYIN",

            "type":"WTEXT"

        },

    ],

    "featureRange": {

        "start": 3,

        "end": 5

    },

   "datasetName":"China:China_Island"

}]

示例10:BOUNDS查询以获取视频数据集中指定范围内的视频要素

对示例 featureResults 资源:http://supermapiserver:8090/iserver/services/data-test0104/rest/data/featureResults.rjson?returnContent=true 执行 POST请求,根据地理范围获取视频要素,请求体中的参数如下:

{

"getFeatureMode":"BOUNDS",

"datasetNames":["NewDatasource:ptz旋转画面_2"],

"bounds":{

"leftBottom":{

"x":12929007,

"y":3279156

},

"rightTop":{

"x":12929466,

"y":3279656

}

}

}

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

{

"features": [{

"stringID": null,

"address": "http://192.168.113.1:8090/iserver/services/video-test0104/restjsr/hls/stream/NewDatasource-ptz旋转画面_2/1/index.m3u8",

"videoParameters": {

"auxiliaryCalibrationParameter": {

"tiltGrowsUp": false,

"iterationCount": 1000,

"samplesCount": 200,

"supportHeight": false,

"panGrowsClockwise": false,

"cameraIteratorParameters": [

{

"minValue": "NaN",

"cameraParameterType": "X",

"maxValue": "NaN",

"value": 1.29295170697E7

},

{

"minValue": "NaN",

"cameraParameterType": "Y",

"maxValue": "NaN",

"value": 3279448.7247

},

{

"minValue": 0,

"cameraParameterType": "Z",

"maxValue": 80,

"value": "NaN"

},

{

"minValue": "NaN",

"cameraParameterType": "FOV_X",

"maxValue": "NaN",

"value": "NaN"

},

{

"minValue": "NaN",

"cameraParameterType": "FOV_Y",

"maxValue": "NaN",

"value": "NaN"

}

]

},

"videoParameterList": [

{

"videoWidth": 1540,

"calibrationModel": {

"isRansac": false,

"centerY": 0,

"centerX": 0,

"calibrationModelType": 0,

"calibrationPoints": [

{

"spatialPoint": {

"x": 1.2929429979064863E7,

"y": 3279405.072826336,

"z": 0

},

"videoPoint": {

"x": 546,

"y": 196

}

},

{

"spatialPoint": {

"x": 1.2929372108815093E7,

"y": 3279432.230745163,

"z": 0

},

"videoPoint": {

"x": 855,

"y": 445

}

},

{

"spatialPoint": {

"x": 1.2929376742628248E7,

"y": 3279481.6986007923,

"z": 0

},

"videoPoint": {

"x": 1281,

"y": 414

}

},

{

"spatialPoint": {

"x": 1.2929298549258841E7,

"y": 3279409.595201617,

"z": 0

},

"videoPoint": {

"x": 694,

"y": 590

}

},

{

"spatialPoint": {

"x": 1.2929325804647576E7,

"y": 3279495.6764664766,

"z": 0

},

"videoPoint": {

"x": 1244,

"y": 534

}

},

{

"spatialPoint": {

"x": 1.2929358878926704E7,

"y": 3279505.9148433916,

"z": 0

},

"videoPoint": {

"x": 1409,

"y": 456

}

},

{

"spatialPoint": {

"x": 1.2929424599934718E7,

"y": 3279463.9504835536,

"z": 0

},

"videoPoint": {

"x": 1273,

"y": 217

}

},

{

"spatialPoint": {

"x": 1.2929371030474676E7,

"y": 3279383.6257988643,

"z": 0

},

"videoPoint": {

"x": 432,

"y": 448

}

}

],

"fovX": 0,

"fovY": 0,

"isIntrinsic": false,

"isExtrinsic": false,

"cameraLocation": {

"cameraRoll": -0.7656412825751551,

"cameraYaw": -90.89065135311759,

"cameraY": 3279448.7247,

"cameraZ": 65.78334160898069,

"cameraX": 1.29295170697E7,

"cameraPitch": -39.80838777192129

}

},

"clipRegion": {

"center": {

"x": 770,

"y": 385

},

"parts": [5],

"style": null,

"prjCoordSys": null,

"id": 0,

"type": "REGION",

"partTopo": [1],

"points": [

{

"x": 0,

"y": 0

},

{

"x": 1540,

"y": 0

},

{

"x": 1540,

"y": 770

},

{

"x": 0,

"y": 770

},

{

"x": 0,

"y": 0

}

]

},

"zoom": 1,

"time": 0,

"validBounds": {

"OUT_TOP": 2,

"OUT_RIGHT": 4,

"size": {

"width": 1540,

"height": 770

},

"x": 0,

"width": 1540,

"y": 0,

"OUT_BOTTOM": 8,

"location": {

"x": 0,

"y": 0

},

"OUT_LEFT": 1,

"height": 770

},

"tilt": 23.9,

"pan": 156,

"videoHeight": 770

},

{

"videoWidth": 1540,

"calibrationModel": {

"isRansac": false,

"centerY": 0,

"centerX": 0,

"calibrationModelType": 0,

"calibrationPoints": [

{

"spatialPoint": {

"x": 1.2929429979064863E7,

"y": 3279405.072826336,

"z": 0

},

"videoPoint": {

"x": 120,

"y": 126

}

},

{

"spatialPoint": {

"x": 1.2929371395548986E7,

"y": 3279432.6098156744,

"z": 0

},

"videoPoint": {

"x": 410,

"y": 442

}

},

{

"spatialPoint": {

"x": 1.2929377985228604E7,

"y": 3279478.5103589036,

"z": 0

},

"videoPoint": {

"x": 820,

"y": 444

}

},

{

"spatialPoint": {

"x": 1.2929298549258841E7,

"y": 3279409.595201617,

"z": 0

},

"videoPoint": {

"x": 228,

"y": 564

}

},

{

"spatialPoint": {

"x": 1.292926073318682E7,

"y": 3279503.7847872227,

"z": 0

},

"videoPoint": {

"x": 735,

"y": 641

}

},

{

"spatialPoint": {

"x": 1.2929358878926704E7,

"y": 3279505.9148433916,

"z": 0

},

"videoPoint": {

"x": 947,

"y": 504

}

},

{

"spatialPoint": {

"x": 1.2929424599934718E7,

"y": 3279463.9504835536,

"z": 0

},

"videoPoint": {

"x": 859,

"y": 262

}

},

{

"spatialPoint": {

"x": 1.2929388108285695E7,

"y": 3279545.695535939,

"z": 0

},

"videoPoint": {

"x": 1324,

"y": 465

}

},

{

"spatialPoint": {

"x": 1.2929322376055904E7,

"y": 3279573.704751997,

"z": 0

},

"videoPoint": {

"x": 1183,

"y": 579

}

}

],

"fovX": 0,

"fovY": 0,

"isIntrinsic": false,

"isExtrinsic": false,

"cameraLocation": {

"cameraRoll": -0.7656412825751551,

"cameraYaw": -70.89065135311759,

"cameraY": 3279448.7247,

"cameraZ": 65.78334160898069,

"cameraX": 1.29295170697E7,

"cameraPitch": -39.80838777192129

}

},

"clipRegion": {

"center": {

"x": 770,

"y": 385

},

"parts": [5],

"style": null,

"prjCoordSys": null,

"id": 0,

"type": "REGION",

"partTopo": [1],

"points": [

{

"x": 0,

"y": 0

},

{

"x": 1540,

"y": 0

},

{

"x": 1540,

"y": 770

},

{

"x": 0,

"y": 770

},

{

"x": 0,

"y": 0

}

]

},

"zoom": 1,

"time": 12.733333333333333,

"validBounds": {

"OUT_TOP": 2,

"OUT_RIGHT": 4,

"size": {

"width": 1540,

"height": 770

},

"x": 0,

"width": 1540,

"y": 0,

"OUT_BOTTOM": 8,

"location": {

"x": 0,

"y": 0

},

"OUT_LEFT": 1,

"height": 770

},

"tilt": 23.9,

"pan": 136,

"videoHeight": 770

},

{

"videoWidth": 1540,

"calibrationModel": {

"isRansac": false,

"centerY": 0,

"centerX": 0,

"calibrationModelType": 0,

"calibrationPoints": [

{

"spatialPoint": {

"x": 1.292947775352481E7,

"y": 3279486.5758288642,

"z": 0

},

"videoPoint": {

"x": 1111,

"y": 52

}

},

{

"spatialPoint": {

"x": 1.2929377985228604E7,

"y": 3279478.5103589036,

"z": 0

},

"videoPoint": {

"x": 374,

"y": 420

}

},

{

"spatialPoint": {

"x": 1.292926073318682E7,

"y": 3279503.7847872227,

"z": 0

},

"videoPoint": {

"x": 263,

"y": 611

}

},

{

"spatialPoint": {

"x": 1.2929358878926704E7,

"y": 3279505.9148433916,

"z": 0

},

"videoPoint": {

"x": 491,

"y": 499

}

},

{

"spatialPoint": {

"x": 1.2929424599934718E7,

"y": 3279463.9504835536,

"z": 0

},

"videoPoint": {

"x": 448,

"y": 248

}

},

{

"spatialPoint": {

"x": 1.2929388108285695E7,

"y": 3279545.695535939,

"z": 0

},

"videoPoint": {

"x": 860,

"y": 506

}

},

{

"spatialPoint": {

"x": 1.2929407825861763E7,

"y": 3279565.077638886,

"z": 0

},

"videoPoint": {

"x": 1046,

"y": 497

}

},

{

"spatialPoint": {

"x": 1.2929445928769993E7,

"y": 3279564.7923564096,

"z": 0

},

"videoPoint": {

"x": 1269,

"y": 418

}

}

],

"fovX": 0,

"fovY": 0,

"isIntrinsic": false,

"isExtrinsic": false,

"cameraLocation": {

"cameraRoll": -0.7656412825751551,

"cameraYaw": -50.89065135311759,

"cameraY": 3279448.7247,

"cameraZ": 65.78334160898069,

"cameraX": 1.29295170697E7,

"cameraPitch": -39.80838777192129

}

},

"clipRegion": {

"center": {

"x": 770,

"y": 385

},

"parts": [5],

"style": null,

"prjCoordSys": null,

"id": 0,

"type": "REGION",

"partTopo": [1],

"points": [

{

"x": 0,

"y": 0

},

{

"x": 1540,

"y": 0

},

{

"x": 1540,

"y": 770

},

{

"x": 0,

"y": 770

},

{

"x": 0,

"y": 0

}

]

},

"zoom": 1,

"time": 23.266666666666666,

"validBounds": {

"OUT_TOP": 2,

"OUT_RIGHT": 4,

"size": {

"width": 1540,

"height": 770

},

"x": 0,

"width": 1540,

"y": 0,

"OUT_BOTTOM": 8,

"location": {

"x": 0,

"y": 0

},

"OUT_LEFT": 1,

"height": 770

},

"tilt": 23.9,

"pan": 116,

"videoHeight": 770

}

],

"parameterInterpolation": false

},

"fieldNames": [

"SMID",

"SMUSERID"

],

"name": "ptz旋转画面.mp4",

"startTime": "2023/11/22 09:16:51",

"geometry": {

"center": {

"x": 1.292926198036702E7,

"y": 3279399.5618885513

},

"parts": [5],

"style": null,

"prjCoordSys": null,

"id": 1,

"type": "REGION",

"partTopo": [1],

"points": [

{

"x": 1.2929466274270147E7,

"y": 3279386.794475903

},

{

"x": 1.2929463599646807E7,

"y": 3279488.8953134995

},

{

"x": 1.2929031336155694E7,

"y": 3279642.3491254174

},

{

"x": 1.292908470565614E7,

"y": 3279156.774651685

},

{

"x": 1.2929466274270147E7,

"y": 3279386.794475903

}

]

},

"endTime": "2023/11/22 09:16:58",

"fieldValues": [

"1",

"0"

],

"ID": 1,

"cameraLocation": {

"cameraRoll": -0.7656412825751551,

"cameraYaw": -90.89065135311759,

"cameraY": 3279448.7247,

"cameraZ": 65.78334160898069,

"cameraX": 1.29295170697E7,

"cameraPitch": -39.80838777192129

}

}],

"featureUriList": [],

"datasetInfos": [{

"fieldInfos": [

{

"name":

"SmID",

"caption": "SmID",

"type": "INT32"

},

{

"name": "SmUserID",

"caption": "SmUserID",

"type": "INT32"

}

],

"featureRange": {

"start": 0,

"end": 0

},

"datasetName": "NewDatasource:ptz旋转画面_2"

}],

"totalCount": 1,

"featureCount": 1

}

HEAD 请求

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

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

 

请参见