URI

<featureService_uri>/query[.<format>]

支持的方法

GETPOSTHEAD

父资源

featureService

介绍

查询操作是在要素服务资源上执行的。 此操作的结果是为查询的每个图层的要素集,或者是每个图层的要素计数,或者是查询每个图层的要素ID数组。

支持的方法:

  • GET:查询的每个图层的要素集,或者是每个图层的要素计数,或者是查询每个图层的要素ID数组。
  • POST:创建一个要素查询任务。
  • HEAD:检查 query  资源是否存在,或权限是否可以访问 query  资源。

资源层次

HTTP 请求方法

对如下 URI 执行 HTTP 请求,以 json 输出格式为例加以说明,其中,supermapiserver 是服务器名,{component}是服务组件名,{datasourceName}是数据源名。

http://supermapiserver:8090/iserver/services/{component}/arcgisrest/{datasourceName}/FeatureServer/query.json

GET 请求

查询的每个图层的要素集,或者是每个图层的要素计数,或者是查询每个图层的要素ID数组。

请求参数

名称

类型

含义

f

String

响应格式,支持 json、pjson

layerDefs

String

在查询中用于过滤图层要素的表达式(WHERE子句),如:  

//layerId1:layerDef1;layerId2:layerDef2

0:AREA > 1000000;5:POP > 100000

//{ "<layerId1>" : "<layerDef1>" , "<layerId2>" : "<layerDef2>" }

{"0":"AREA > 1000000","5":"POP > 100000"}

//[{ "layerId" : <layerId1>,"where": "<where clause>", "outfields": "<field1>,<field2>"},{"layerId" : <layerId2>,"where": "<where clause>", "outfields": "<field1>,<field2>"}]

[{"layerId" : 1, "where" : "OBJECTID<1949", "outFields" : "*"}, {"layerId" : 9, "where" : "OBJECTID<1946", "outFields" : "OBJECTID,CREATOR"}]

geometry

String

用作空间过滤器的几何对象。几何对象的结构与 ArcGIS REST API 返回的 JSON 几何对象的结构相同。除了 JSON结构,您还可以使用简单的逗号分隔语法来指定几何形状。

如:

//geometryType = <geometryType>&geometry = { geometry }

geometryType = esriGeometryEnvelope&geometry = -166,31.6,-91.32,21

//geometryType = esriGeometryEnvelope&geometry = <xmin>,<ymin>,<xmax>,<ymax>

geometryType = esriGeometryEnvelope&geometry = {xmin:-121,ymin:31.6,xmax:-91.32,ymax:21}

 

geometryType

ArcGISGeometryType

几何的类型,可以是esriGeometryPoint 、esriGeometryMultipoint 、esriGeometryPolyline、 esriGeometryPolygon、esriGeometryEnvelope。默认几何类型是 esriGeometryEnvelope。

inSR

String

输入几何对象的空间参考。

spatialRel

String

执行查询时要应用于输入几何对象的空间关系。支持的空间关系包括 esriSpatialRelIntersects、esriSpatialRelContains、esriSpatialRelCrosses、esriSpatialRelEnvelopeIntersects、esriSpatialRelIndexIntersects、esriSpatialRelOverlaps、esriSpatialRelTouches、esriSpatialRelWithin、esriSpatialRelRelation。默认的空间关系是 esriSpatialRelIntersects。

outSR

String

返回几何对象的空间参考。

returnGeometry

boolean

如果为true,则结果集将包括每个与结果关联的几何对象。默认值为true

returnIdsOnly

boolean

如果为true,则返回结果仅包含对象 ID 的数组。否则,响应结果是要素集。默认值为 false。

returnCountOnly

boolean

如果为true,则响应结果仅包括查询返回的计数(要素/记录数)。否则,响应结果是要素集。默认值为 false。

响应结构

对  query 资源执行 GET 请求得到每个图层的要素集,或者是每个图层的要素计数,或者是每个图层的要素ID数组,集合中的每一个元素的结构如下:

 

字段

类型

说明

hasZ

boolean

是否有 Z 值

features

Feature[]

返回的要素

hasM

boolean

是否有 M 值

objectIdFieldName

String

图层 objectId 字段名

id

int

ID 值

spatialReference

ArcGISSpatialReference

空间参考系

fields

ArcGISFieldInfo[]

字段信息

geometryType

ArcGISGeometryType

几何的类型,可以是esriGeometryPoint 、esriGeometryMultipoint 、esriGeometryPolyline、 esriGeometryPolygon、esriGeometryEnvelope。默认几何类型是 esriGeometryEnvelope。

displayFieldName

String

显示字段名称

fieldAliases

Map<String, String>

字段别名

globalFieldName

String

图层globaId的字段名

响应示例

对 query 资源执行 GET 请求, URI:http://localhost:8090/iserver/services/data-BeijingAddress/arcgisrest/BeijingAddress/FeatureServer/query?layerDefs={"0":"SMID>5 AND SMID<7"}&returnGeometry=true&f=pjson,返回 pjson 格式的资源表述如下:

