URI

<layer_uri>/{layerID}/query [.<format>]

支持的方法

GETPOSTHEAD

父资源

layer

介绍

指定图层的空间和属性查询。在图层级别支持查询注释,但是在子图层级别不支持查询注释。如果您请求几何图形信息,则每个要素的几何图形信息也会返回到要素集中。

支持的方法:

  • GET:查询指定图层的空间属性信息。
  • POST:按照给定参数获取一个要素查询的结果资源 。
  • HEAD:检查 query  资源是否存在,或权限是否可以访问 query  资源。

资源层次

该资源的资源层次图。

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>格式的表述。

请参见