URI
<featureService_uri>/query[.<format>]
支持的方法
父资源
介绍
查询操作是在要素服务资源上执行的。 此操作的结果是为查询的每个图层的要素集,或者是每个图层的要素计数,或者是查询每个图层的要素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>格式的表述。
请参见