ArcGIS api for JS三种查询方法比较

参考文章

ArcGIS API For Javascript之查询功能

一、QueryTask(单个图层)

QueryTask 进行空间和属性查询的功能类,可以在某个地图服务的某个子图层进行查询。

QueryTask执行需要两个先决条件:一个是需要查询的图层URL,一个是进行查询的过滤条件。

QueryTask以Query为执行参数,空间查询和属性查询的设置都是在Query对象上进行,QueryTask的过滤条件除了属性过滤,还支持空间过滤。 在 ArcGIS 10.1 中 Query对象和StatisticDefinition 对象配合,可以实现对查询结果的统计。

QueryTask 进行查询的地图服务并不必须加载到 Map 中进行显示,在 QueryTask 执行成功后,可以从其返回结果中获取查询到的空间数据并绘制到 GraphicsLayer 中。

QueryTask 除了能进行属性查询,同时还可以进行空间查询,在这种情况下,必须传入一个几何对象作为查询的参数,并指定空间查询条件,空间查询所需要的几何对象可以是几何运算之后的结果(缓冲区分析),也可以是通过绘制工具(Draw)绘制的几何对象,还可以是某一查询结果所返回的几何对象等。

// 在属性查询的时候,只需要设置Query对象的Where过滤语句,输出字段参数,是否返回几何对象等。
var whereStr = " name like '%" + queryName + "%'";
query.where = whereStr;
query.outFields = [“*”];
query.returnGeometry = true;

在空间查询的时候,必须设置Query对象的geometry属性和spatialRelationship属性,还有设置空间包含关系。

query.geometry = geometry;
query.outFields = [“*”];
query.outSpatialReference = Map.spatialReference;
query.spatialRelationship = esri.tasks.Query.SPATIAL_REL_CONTAINS;
query.returnGeometry = true;

二、FindTask(多个图层)

FindTask是在某个地图服务中进行属性查询的功能类,FindTask以FindParameters对象为参数,能查询同一个地图服务的一个或多个图层,并且可以在多个字段中进行查询,FindTask仅仅用于属性信息的查询,在FindTask执行结束后,可以从其返回结果中获取查询的对象来自哪个图层和哪个字段.

findParams.returnGeometry = true;
findParams.layerIds = [0,4,5];
findParams.searchFields = [“name”];
findParams.searchText = queryName;

三、IdentifyTask(多个图层)

IdentifyTask是在某个地图服务中进行空间查询,IdentifyTask以IdentifyParameters对象作为参数,能查询同一个地图服务的一个或者多个图层,IdentifyTask仅仅用于空间信息查询。

posted @ 2022-07-25 10:21  槑孒  阅读(635)  评论(0编辑  收藏  举报