URI
<layer_uri>/{layerID}/query [.<format>]
支持的方法
父资源
介绍
指定图层的空间和属性查询。在图层级别支持查询注释,但是在子图层级别不支持查询注释。如果您请求几何图形信息,则每个要素的几何图形信息也会返回到要素集中。
支持的方法:
资源层次
该资源的资源层次图。
HTTP 请求方法
对如下 URI 执行 HTTP 请求,其中,supermapiserver 是服务器名,{servicename}是服务名,{component}是服务组件名,{layerID} 是图层 ID。
http://supermapiserver:8090/iserver/services/{component}/arcgisrest/{mapName}/MapServer/{layerID}/query
GET 请求
获取指定图层的空间属性信息。
请求参数
名称 | 类型 | 含义 |
f |
String | 响应格式,支持 json、pjson |
geometry | String |
用作空间过滤器的几何对象。几何的结构与 ArcGIS REST API 返回的 JSON 几何对象的结构相同。除了 JSON 结构外,对于 envelope 和 point,还可以使用逗号分隔语法来指定几何对象。如: geometry={xmin: -112, ymin: 32.6, xmax: -91.11, ymax: 41}
geometry=-112,32.6,-91.11,41
geometry=-112,32.6 |
geometryType |
ArcGISGeometryType |
由 geometry 参数指定的几何类型。几何类型可以是esriGeometryPoint 、esriGeometryMultipoint 、esriGeometryPolyline、 esriGeometryPolygon、esriGeometryEnvelope。默认几何类型是 esriGeometryEnvelope。 |
inSR | 输入几何对象的空间参考。 | |
spatialRel | String |
执行查询时要应用于输入几何对象的空间关系。支持的空间关系包括 esriSpatialRelIntersects、esriSpatialRelContains、esriSpatialRelCrosses、esriSpatialRelEnvelopeIntersects、esriSpatialRelIndexIntersects、esriSpatialRelOverlaps、esriSpatialRelTouches、esriSpatialRelWithin、esriSpatialRelRelation。默认的空间关系是 esriSpatialRelIntersects。 |
where | String |
查询过滤器的 WHERE 子句,例如: 查询国家名称长度大于 18 的记录,子句如下: where = CHAR_LENGTH(cntry_name) > 18 查询字段值为北京的记录,子句如下: where = name = '北京' |
objectIds | int |
要查询的层的对象ID。如: objectIds=37, 462 |
outFields | String |
要包含在返回结果集中的字段列表。此列表中的字段名称用逗号分隔。 如: outFields=AREANAME,ST,POP2000 |
outSR | String | 返回的几何对象的坐标参考系统。 |
returnGeometry | boolean | 如果为true,则结果集将包括每个与结果关联的几何对象。默认值为true |
returnIdsOnly | boolean | 如果为true,则返回结果仅包含对象 ID 的数组。否则,响应结果是要素集。默认值为 false。 |
orderByFields | String | 用于要素/记录排序的一个或多个字段名/表达式。如:
orderByFields=HELLO, NEW, WORLD orderByFields=POPULATION / SHAPE_AREA |
resultOffset | int | 用于跳过指定数量的记录并从下一条记录(即 resultOffset+1)开始获取查询结果,当 supportsPagination 为 true 时,此参数适用,默认值为0。 |
resultRecordCount | int | 用于定义查询结果中期望返回的结果记录数,该值大于0。当supportsPagination 为 true 时,此参数适用,默认值为最大查询结果记录数(maxRecordCount)。 |
响应结构
对 query 资源执行 GET 请求得到的是指定图层的空间、属性信息的集合,集合中的每一个元素的结构如下:
字段 | 类型 | 说明 |
features | Feature[] | 返回的要素 |
displayFieldName | String | 显示的字段名 |
fields | ArcGISFieldInfo[] | 字段信息 |
spatialReference | ArcGISSpatialReference | 空间参考 |
geometryType | ArcGISGeometryType | 几何类型 |
attributes | String[] | 属性信息 |
fieldAliases | Map<String, String> | 字段别名 |
id | int | 图层id |
objectIdFieldName | String | 图层objectId的字段名 |
globalFieldName | String | 图层globaId的字段名 |
hasZ | boolean | 是否包含Z值 |
hasM | boolean | 是否包含M值 |
响应示例
对 ArcGIS query 资源:http://localhost:8090/iserver/services/map-BeijingAddress/arcgisrest/county_R/MapServer/1/query?geometry=13022935.07,4929563.89,13021111.07,41 执行 GET 请求,返回 pjson 格式的资源表述如下:
{
"features": [
{
"attributes": {
"SmGeometrySize": 20,
"序号": 968,
"city": "北京市",
"电话": "010-60995017",
"一级分类": "学校",
"county": "平谷区",
"名称": "北京市平谷区马坊镇第一学区早立庄小学",
"学校类别": "11小学",
"二级分类": "小学",
"区县": "平谷区",
"NAME": "北京市平谷区马坊镇第一学区早立庄小学",
"SmID": 1824,
"ADDRESS": "北京市平谷区马坊镇早立庄村北大街7号",
"SmUserID": 0,
"地址": "北京市平谷区马坊镇早立庄村北大街7号",
"SmY": 4873721.259447504,
"SmGeoPosition": 691988,
"城市": "北京市",
"SmX": 1.3022065857958846E7,
"SmLibTileID": 1
},
"geometry": {
"x": 1.3022065857958846E7,
"y": 4873721.259447504,
"spatialReference": null
}
},
{
"attributes": {
"SmGeometrySize": 20,
"序号": 976,
"city": "北京市",
"电话": "010-61900387",
"一级分类": "学校",
"county": "平谷区",
"名称": "北京市平谷区峪口镇东樊各庄小学",
"学校类别": "11小学",
"二级分类": "小学",
"区县": "平谷区",
"NAME": "北京市平谷区峪口镇东樊各庄小学",
"SmID": 1831,
"ADDRESS": "北京市平谷区峪口镇东樊各庄村校园路29号",
"SmUserID": 0,
"地址": "北京市平谷区峪口镇东樊各庄村校园路29号",
"SmY": 4893749.303469142,
"SmGeoPosition": 692128,
"城市": "北京市",
"SmX": 1.3021904912534915E7,
"SmLibTileID": 1
},
"geometry": {
"x": 1.3021904912534915E7,
"y": 4893749.303469142,
"spatialReference": null
}
},
{
"attributes": {
"SmGeometrySize": 20,
"序号": 1535,
"city": "北京市",
"电话": "010-61919068",
"一级分类": "学校",
"county": "平谷区",
"名称": "北京市平谷区东双营小学",
"学校类别": "11小学",
"二级分类": "小学",
"区县": "平谷区",
"NAME": "北京市平谷区东双营小学",
"SmID": 2170,
"ADDRESS": "北京市平谷区马昌营镇东双营村",
"SmUserID": 0,
"地址": "北京市平谷区马昌营镇东双营村",
"SmY": 4885349.491659648,
"SmGeoPosition": 698908,
"城市": "北京市",
"SmX": 1.3022807235014834E7,
"SmLibTileID": 1
},
"geometry": {
"x": 1.3022807235014834E7,
"y": 4885349.491659648,
"spatialReference": null
}
},
{
"attributes": {
"SmGeometrySize": 20,
"序号": 1117,
"city": "北京市",
"电话": "60995017",
"一级分类": "学校",
"county": "平谷区",
"名称": "北京市平谷区马坊镇早立庄幼儿园",
"学校类别": "61幼儿园",
"二级分类": "幼儿园",
"区县": "平谷区",
"NAME": "北京市平谷区马坊镇早立庄幼儿园",
"SmID": 3193,
"ADDRESS": "北京市平谷区马坊镇早立庄村北街7号",
"SmUserID": 0,
"地址": "北京市平谷区马坊镇早立庄村北街7号",
"SmY": 4874353.105650217,
"SmGeoPosition": 719368,
"城市": "北京市",
"SmX": 1.3021176774706254E7,
"SmLibTileID": 1
},
"geometry": {
"x": 1.3021176774706254E7,
"y": 4874353.105650217,
"spatialReference": null
}
}
],
"displayFieldName": "",
"fields": [
{
"nullable": false,
"editable": false,
"name": "SmID",
"alias": "SmID",
"type": "esriFieldTypeOID"
},
{
"nullable": false,
"editable": false,
"name": "SmX",
"alias": "SmX",
"type": "esriFieldTypeDouble"
},
{
"nullable": false,
"editable": false,
"name": "SmY",
"alias": "SmY",
"type": "esriFieldTypeDouble"
},
{
"nullable": false,
"editable": false,
"name": "SmLibTileID",
"alias": "SmLibTileID",
"type": "esriFieldTypeInteger"
},
{
"nullable": false,
"editable": false,
"name": "SmUserID",
"alias": "SmUserID",
"type": "esriFieldTypeInteger"
},
{
"nullable": false,
"editable": false,
"name": "SmGeometrySize",
"alias": "SmGeometrySize",
"type": "esriFieldTypeInteger"
},
{
"nullable": false,
"editable": false,
"name": "SmGeoPosition",
"alias": "SmGeoPosition",
"type": "esriFieldTypeInteger"
},
{
"nullable": false,
"editable": false,
"name": "序号",
"alias": "序号",
"type": "esriFieldTypeDouble"
},
{
"nullable": false,
"editable": false,
"name": "名称",
"alias": "名称",
"type": "esriFieldTypeString"
},
{
"nullable": false,
"editable": false,
"name": "学校类别",
"alias": "学校类别",
"type": "esriFieldTypeString"
},
{
"nullable": false,
"editable": false,
"name": "电话",
"alias": "电话",
"type": "esriFieldTypeString"
},
{
"nullable": false,
"editable": false,
"name": "地址",
"alias": "地址",
"type": "esriFieldTypeString"
},
{
"nullable": false,
"editable": false,
"name": "区县",
"alias": "区县",
"type": "esriFieldTypeString"
},
{
"nullable": false,
"editable": false,
"name": "一级分类",
"alias": "一级分类",
"type": "esriFieldTypeString"
},
{
"nullable": false,
"editable": false,
"name": "二级分类",
"alias": "二级分类",
"type": "esriFieldTypeString"
},
{
"nullable": false,
"editable": false,
"name": "城市",
"alias": "城市",
"type": "esriFieldTypeString"
},
{
"nullable": false,
"editable": false,
"name": "city",
"alias": "city",
"type": "esriFieldTypeString"
},
{
"nullable": false,
"editable": false,
"name": "county",
"alias": "county",
"type": "esriFieldTypeString"
},
{
"nullable": false,
"editable": false,
"name": "ADDRESS",
"alias": "ADDRESS",
"type": "esriFieldTypeString"
},
{
"nullable": false,
"editable": false,
"name": "NAME",
"alias": "NAME",
"type": "esriFieldTypeString"
}
],
"spatialReference": {},
"fieldAliases": {
"SmGeometrySize": "SmGeometrySize",
"序号": "序号",
"city": "city",
"电话": "电话",
"一级分类": "一级分类",
"county": "county",
"名称": "名称",
"学校类别": "学校类别",
"二级分类": "二级分类",
"区县": "区县",
"NAME": "NAME",
"SmID": "SmID",
"ADDRESS": "ADDRESS",
"SmUserID": "SmUserID",
"地址": "地址",
"SmY": "SmY",
"SmGeoPosition": "SmGeoPosition",
"城市": "城市",
"SmX": "SmX",
"SmLibTileID": "SmLibTileID"
},
"geometryType": "esriGeometryPoint"
}
POST 请求
跟 GET 请求结构类似。
HEAD 请求
返回跟 GET 请求一样的 HTTP 响应头,但是没有响应实体。可以在不必传输整个响应内容的情况下,获取包含在响应消息头中的元数据信息。元数据信息包括媒体类型,字符编码,压缩编码,实体内容长度等。
HEAD 请求可以用来判断 query 资源是否存在,或者客户端是否有权限访问 query 资源。通过对加.<format>的 URI 执行 HEAD 请求,还可以快速判断 query 资源是否支持<format>格式的表述。