{"layers": [{

    "hasZ": false,

    "features": [{

        "attributes": {

            "序号": 10006,

            "一级分类": "企业",

            "法人代码": "76552661-0",

            "名称": "北京今非比科技有限公司",

            "SMLIBTILEID": "1",

            "二级分类": "电子与信息",

            "区县": "海淀区",

            "NAME": "北京今非比科技有限公司",

            "SMID": "6",

            "CITY": "北京市",

            "园区名称": "海淀园",

            "ADDRESS": "北京市海淀区卧虎桥甲6号65号楼208室",

            "SMGEOPOSITION": "269840",

            "地址": "北京市海淀区卧虎桥甲6号65号楼208室",

            "ID": 1247,

            "SMGEOMETRYSIZE": "20",

            "SMY": "4864511.487511526",

            "城市": "北京市",

            "SMX": "1.2954690466659337E7",

            "SMUSERID": "0",

            "COUNTY": "海淀区"

        },

        "geometry": {

            "x": 1.2954690466659337E7,

            "y": 4864511.487511526,

            "spatialReference": null

        }

    }],

    "hasM": false,

    "globalFieldName": null,

    "objectIdFieldName": null,

    "id": 0,

    "spatialReference": {"wkt": "PCS_NON_EARTH"},

    "fields": [

        {

            "nullable": true,

            "editable": false,

            "name": "SmID",

            "alias": "SmID",

            "type": "esriFieldTypeOID"

        },

        {

            "nullable": true,

            "editable": false,

            "name": "SmX",

            "alias": "SmX",

            "type": "esriFieldTypeDouble"

        },

        {

            "nullable": true,

            "editable": false,

            "name": "SmY",

            "alias": "SmY",

            "type": "esriFieldTypeDouble"

        },

        {

            "nullable": true,

            "editable": false,

            "name": "SmLibTileID",

            "alias": "SmLibTileID",

            "type": "esriFieldTypeInteger"

        },

        {

            "nullable": true,

            "editable": true,

            "name": "SmUserID",

            "alias": "SmUserID",

            "type": "esriFieldTypeInteger"

        },

        {

            "nullable": true,

            "editable": false,

            "name": "SmGeometrySize",

            "alias": "SmGeometrySize",

            "type": "esriFieldTypeInteger"

        },

        {

            "nullable": true,

            "editable": false,

            "name": "SmGeoPosition",

            "alias": "SmGeoPosition",

            "type": "esriFieldTypeInteger"

        },

        {

            "nullable": true,

            "editable": true,

            "name": "ID",

            "alias": "ID",

            "type": "esriFieldTypeDouble"

        },

        {

            "nullable": true,

            "editable": true,

            "name": "序号",

            "alias": "序号",

            "type": "esriFieldTypeDouble"

        },

        {

            "nullable": true,

            "editable": true,

            "name": "法人代码",

            "alias": "法人代码",

            "type": "esriFieldTypeString"

        },

        {

            "nullable": true,

            "editable": true,

            "name": "园区名称",

            "alias": "园区名称",

            "type": "esriFieldTypeString"

        },

        {

            "nullable": true,

            "editable": true,

            "name": "一级分类",

            "alias": "一级分类",

            "type": "esriFieldTypeString"

        },

        {

            "nullable": true,

            "editable": true,

            "name": "二级分类",

            "alias": "二级分类",

            "type": "esriFieldTypeString"

        },

        {

            "nullable": true,

            "editable": true,

            "name": "区县",

            "alias": "区县",

            "type": "esriFieldTypeString"

        },

        {

            "nullable": true,

            "editable": true,

            "name": "名称",

            "alias": "名称",

            "type": "esriFieldTypeString"

        },

        {

            "nullable": true,

            "editable": true,

            "name": "地址",

            "alias": "地址",

            "type": "esriFieldTypeString"

        },

        {

            "nullable": true,

            "editable": true,

            "name": "城市",

            "alias": "城市",

            "type": "esriFieldTypeString"

        },

        {

            "nullable": true,

            "editable": true,

            "name": "city",

            "alias": "city",

            "type": "esriFieldTypeString"

        },

        {

            "nullable": true,

            "editable": true,

            "name": "county",

            "alias": "county",

            "type": "esriFieldTypeString"

        },

        {

            "nullable": true,

            "editable": true,

            "name": "ADDRESS",

            "alias": "ADDRESS",

            "type": "esriFieldTypeString"

        },

        {

            "nullable": true,

            "editable": true,

            "name": "NAME",

            "alias": "NAME",

            "type": "esriFieldTypeString"

        }

    ],

    "geometryType": "esriGeometryPoint"

}]}

 

POST 请求

跟 GET 请求结构类似。

HEAD 请求

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

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

请参见