arcgis服务query接口简单使用
1.url
对于一个arcgis服务,其query接口请求的url为:
url = arcgis服务地址(…MapServer) + 图层id + “/query”
2.参数
上图为arcgis服务query接口的查询面板,就我使用过的进行介绍:
where:条件查询参数,输入sql语句,对图层数据按条件进行筛选,简单示例:
”1=1“ :返回查询图层里所有数据;
”FID = ’1‘ “:返回FID = 1的所有数据;
”FID LIKE ’%1%‘ “ 返回所有FID的值中带有1的数据;
更多条件查询语句可参考SQL语法。
geometry:坐标空间,传入与服务空间参考相同的坐标数据。这里Geometry要传ring、paths、Point对象。
geometryType:传geometry的esri类型,如: esriGeometryPolygon、esriGeometryPolyline、esriGeometryPoint等。
spatialRel:空间关系,输入空间坐标与查询图层的空间关系,相交、包含、叠置等。我这里只用到了esriSpatialRelIntersects这个参数,表示广义的相交。
outFields:返回的属性字段, 传入“*”可返回所有属性字段。
returnGeometry:是否返回Geometry。true返回;false不返回。
returnIdsOnly:是否仅返回id,一般设为false。
returnCountOnly:是否仅返回count,一般设为false。
f:返回数据的格式,默认的返回类型是html,其值为“pjson”时,返回json格式的数据。
3.post请求方法
/** arcgis post 查询
* @param {*} params 条件,必选
* @param {*} successful 成功回调方法,必选
* @param {*} unsuccessful 失败回调方法,可选
*/
arcgisQuery(params, successful, unsuccessful) {
axios
.post(
params.url + '/query',
{
where: params.where ? params.where : '',
geometry: params.geometry ? params.geometry : '',
geometryType: params.geometryType ? params.geometryType : '',
spatialRel: params.spatialRel ? params.spatialRel : '',
returnGeometry: true,
// returnIdsOnly: false,
// returnCountOnly: false,
// returnDistinctValues: false,
// returnZ: false,
// returnM: false,
f: "pjson",
outFields: params.outFields ? params.outFields : '*'
},
{
headers: {
"Content-Type": "multipart/form-data",
},
}
)
.then((response) => {
if (typeof response !== 'object') {
response = JSON.parse(response);
}
if (response.data !== undefined && response.status == 200) {
successful(response);
} else {
alert('请求失败,请联系管理员!');
return;
}
}).catch((error) => {
unsuccessful(error)
})
}
4.一个tips
如图,运用arcgis自带的查询页面,发送query请求,查看返回结果;可验证各参数的功能和返回结果的正确性,帮助定位自己开发过程的错误。