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仅仅用于空间信息查询。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!